const int redPin = 9;
const int yellowPin = 10;
const int greenPin = 11;
const int potPin = A0;
const int buttonPin = 2;
bool originalConditions = true;
bool buttonState = HIGH;
bool lastButtonState = HIGH;
unsigned long lastDebounceTime = 0;
unsigned long debounceDelay = 50;
void setup() {
Serial.begin(9600);
pinMode(redPin, OUTPUT);
pinMode(yellowPin, OUTPUT);
pinMode(greenPin, OUTPUT);
pinMode(buttonPin, INPUT_PULLUP);
}
void loop() {
int potValue = analogRead(potPin);
float voltage = potValue * (5.0 / 1023.0);
Serial.print("Vpot: ");
Serial.print(voltage, 2);
Serial.println(" V");
int reading = digitalRead(buttonPin);
unsigned long currentTime = millis();
if (reading != lastButtonState) {
lastDebounceTime = currentTime;
}
if ((currentTime - lastDebounceTime) > debounceDelay) {
if (reading != buttonState) {
buttonState = reading;
if (buttonState == LOW) {
originalConditions = !originalConditions;
}
}
}
lastButtonState = reading;
if (originalConditions) {
if (voltage < 0.1) {
digitalWrite(redPin, LOW);
digitalWrite(yellowPin, LOW);
digitalWrite(greenPin, LOW);
} else if (voltage >= 1 && voltage < 2) {
digitalWrite(redPin, HIGH);
digitalWrite(yellowPin, LOW);
digitalWrite(greenPin, LOW);
} else if (voltage >= 2 && voltage < 3) {
digitalWrite(redPin, HIGH);
digitalWrite(yellowPin, HIGH);
digitalWrite(greenPin, LOW);
} else if (voltage >= 3) {
digitalWrite(redPin, HIGH);
digitalWrite(yellowPin, HIGH);
digitalWrite(greenPin, HIGH);
}
} else {
if (voltage < 0.1) {
digitalWrite(redPin, LOW);
digitalWrite(yellowPin, LOW);
digitalWrite(greenPin, LOW);
} else if (voltage >= 1 && voltage < 2) {
digitalWrite(redPin, LOW);
digitalWrite(yellowPin, LOW);
digitalWrite(greenPin, HIGH);
} else if (voltage >= 2 && voltage < 3) {
digitalWrite(redPin, LOW);
digitalWrite(yellowPin, HIGH);
digitalWrite(greenPin, HIGH);
} else if (voltage >= 3) {
digitalWrite(redPin, HIGH);
digitalWrite(yellowPin, HIGH);
digitalWrite(greenPin, HIGH);
}
}
delay(1000);
}