Delay yerine millis(); fonksiyonu kullanıyorum ama buzzerın yagmur>500 kısmında sürekli alarm halinde iken sürekli ötüp susmasını millis ile sağlayamadım. Nasıl yapabiliriz fikri olan yazabilir mi?
Kod:
unsigned long ilk_zaman=0;
unsigned long son_zaman;
#define ledd 2
int led_durum=0;
-----------------------------------
loop başlangıcı{
yagmur = analogRead(A0); // A0 pin değerini "yagmur" değişkenimize aktardık.
if(yagmur < 500){ // "yagmur" değişkenimizin değerini IF kontrol yapısıyla karşılaştırıyoruz.
Serial.println("kAÇAK yok!");
digitalWrite(buzzerPin, LOW);
//delay(1000);
son_zaman=millis();
if (son_zaman-ilk_zaman>=1000){
led_durum=!led_durum;
digitalWrite(ledd,led_durum);
ilk_zaman=son_zaman;
}
// yapılan diğer işlemler
}
if(yagmur > 500){
Serial.println("KAÇAK VAR!");
digitalWrite(buzzerPin, HIGH);
son_zaman=millis();
if (son_zaman-ilk_zaman>=1000){
led_durum=!led_durum;
digitalWrite(ledd,led_durum);
ilk_zaman=son_zaman;
digitalWrite(buzzerPin, LOW);
son_zaman=millis();
if (son_zaman-ilk_zaman>=1000){
led_durum=!led_durum;
digitalWrite(ledd,led_durum);
ilk_zaman=son_zaman;
}
}
//yapılan işlemler
}
}// loop kapanış