Çözüldü3.46K görüntülenmeArduinoarduino configuration fijaks
0

kolay gelsin

arduino projemde boy ve kiloyu ölçüp yazdırıyorum. Normalde program çalışıyor. ancak bir saat bazen de iki saat bekledikten sonra ölçüm yapıyorum ölçümü yapıyor ancak yazdır butonuna bastığım zaman yazdırmıyor ve ölçüm sonucu ekranda kalıyor. whatchdog yüklemeden önce fişi çekene kadar sonuç ekranda kalıyordu. şimdi whatchdog ile resetliyor. kodu internetten bulup yazmıştım. kodun ilgili kısmı şu şekilde. yardımcı olursanız çok sevinirim.

measureHeight();
measureWeight();
delay(1000);
measureHeight();
measureWeight();
delay(1000);

wdt_reset();

turnOffDisplays();
delay(500);
displayHeight();
displayWeight();
delay(500);
turnOffDisplays();
delay(500);
displayHeight();
displayWeight();
wdt_reset();

previousTimeButton=millis();
do
{
currentTimeButton=millis();
if (currentTimeButton-previousTimeButton>=buttonInterval)
{
//5000ms geçti
yazdirSureBitti=true;
break;
}
} while(digitalRead(yazdirPin)==HIGH);

//Buton basma için zaman geçti

if (yazdirSureBitti==false)
{
print();
}
yazdirSureBitti=false; //
wdt_reset();
}

Soru yeni cevaplara kapalıdır.
Mehmet En iyi cevap olarak seçildi Kasım 8, 2021
0

bence bu uygulamada watchdog dan önce uzun süre bekleme sırasında arduinoyu yormama adına ölçe işlemini bir interrupt ile başlatman daha doğru olur. interrupt:   arduino üzerindeki özel pinlere tanımlanan interrupt fonksiyonu sayesinde bu pinlerbağlı buton tıklandığında normal loop döngüsü rutininden çıkıp sizin belirlediğiniz fonksiyonu başlatır. loop döngüsünün içi boş olsa bile interrup başlatıldığında belirlediğiniz işlemleri yapar.

Örnek kullanımı:

const byte ledPin = 13;
const byte interruptPin = 2;
volatile byte state = LOW;
 void setup() {
  pinMode(ledPin, OUTPUT);
  pinMode(interruptPin, INPUT_PULLUP);
  attachInterrupt(digitalPinToInterrupt(interruptPin), blink, CHANGE);
}
 void loop() {
  digitalWrite(ledPin, state);
}
 void blink() {
  state = !state;
}

faydalı linkler

  • http://www.elektrobot.net/arduino-ile-interrupt-kullanimi-ve-uygulamalari/
  • https://www.arduino.cc/reference/en/language/functions/external-interrupts/attachinterrupt/
  • https://www.allaboutcircuits.com/technical-articles/using-interrupts-on-arduino/
Mehmet Cevaplanan soru Ekim 24, 2021
4 cevaptan 1'ini inceliyorsun, tüm cevapları görmek için buraya tıklayın.