//Stałe z numerami pinów #define wyjscie NR_PINU; #define przycisk1 NR_PINU; #define przycisk2 NR_PINU; //Stałe w milisekundach #define czas 3000; //Czas do aktywacji #define przerwa 250; //Czas jednego sprawdzenia, żeby program nie mielił w kółko miliony razy na sekundę //Zmienna na zliczanie "czasu" kliknięcia guzików int licznik1 = 0; int licznik2 = 0; //Funkcja ustawiająca, która konfiguruje ustawienia pinów void setup() { pinMode(wyjscie, OUTPUT); pinMode(przycisk1, INPUT); pinMode(przycisk2, INPUT); } //Pętla główna programu void loop() { //Sprawdzanie przyciśniętego przycisku 1 lub 2 i zliczanie czasu //Dodatkowo zeruję drugi licznik żeby nie wystąpił przypadek, że odpalą się oba tryby if(digitalRead(przycisk1) == HIGH) { licznik1 += przerwa; licznik2 = 0; } else if(digitalRead(przycisk2) == HIGH) { licznik2 += przerwa; licznik1 = 0; } //Jeżeli 1 przycisk będzie przytrzymany ustalony czas if(licznik1 >= czas) { //Wykonaj zadaną sekwencję podnieś, opuść, podnieś... digitalWrite(wyjscie, HIGH); delay(45000); digitalWrite(wyjscie, LOW); delay(10000); digitalWrite(wyjscie, HIGH); delay(45000); digitalWrite(wyjscie, LOW); delay(10000); digitalWrite(wyjscie, HIGH); delay(45000); } //To samo z przyciskiem 2 else if(licznik2 >= 3000) { digitalWrite(wyjscie, HIGH); delay(45000); } //Na samym końcu opuść zasilanie na pinie digitalWrite(wyjscie, LOW); delay(przerwa); } //Kod z palca pisany, nie daję żadnej gwarancji //Pozdrawiam gorąco: M. Kucharskov (https://kucharskov.pl)