I have 3 push buttons, 3 leds, and 2 relays. When you push button1 once, the led1 turns on and timer is set to 10 sec. When push button1 twice, led2 turns on and timer is set to 20 sec. When push second button once, select first relay. When pushs second button twice, then select second relay. And in the end start button (button3) to start saved relays and led3 for time that we before set.
code:
#define BTN1_PIN 3 #define BTN2_PIN 4 #include <GyverButton.h> GButton butt1(BTN1_PIN); GButton butt2(BTN2_PIN); int relay1=8; int relay2=9; int led=5; int led2=6; int led3=7; int butt3=5; int secmek=0; int gozlemek=0; void setup() { Serial.begin(9600); butt1.setDebounce(150); butt2.setDebounce(150); butt1.setClickTimeout(500); butt2.setClickTimeout(500); pinMode(relay1, OUTPUT); digitalWrite(relay1, LOW); pinMode(relay2,OUTPUT); digitalWrite(relay2, LOW); pinMode(led,OUTPUT); pinMode(led2,OUTPUT); pinMode(led3,OUTPUT); } void loop() { digitalWrite(led,LOW); digitalWrite(led2,LOW); digitalWrite(led3,LOW); digitalWrite(relay1,LOW); digitalWrite(relay2,LOW); butt1.tick(); butt2.tick(); if(butt1.hasClicks()){ byte clicks = butt1.getClicks(); switch(clicks){ case 1: digitalWrite(led, HIGH); gozlemek=10000; break; case 2: digitalWrite(led2,HIGH); digitalWrite(led,LOW); gozlemek=20000; break; } } if(butt2.hasClicks()){ byte clicks = butt2.getClicks(); switch(clicks){ case 1: secmek=1; break; case 2: secmek=2; break; case 3: secmek=3; break; } } if(butt3 = HIGH){ digitalWrite(led3,HIGH); switch(secmek){ case 1: digitalWrite(relay1, HIGH); break; case 2: digitalWrite(relay2,HIGH); digitalWrite(relay1,LOW); break; case 3: digitalWrite(relay1, HIGH); digitalWrite(relay2, HIGH); break; } delay(gozlemek); } }