#define ledPin1 12
#define ledPin2 11
#define buttonPin1 3
#define buttonPin2 5
#include <Servo.h>
//servo
Servo myServo;
unsigned long movingTime=5000;
unsigned long moveStartTime;
int startAngle=0;
int stopAngle=0;
//led
bool ledState = LOW;
unsigned long previousMillis = 0;
int interval=1500;
int intervalpomaly = 1500;
int intervalrychlo = 500;
//button1
int buttonState1 = LOW;
int lastButtonState1 = LOW;
long lastDebounceTime1 = 0;
long debounceDelay = 50;
int blikanie=false;
//button2
int buttonState2 = LOW;
int lastButtonState2 = LOW;
long lastDebounceTime2 = 0;
int stavzavori=false;
void zmenblikanie(){
blikanie=!blikanie;
if (blikanie==false){
interval=intervalpomaly;}
else {
interval= intervalrychlo;}
}
void zmenstavzavori(){
stavzavori=!stavzavori;
if (stavzavori==false){
startAngle=90;
stopAngle=0;}
else {
startAngle=0;
stopAngle=90;}
}
void setup() {
pinMode(buttonPin1, INPUT);
pinMode(buttonPin2, INPUT);
pinMode(ledPin1, OUTPUT);
pinMode(ledPin2, OUTPUT);
myServo.attach(10);
moveStartTime=millis();
Serial.begin(9600);
}
void loop() {
//button led
int reading1 = digitalRead(buttonPin1);
if (reading1 != lastButtonState1) {
lastDebounceTime1 = millis();
}
if ((millis() - lastDebounceTime1) > debounceDelay) {
if (reading1 != buttonState1) {
buttonState1 = reading1;
if (buttonState1 == HIGH) {
zmenblikanie();
}
}
}
lastButtonState1 = reading1;
//button zavora
int reading2 = digitalRead(buttonPin2);
if (reading2 != lastButtonState2) {
lastDebounceTime2 = millis();
}
if ((millis() - lastDebounceTime2) > debounceDelay) {
if (reading2 != buttonState2) {
buttonState2 = reading2;
if (buttonState2 == HIGH) {
zmenstavzavori();
moveStartTime=millis();
}
}
}
lastButtonState2 = reading2;
//led//
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= interval) {
previousMillis = currentMillis;
digitalWrite(ledPin1, ledState);
digitalWrite(ledPin2, !ledState);
ledState=!ledState;
}
//servo
unsigned long progress = millis()-moveStartTime;
if(progress<=movingTime){
long angle = map(progress,0,movingTime,startAngle,stopAngle);
myServo.write(angle);
}
}