//NOTE: serialMonitor in diagram.json must have "newline" property set to "none".
// This prevents it from appending an EOL character to input.
#include <Servo.h>
int servoPin = 9;
int servoPosGrn = 60; //Green position - servo UP
int servoPosRed = 120; //Red position - servo DOWN
int buttonPin = 8;
int buttonToggle = 0; //0 = Green; 1 = Red
int buttonPress = 0; //0 = Pressed; 1 = Unpressed
int grnLED;
int grnLEDPin = 6;
int redLED;
int redLEDPin = 7;
int grnSwtch = 0;
int grnSwtchPin = 4;
int redSwtch = 1;
int redSwtchPin = 5;
int waitTime = 500; //loop delay time
Servo myServo;
void setup() {
Serial.begin(115200);
myServo.attach(servoPin);
pinMode(buttonPin, INPUT_PULLUP);
pinMode(grnLEDPin, OUTPUT);
pinMode(redLEDPin, OUTPUT);
pinMode(grnSwtchPin, INPUT_PULLUP);
pinMode(redSwtchPin, INPUT_PULLUP);
grnLED = !digitalRead(grnSwtchPin);
redLED = !digitalRead(redSwtchPin);
digitalWrite(grnLEDPin, grnLED);
digitalWrite(redLEDPin, redLED);
if (grnLED) {
myServo.write(servoPosGrn);
buttonToggle = grnSwtch;
}
else {
myServo.write(servoPosRed);
buttonToggle = redSwtch;
}
}
void loop() {
while (!digitalRead(buttonPin) == false) {
}
if (buttonToggle == redSwtch) { //Button pressed and switch is Red
buttonToggle = grnSwtch;
grnLED = !digitalRead(grnLEDPin);
redLED = !digitalRead(redLEDPin);
digitalWrite(grnLEDPin, grnLED);
digitalWrite(redLEDPin, redLED);
myServo.write(servoPosGrn);
}
else if (buttonToggle == grnSwtch) { //Button pressed and switch is Green
buttonToggle = redSwtch;
grnLED = !digitalRead(grnLEDPin);
redLED = !digitalRead(redLEDPin);
digitalWrite(grnLEDPin, grnLED);
digitalWrite(redLEDPin, redLED);
myServo.write(servoPosRed);
}
delay(waitTime);
}