#include<Servo.h>
#define ledPin0 2
#define ledPin1 3
#define buttonPin 7
#define servoPin 4
#define doba 5000
bool ledState=0;
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
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) {
stav=!stav;
startTime=millis();
}
}
}
lastButtonState=reading;
if(currentMillis-startTime<=doba){
uhol=map(currentMillis,startTime,startTime+doba,uholOZ[stav],uholOZ[!stav]);
zavora.write(uhol);
}
}