Wpis z mikrobloga

#arduino #elektronika

Fragment kodu wygląda następująco:

if (status == A) {
Timeout = millis() +1000;
if (millis() > Timeout){
status = B
}
}

Po sekundzie dalej jest w stanie A. Czego nie chwytam?

Zasadniczo gdzieś w środku ma być jeszcze wywołana funkcja od wpisania kodu czterocyfrowego.
  • 13
@Fostrzyk: no dobrze jest. Timeout zawsze jest o 1k większy od millis, czyli nigdy nie wejdzie w ifa ustawiającego status na B. Nie wiem co robi millis ale zakładam, że zwraca to samo przy obu wywołaniach.
via Wykop Mobilny (Android)
  • 0
@Fostrzyk: Jeśli chcesz czekać sekundę w przypadku gdy _status będzie równy A to walnij tam jakiegoś sleepa bo aktualnie zapamietujesz czas i od razu sprawdzasz czy minął. Z tego co widzę to możesz użyć delay(ms)_ tutaj info
via Wykop Mobilny (Android)
  • 0
@Fostrzyk: Zatem w funkcji disarm() wczytuj stan przycisków dopóki nie minie zadany czas. Coś w stylu: while(millis() < targetTime) { readButtons(); ... } i zwrócisz odpowiedniego boola.
Wybacz brak formatowania ale niewygodnie pisze się na komórce.