Çö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

Ornek kodu ve nasil kullanim yapildigini anlatan turkce kaynak eklemistim. Ona bakarak (yazdigim kisa ornek koda gore) yapman lazim. Biraz kurcala. Ayrica her pine interrupt eklemezsin ama 2 ye olur. Biraz kurcala yaparsin. Bişey değil

Mehmet En iyi cevap olarak seçildi Kasım 8, 2021
0

pin 7 jeton makinasına bağlı jeton atınca tartıyor. pin 7 ye interrupt ekleyebibilir misiniz

Vanı Geziyorum Cevaplanan soru Ekim 24, 2021
0

benim kod için ekleme yapabilmeniz mümkün mü pin 2 için 🙂

Vanı Geziyorum Cevaplanan soru Ekim 24, 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