#include<Servo.h>
#define ledPin0 2
#define ledPin1 3
#define buttonPin 7
#define buttonPin1 8
#define servoPin 4
#define doba 5000
bool ledState=0;
unsigned long currentMillis;
unsigned long previousMillis=0;
int interval[2]={1500,500};
bool stav=0;
bool buttonState=0;
bool lastButtonState = LOW;
unsigned long lastDebounceTime = 0;
#define debounceDelay 50
bool lastButtonState1 = LOW;
unsigned long lastDebounceTime1 = 0;
bool buttonState1 = LOW;
Servo zavora;
unsigned long startTime;
int uhol;
int uholOZ[2]={0,90};
void setup() {
pinMode(ledPin0, OUTPUT);
pinMode(ledPin1, OUTPUT);
pinMode(buttonPin, INPUT);
digitalWrite(ledPin0,ledState);
digitalWrite(ledPin1,!ledState);
zavora.attach(servoPin);
zavora.write(0);
startTime=millis();
}
void loop() {
unsigned long currentMillis=millis();
if(currentMillis-previousMillis>=interval[stav]){
previousMillis=currentMillis;
ledState=!ledState;
digitalWrite(ledPin0,ledState);
digitalWrite(ledPin1,!ledState);
}
bool reading = digitalRead(buttonPin);
if (reading != lastButtonState) {
lastDebounceTime = millis();
}
if ((millis() - lastDebounceTime) > debounceDelay) {
if (reading != buttonState) {
buttonState = reading;
if (buttonState == HIGH) {
if (currentMillis-startTime>=doba){
startTime=millis();
stav=1;
}
}
}
}
lastButtonState=reading;
bool reading1 = digitalRead(buttonPin1);
if (reading1 != lastButtonState1) {
lastDebounceTime1 = millis();
}
if ((millis() - lastDebounceTime1) > debounceDelay) {
if (reading1 != buttonState1) {
buttonState1 = reading1;
if (buttonState1 == HIGH) {
if(currentMillis-startTime>=doba){
startTime=millis();
stav=0;
}
}
}
}
lastButtonState1=reading1;
if(currentMillis-startTime<=doba && uhol!=uholOZ[!stav]){
uhol=map(currentMillis,startTime,startTime+doba,uholOZ[stav],uholOZ[!stav]);
zavora.write(uhol);
}
}