pcbway

Pic16f877 ile frekans üretip Ses sinyali çıkarma Piyano(Buton hatası)

Başlatan Elektrik2012, 04 Mayıs 2013, 22:08:05

Elektrik2012

Öncelikle abilerim Sizlere sevgi ve saygımı Hürmetle sunuyorum pic16f877 ile pwm komutlarını kullanrak Do re mi fa sol la si do sesleri üretiyorum Fakat pwm için 2 pinimiz var birisi ccp1 birisi ccp2 Ben programı yazıyorum ccp1 ve ccp2 pinin kullanıp do ve re seslerini çıkardım fakat 8 nota var pic16f877 pwm için iki ucu var ben sadecebir ccp1 ucundan butonlara basıldıgında  8 nota çıkarmak istiyorum Mesela Ra0 butonu basıldıgında Ccp1 pininden Do sesini çıakrıcak Ra1 butonuna bastıdıgnda re ben burda takıldım Yardımcı olurmusunuz?Programı ve ısıs dosyasını ektedir Saygılar
Büyük adım atmaktan korkmayın uçurumu küçük  sıçramalarla geçemezsiniz

ibrahim626

proton basic\'te harici ses komutu vardı onunla daha kolay yapabilirsiniz ,Program dilinin C olması zorunlumu ?

Elektrik2012

evet Abi  C dili  ile yazmayı düşünüyorum öğrenme amaçlı Yazıyorum programı Programlamaya  başlayalı 4 yada 5 ay oldu proton basic bilmiyorum İlgilendigin için Teşekürler Abi
Büyük adım atmaktan korkmayın uçurumu küçük  sıçramalarla geçemezsiniz

pwm.c

şu sitede hazır yapılmış piyano devresi var:
http://www.pic24.ru/doku.php/en/osa/articles/pk2_osa_piano
ancak, yazılımı HI-TECH C ile yazılmış. ayrıca devrenin çalışması hakkında çok detaylı bilgilerde mevcut. projeyi dikkatli incelersen sana fikir verir.
_/\/\/\_ -[ı- -ı>|- -|ı|ı|ı- -ı< -||- -l[]l-

Elektrik2012

Teşekkür ederim abi İnceledim Ama biraz değişik görünüyor Ben bu programı C ile yazacağım :)Sadece şu buton işi çözülse Gerisini ben hallederim abi mesela Ra0 butonuna basıldıgında şu pwm ayarını frekansını üretsin istiyorum
     
   setup_timer_2(T2_DIV_BY_16,238,1); // Do sesinin frekansı üretiliyor
   set_pwm1_duty(50);               // PWM sinyalinin görev saykıl oranı belirleniyor
   setup_CCP2(CCP_PWM);             // CCP modülü PWM çıkışı için ayarlanıyor   

Daha sonra Ra1 butonuna basıldıgında
 
   setup_timer_2(T2_DIV_BY_16,212,1); // Re sesinin frekansı üretiliyor
   set_pwm1_duty(50);               // PWM sinyalinin görev saykıl oranı belirleniyor
   setup_CCP2(CCP_PWM);             // CCP modülü PWM çıkışı için ayarlanıyor   

Sadece bir Do senin butona basıldıgında çalması için örnek birprogram yazabilrseniz abilerimdiğerlerini ben ona bakarak yapabilirim  Saygılar  İlgilendigiziçin teşekürler
Büyük adım atmaktan korkmayın uçurumu küçük  sıçramalarla geçemezsiniz

pwm.c

while(TRUE) //ana döngü
   {
while(!input(PIN_A0))
{
setup_timer_2(T2_DIV_BY_16,238,1);
set_pwm1_duty(50);
setup_CCP2(CCP_PWM);
}

while(!input(PIN_A1))
{
setup_timer_2(T2_DIV_BY_16,212,1);
set_pwm1_duty(50);
setup_CCP2(CCP_PWM);
}

set_pwm1_duty(0);
}
butonlar pull-up yapılacak.
_/\/\/\_ -[ı- -ı>|- -|ı|ı|ı- -ı< -||- -l[]l-

Elektrik2012

çok teşekkür ederim abi
Büyük adım atmaktan korkmayın uçurumu küçük  sıçramalarla geçemezsiniz