#include <ESP32Servo.h>
const int servoPin = 18;
int buttonOpenState;
int buttonCloseState;
#define ledRed 4
#define ledGreen 2
#define buttonOpen 12
#define buttonClose 14
int pos = 90;
Servo servo;
char gateState=0;
void setup() {
Serial.begin(9600);
pinMode(buttonOpen, INPUT);
pinMode(buttonClose, INPUT);
pinMode(ledRed,OUTPUT);
pinMode(ledGreen,OUTPUT);
servo.attach(servoPin, 500, 2400);
servo.write(90);
digitalWrite(ledGreen,HIGH);
}
void loop() {
buttonOpenState = digitalRead(buttonOpen);
buttonCloseState = digitalRead(buttonClose) ;
if ( (buttonOpenState==0) && (gateState==0)){
digitalWrite(ledGreen, LOW);
digitalWrite(ledRed, HIGH);
for (pos =90; pos <= 180; pos = pos + 1) {
servo.write(pos);
digitalWrite(ledRed, HIGH);
delay(15);
}
gateState=1;
Serial.println("Gate closed");
}
if( (buttonCloseState==0) && (gateState==1) ){
if(pos>=180){
for (pos =180; pos >= 90; pos =pos- 1) {
servo.write(pos);
delay(15);
}
gateState=0;
digitalWrite(ledRed , LOW);
digitalWrite(ledGreen,HIGH);
Serial.println("Gate open");
}
}
}