Soru & Cevap

Arduino alarm yapımında buzzer sorunu ...

21.08.2019 - 11:09

Merhabalar arduinoda alarm yaptım buzzer sorunum var . Buzzer zamanı gelince ses cıkarmaya baslıyor ama alarmı kapatmaya gelince hic bir komut calısmıyor sadece sesi değişiyor daha ince bir ses cıkartıyor 

 

#include <LiquidCrystal.h>                              
#include <virtuabotixRTC.h>                             
#define buzzerPin 10
int CLK_PIN = 6;                                        //6. pini clock pini olarak tanımladık
int DAT_PIN = 7;                                        //7. pini data pini olarak tanımladık
int RST_PIN = 8;                                        //8. pini reset pini olarak tanımladık.
virtuabotixRTC myRTC(CLK_PIN, DAT_PIN, RST_PIN);        // Kütüphanemizi pinlere atıyoruz.4
int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;   //LCD'nin pin değişkenlerini tanımlıyoruz.
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);              //LCD'nin pin bağlantılarını ayarlıyoruz.

void setup() {
  lcd.begin(16, 2);                                     //LCD ekranımızın en-boy oranını ayarlıyoruz.                                
}
void loop() {
  
  myRTC.updateTime();                                   //RTC'den zamanı okuyoruz
  
  lcd.clear();                                          //Başlamadan önce ekranı temizliyoruz.
  lcd.setCursor(0,0);                                   //Ekranın ilk satır ilk sütunundan yazmaya başlıyoruz.
  lcd.print(myRTC.dayofmonth);                          //Günü ekrana bastırıyoruz.
  lcd.print("/");
  lcd.print(myRTC.month);                               //Ayı ekrana bastırıyoruz.
  lcd.print("/");
  lcd.print(myRTC.year);                                //Yılı ekrana bastırıyoruz
  lcd.setCursor(0, 1);                                  //LCD'nin 2. satır 1. sütunundan yazmaya başlıyoruz.
  lcd.print(myRTC.hours);                               //Saati ekrana bastırıyoruz.
  lcd.print(":");
  lcd.print(myRTC.minutes);                             //Dakikayi ekrana bastırıyoruz.   
  lcd.print(":");
  lcd.print(myRTC.seconds);                             //Saniyeyi ekrana bastırıyoruz.
  delay(1000);                                          //1 saniye bekleme.
if(myRTC.minutes == 54)
{
  tone(buzzerPin , 400);
}
else
{
  noTone (buzzerPin);
}

}

295 Görüntülenme

3 Cevap

Sitedeki sorulara cevap verebilmek için giriş yapın ya da üye olun.

picture-87289-1569234090.png
yakupgovler
28.09.2019 - 11:04

tone fonksiyonu sanırım onu durduruna kadar sürekli ses çıkarıyor. Sizin kodunuz da her 54. dakikada her saniyede tone fonksiyonunu çağırıyor. 

https://www.arduino.cc/en/Tutorial/ToneMelody?from=Tutorial.Tone

adresindeki örnekte her tone fonksiyonunu kullandıktan sonra notone ile durdurulmuş.

Siz de alarm diye bir değişken tanımlasanız. Başlangıçta false olsa, eğer dakika==54 ve alarm=false ise tone fonksiyonunu çağırıp, alarm = true yapsanız.

Altında da eğer dakika != 54 ise notone fonksiyonun çağırıp, alarm=false yapsanız, böylece tone fonksiyonunu sadece bir kere çalıştırmış olurdunuz.

Profile picture for user tunaftlmk
tunaftlmk
22.09.2019 - 03:35

öncelikle hocama katılıyorum serial.print komutunu yazarak programın nerde tıkandığını bulmalısın

picture-16838-1420450309.jpg
brhngk
21.09.2019 - 12:39

Öncelikle Buzzer 'ın pinlerinin doğru girdiğini gevşeklik olmadığını , kablo çakışmalarının değmelerinin ve bağlantıları kontrol edin. 

 

Sonra da else içerisine bir serial print kodu yazın. Bakalım yazılım o else içerisine giriyor mu diye.

Eğer girmiyorsa else if yapın ve kodunuzu tekrar bir debug edin.