Ana içeriğe git
elektronikprojeler
Konu: Dijital Ses Kontrolü (2032 Kez okunmuş)

Ynt: Dijital Ses Kontrolü

Yanıt #50
I2C protokolün'de kullanılan Serial Clock frekansına göre standartlamış Direnc değerleride şöyledir.
 
 

Pull up dirençlerinin belirlenmesinde esas etken, pulse'ların yükselme süresidir (rise time) Furkan. Burada da belirleyici olan, I2C bus'taki kaçak kapasitedir. Şöyle bir örnek vereyim: Bir I2C master'a bir I2C slave bağlı ise, kaçak kapasiteler düşüktür, yüksek değerli pull up konulabilir. Ama diyelim bir I2C master'a 8 tane I2C slave bağlı ise, kaçak kapasite oldukça yüksektir ve oldukça düşük değerli bir pull up gerekir.

Düşük değerli pull up kullanırsan, I2C nin çalışması garantidir. Güç tüketimini azaltmak için pull up değerini yükseltirsin, ama işte burada I2C bus kaçak kapasitesi belirleyicidir.
Elektrik sayacı döndürücüsü ...

Ynt: Dijital Ses Kontrolü

Yanıt #51
Öncelikle dediğim gibi kodu basitleştirmen lazım. volume değişkeni ile ilgili gereksiz işlem yapıyorsun demiştim. Onu düzeltmişsin. Ama diğer değişkenler için aynı problem devam ediyor. Ayrıca treble ve bass kontrolünde her değer için ayrı if var. Bunları da düzelt.

Bir programda kesinlikle kaçınılması gereken birşey, aynı kodun kopyala yapıştır ile değişik yerlerde tekrar edilmesidir. Değişik yerlerde aynı iş yapılması gerekiyorsa, o işi bir fonksiyon haline getir ve o fonksiyonu çağır.

Birde volume ve lcdvolume diye iki ayrı değişken yapmışsın. Bu da çok yanlış birşey. Ses seviyesi bir tane ise, onun değişkeni de bir tane olmalı. Bu basit programda belki hataya sebep olmaz, ama daha karmaşık programlarda bir bugdan ötürü umulmadık bir şekilde bu iki değişken birbiri ile uyumsuz hale gelebilir. Birisi "volüm maksimumda" derken diğeri "volüm ortada" diyebilir. Daha önceki gibi tek değişken olsun ve bunu TDA'ya yazan fonksiyon ve ekrana yazan fonksiyon olsun (gerekli dönüşümleri yaptıktan sonra tabiki).
Kodu basitleştirmek mümkün tabii ki, ancak 50 satırdan aşağıya düşmesi mümkün değil zira zaten değişkenleri tanımladığım kısım ile setup kısmının toplamı 50 satırdan fazla. Setup kısmındaki herhangi bir şeyi çıkaramayacağıma göre(başlangıçta gelen yazı çıkarılabilir ama estetik benim için önemli) zaten kod doğal olarak 50 satırdan uzun oluyor.

Hocam siz LCD'de volume göstermek için bir fonksiyon yazmıştınız, onu kullandığım zaman ekranda hiçbir şey görünmüyor ancak bu şekilde ekranda volume görünüyor.
Yanlız meselemiz LCD falan değil, butonlara bastığım zaman byte olarak tanımladığım değişkenlerde herhangi bir hareketlilik yok.

LCD fonksiyonları vs. halledilir ama şu anki durumu düzeltmek için yardıma ihtiyacım var, zira önceden de belirttiğim gibi hayatımda ilk defa kod yazdım. Tabii ki ilk defadan kastım kendi oluşturduğum kodlar olarak, yoksa daha önceden Java'da basit bir şeyler yazıyordum, ancak internetten vs. bakarak yaptığım şeylerdi.

Ayrıca şu an kurulu olan sistemi sormuşsunuz, bendeki Arduino CH340 USB-Seri dönüştürücülü klon bir model, butonlar dijital pinlere bağlı, ve LCD olarak 4x20 LCD kullanıyorum, üstünde I2C dönüştürücü var, I2C olarak kullanmamın sebebi zaten hali hazırda 8 adet dijital pini butonların kullanıyor olması.

