#include <Servo.h>
#define BUT1 2
#define LED1 12
#define LED2 9
bool ledState = false;
unsigned long previousMillis = 0;
const int intervalR = 250;
const int intervalP = 1000;
int interval = intervalP;
int buttonState = 0;
int lastButtonState = 0;
unsigned long lastDebounceTime = 0;
unsigned long debounceDelay = 50;
bool zavoraState = 0;
Servo myservo;
int startA = 90;
int stopA = 0;
unsigned int time = 5000;
unsigned int moveStartTime = 0;
void setup() {
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
pinMode(BUT1, INPUT);
Serial.begin(9600);
myservo.attach(8);
myservo.write(0);
}
void zavora() {
interval = zavoraState?intervalP:intervalR;
startA = zavoraState?90:0;
stopA = zavoraState?0:90;
moveStartTime = millis();
zavoraState = !zavoraState;
}
void loop() {
//ledky//
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= interval) {
previousMillis = currentMillis;
ledState = !ledState;
digitalWrite(LED1, ledState);
digitalWrite(LED2, !ledState);
}
//tlacidlo//
int reading = digitalRead(BUT1);
if (reading != lastButtonState) {
lastDebounceTime = millis();
}
if ((millis() - lastDebounceTime) > debounceDelay) {
if (reading != buttonState) {
buttonState = reading;
if (buttonState == HIGH) {
zavora();
}
}
}
lastButtonState = reading;
//servo//
unsigned long progress = millis() - moveStartTime;
if (progress <= time) {
long angle = map(0,progress,time,startA,stopA);
myservo.write(angle);
}
}