15-12-2021, 00:14
Witajcie, mam problem z kodem.
Potrzebuje aby po wciśnięciu swicha zapalała się dioda 1 , po kolejnym wciśnięciu gasiła się 1 a zapalała 2 , kolejne gasi się 2 a zapala 3 itd. Oprócz tego w dowolnym momencie przytrzymanie przycisku powoduje reset arduino . Doszedłem do tego momentu gdzie sekcja pierwsza (z diodami) działa poprawnie. Ale dłuższe przytrzymanie nie działa . Znaczy działa ale dopiero kiedy sekwencja diód jest na końcu ( musi przejść cały program). Możecie zerknąć i coś podpowiedzieć ? Korzystam z biblioteki OneButton
Potrzebuje aby po wciśnięciu swicha zapalała się dioda 1 , po kolejnym wciśnięciu gasiła się 1 a zapalała 2 , kolejne gasi się 2 a zapala 3 itd. Oprócz tego w dowolnym momencie przytrzymanie przycisku powoduje reset arduino . Doszedłem do tego momentu gdzie sekcja pierwsza (z diodami) działa poprawnie. Ale dłuższe przytrzymanie nie działa . Znaczy działa ale dopiero kiedy sekwencja diód jest na końcu ( musi przejść cały program). Możecie zerknąć i coś podpowiedzieć ? Korzystam z biblioteki OneButton
Kod:
#include <OneButton.h>
OneButton button(2, true); //attach a button on pin A1 to the library
void setup() {
digitalWrite(12,HIGH);
pinMode(3, OUTPUT); // sets the digital pin as output
pinMode(4, OUTPUT); // sets the digital pin as output
pinMode(5, OUTPUT); // sets the digital pin as output
pinMode(12, OUTPUT);
button.attachDoubleClick(doubleclick); // link the function to be called on a doubleclick event.
button.attachClick(singleclick); // link the function to be called on a singleclick event.
button.attachLongPressStop(longclick); // link the function to be called on a longpress event.
}
void loop() {
button.tick(); // check the status of the button
delay(10); // a short wait between checking the button
} // loop
void doubleclick() { // what happens when button is double-clicked
digitalWrite(3,HIGH);
delay(1000);
digitalWrite(3,LOW);
}
void singleclick(){ // what happens when the button is clicked
digitalWrite(3, LOW); //Czerwona
digitalWrite(4, LOW); //Pomarańczowa
digitalWrite(5, HIGH); //Zielona
delay(2000);
while (digitalRead(2) == HIGH) {} //Czekaj na wciśnięcie przycisku
digitalWrite(3, LOW); //Czerwona
digitalWrite(4, HIGH); //Pomarańczowa
digitalWrite(5, LOW); //Zielona
delay(2000);
while (digitalRead(2) == HIGH) {} //Czekaj na wciśnięcie przycisku
digitalWrite(3, HIGH); //Czerwona
digitalWrite(4, LOW); //Pomarańczowa
digitalWrite(5, LOW); //Zielona
delay(2000);
while (digitalRead(2) == HIGH) {} //Czekaj na wciśnięcie przycisku
digitalWrite(3, HIGH); //Czerwona
digitalWrite(4, HIGH); //Pomarańczowa
digitalWrite(5, LOW); //Zielona
delay(2000);
while (digitalRead(2) == HIGH) {} //Czekaj na wciśnięcie przycisku
}
void longclick(){
digitalWrite(12,LOW);
delay(1000);
digitalWrite(12,HIGH);
}