Code
#define SWITCH_PIN 2
#define SERVO_PIN 3
#define GATE_SPEED 50 // [ms] lower number is higher speed
#define GATE_OPEN 45 // angle
#define GATE_CLOSED 135 // angle
#define POTM_PIN A0
#include
Servo gate_servo; // creates a Servo with the name 'gate_servo'
byte angle = GATE_OPEN;
byte setpoint = GATE_OPEN;
unsigned long time_for_servo;
void setup() {
pinMode(SWITCH_PIN,INPUT_PULLUP);
gate_servo.attach(SERVO_PIN);
Serial.begin(9600);
}
void loop() {
if(digitalRead(SWITCH_PIN) == LOW)
setpoint = map(analogRead(POTM_PIN), 0, 1024, 2 , 179);
// alternative: setpoint = GATE_CLOSED;
else
setpoint = GATE_OPEN;
if (millis() > time_for_servo) {
time_for_servo = millis() + GATE_SPEED;
if (angle < setpoint) angle++; if (angle > setpoint) angle--;
gate_servo.write(angle);
Serial.print(setpoint);
Serial.print(" ");
Serial.println(angle);
}
}

