#define ledPin1 9
#define ledPin2 8
#define buttonPin 2
#include <Servo.h>
//servo
Servo myServo;
unsigned long movingTime=5000;
unsigned long moveStartTime=0;
int startAngle=0;
int stopAngle=0;
//led
bool ledState = LOW;
unsigned long previousMillis = 0;
int interval=1500;
int intervalpomaly = 1500;
int intervalrychlo = 500;
//button
int buttonState = LOW;
int lastButtonState = LOW;
long lastDebounceTime = 0;
long debounceDelay = 50;
int stavzavory=false;
void zmenstavzavory(){
stavzavory=!stavzavory;
if (stavzavory==false){
interval=intervalpomaly;
startAngle=90;
stopAngle=0;}
else {
interval= intervalrychlo;
startAngle=0;
stopAngle=90;}
}
void setup() {
pinMode(buttonPin, INPUT);
pinMode(ledPin1, OUTPUT);
pinMode(ledPin2, OUTPUT);
myServo.attach(11);
myServo.write(0);
moveStartTime=millis();
Serial.begin(9600);
}
void loop() {
//led//
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= interval) {
previousMillis = currentMillis;
digitalWrite(ledPin1, ledState);
digitalWrite(ledPin2, !ledState);
ledState=!ledState;
}
//button
int reading = digitalRead(buttonPin);
if (reading != lastButtonState) {
lastDebounceTime = millis();
}
if ((millis() - lastDebounceTime) > debounceDelay) {
if (reading != buttonState) {
buttonState = reading;
if (buttonState == HIGH) {
zmenstavzavory();
moveStartTime=millis();
}
}
}
lastButtonState = reading;
//servo
unsigned long progress = millis()-moveStartTime;
if(progress<=movingTime){
long angle = map(progress,0,movingTime,startAngle,stopAngle);
myServo.write(angle);
}
}