Ynt: Dijital Ses Kontrolü

Yanıt #52
Programlama işini öğrenmek için başından beri doğru alışkanlıkları ve disiplini kazanmak önemlidir Serhat. Ben seni bu doğrultuda yönlendirirken, sen "Boşver disiplini, doğru alışkanlıkları, bu kod olduğu şekilde çalışsın" diyorsan, o konuda yardımcı olamayacağım malesef. Benim ipuçlarını vermem lazım, senin kendi çabanla sonuca gitmen lazım. Bu iş böyledir.
Elektrik sayacı döndürücüsü ...

Ynt: Dijital Ses Kontrolü

Yanıt #53
Programlama işini öğrenmek için başından beri doğru alışkanlıkları ve disiplini kazanmak önemlidir Serhat. Ben seni bu doğrultuda yönlendirirken, sen "Boşver disiplini, doğru alışkanlıkları, bu kod olduğu şekilde çalışsın" diyorsan, o konuda yardımcı olamayacağım malesef. Benim ipuçlarını vermem lazım, senin kendi çabanla sonuca gitmen lazım. Bu iş böyledir.
Hocam ben LCD düzenini halletmeyeceğim demedim ki. Ben sadece önce bu sorunu halletmeliyim dedim. Ayrıca kodu dikkatlice incelerseniz zaten sadece değişken tanımı ve setup kısmı 50 satırdan daha uzun, benim buradaki herhangi bir fonksiyonu çıkarmam mümkün değil.
Zaten ben niye bu işe bulaştım ki.
Neyse, zaten Arduino'yu çöpe atacağım, bu tip şeyler benim gibi birisi için fazla.

Ynt: Dijital Ses Kontrolü

Yanıt #54
Diyelim bir arabayı tamir ediyorsun. Arabanın genel görünüşü iyi, ama motoru yok, 4 yerine 8 tekerlek takılmış, fren hidroliği boşaltılmış. Burada önce neyi düzeltmek lazım?

Yeni multimedya sistemi, klima, falan mı takmak lazım? Wax cila mı atmak lazım? Bunlar keyifli işler tabi, insan önce bunları yapmak istiyor. Ayrıca bunları yapınca gösterilecek birşey de oluyor ortada.

Yoksa temel yapısal sorunları mı çözmek lazım? Bunlar angarya işler, çünkü kimse senin bunları ne kadar iyi yaptığını görüp takdir etmeyecek. Ama iyi bir ürünü de gerçekten iyi yapan da bunlar.

Eğer bu işi öğrenmek için giriştiysen bu projeye, vaktini ayır, emek ver ve hakkıyla yapmaya çalış. Derinlemesine bilgi böyle öğrenilir.

Ama hemen birşey ortaya çıksın, arkadaşlara hava atayım diyorsan, internette araştır, birisi kesin hazır bir kod yazmıştır. Hemen yükle elindeki karta ve kullan. Ama sonra da birşeyler öğrendim deme.
Elektrik sayacı döndürücüsü ...

Ynt: Dijital Ses Kontrolü

Yanıt #55
Bana yardım eden, etmeyen herkese çok teşekkür ederim.
En basit olayı atlayınca hiçbir şeyin çalışmaması gibi bir durum açığa çıkabiliyor.
Kod: [Seç]
digitalRead
Bu da insanın canını sıkıyor tabii.
Aşağıya dosyaları bırakıyorum. İsteyen kullansın.
Yanlız daha önceden Arduino'nun EEPROM'una hiçbir şey yazılmamış olması lazım.
Önce zip dosyası içindeki EEPROM Setup kodunu Arduino'ya yükleyin.
LCD üzerinde "EEPROM Setup is Completed." diye bir yazı gelecek.
Sonrasında normal kodu Arduino'nun içine atın.
EEPROM ömrünü uzatmak adına sadece değişkenler EEPROM'daki değerden farklı olunca EEPROM'a yazma yapıyor, böylece daha uzun ömürlü çalışabiliyor.
Ha bir de, LCD kütüphanesi de dosyanın içinde.

Ynt: Dijital Ses Kontrolü

