#include <Servo.h>
Servo myServo;
volatile bool reset = false;
int res = 2;
void setup() {
myServo.attach(9);
pinMode(2, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(2), resetServo, FALLING);
Serial.begin(9600);
}
void loop() {
if (reset && res % 2 == 0) {
myServo.write(0);
if(digitalRead(2) == HIGH)
res++;
}
else if(reset && res % 2 == 1){
if(digitalRead(2) == LOW){
reset = false;
res--;
}
}
else if(!reset){
int pot = analogRead(A0);
int spomalenie = map(pot, 0, 1023, 10, 50);
for (int i = 0; i <= 180; i++) {
if (reset)
break;
myServo.write(i);
analogWrite(9, map(spomalenie, 10, 50, 0, 255));
delay(spomalenie);
}
for (int i = 180; i >= 0; i--) {
if (reset)
break;
myServo.write(i);
analogWrite(9, map(spomalenie, 10, 50, 0, 255));
delay(spomalenie);
}
}
}
void resetServo() {
reset = true;
}