Yanıt #56
Ne oldu serhat yine efkarlanmissin kodun mu calismiyor. 😀

Taydin abinin dediklerini dikkate al. Boyle basit seyler de bir sekilde kodu yazdim desende ilerde karisik bir sey yapmak istediginde. Hata cozmekten kodu calistiramazsin. Derlesen bile dunya kadsr bug cikar.


Her neyse ben suan terminaldeyim cihazi yaptiysan ne mutlu sana yapamadiysan yarin izmite gittigimde detaylica bakarim nerde ne yanlisin olduguna. Haydi gorusuruz kendinize iyi bakin.
Mekatronik Teknikeri.
Elektrik-Elektronik Teknisyeni.

Ynt: Dijital Ses Kontrolü

Yanıt #57
Ne oldu serhat yine efkarlanmissin kodun mu calismiyor. 😀

Evet Serhat arada bir bu moda gidiyor anlaşılan :) Bana da kızmış, ama canı sağolsun. Gene elimden geldiği kadar yardım ederim, ama öyle "birisi şu benim çalışmayan kodu alsın baksın, bütün hataların listesini versin bana, ben de liste üzerinden geçip hepsini düzelteyim" yok. Kendisi biraz sürünecek, kendi yapacak ve kendi öğrenecek. Robot gibi, "şu satırdaki şunu değiştir, şu satırları ilave et" yok.

Doğrusunun bu olduğunu o da anlayacak ileriki meslek hayatında. Anlamasa da yapacak birşey yok, neticede burada bizler bunu bir karşılık beklediğimizden yapmıyoruz. Amaç iyi mühendislerin yetişmesi için bizim de bir katkımız olsun, yani vatana hizmet.
Elektrik sayacı döndürücüsü ...

Ynt: Dijital Ses Kontrolü

Yanıt #58
Evet Serhat arada bir bu moda gidiyor anlaşılan :) Bana da kızmış, ama canı sağolsun. Gene elimden geldiği kadar yardım ederim, ama öyle "birisi şu benim çalışmayan kodu alsın baksın, bütün hataların listesini versin bana, ben de liste üzerinden geçip hepsini düzelteyim" yok. Kendisi biraz sürünecek, kendi yapacak ve kendi öğrenecek. Robot gibi, "şu satırdaki şunu değiştir, şu satırları ilave et" yok.

Doğrusunun bu olduğunu o da anlayacak ileriki meslek hayatında. Anlamasa da yapacak birşey yok, neticede burada bizler bunu bir karşılık beklediğimizden yapmıyoruz. Amaç iyi mühendislerin yetişmesi için bizim de bir katkımız olsun, yani vatana hizmet.
Hocam paylaştığım kod çalışıyor, ve şu an 1.1 sürümüne yükseldi :)
Uzaktan kumanda ile kontrol imkanı sağladım.
Mute ve Loudness aktivitelerinin EEPROM'a kaydı gereksiz olduğundan dolayı(bence) onları artık kaydetmiyorum.
Tabii ben uzaktan kumanda özelliği ekledikten sonra kod 8kB değil 15kB oldu :)

Ynt: Dijital Ses Kontrolü

Yanıt #59
Hocam paylaştığım kod çalışıyor, ve şu an 1.1 sürümüne yükseldi :)
Uzaktan kumanda ile kontrol imkanı sağladım.
Mute ve Loudness aktivitelerinin EEPROM'a kaydı gereksiz olduğundan dolayı(bence) onları artık kaydetmiyorum.
Tabii ben uzaktan kumanda özelliği ekledikten sonra kod 8kB değil 15kB oldu :)

Devreyi yaptıysan bir calışma videosu atta keyifle izleyelim
Mekatronik Teknikeri.
Elektrik-Elektronik Teknisyeni.

Ynt: Dijital Ses Kontrolü

Yanıt #60
Devreyi yaptıysan bir calışma videosu atta keyifle izleyelim
Hocam TDA7315'i bekliyorum. Aliexpress üzerinden aldım, geldiği zaman dinleyeceğiz. Ama sistemin çalıştığını gösteren bir video çektim. Onu atabilirim isterseniz.