#define PIN_LED_ROOD 13
#define PIN_LED_GEEL 11
#define PIN_LED_GROEN 9
#define PIN_LDR A0
bool redLedState = false;
bool yellowLedState = false;
bool greenLedState = false;
unsigned long previousRedMillis = 0;
unsigned long previousYellowMillis = 0;
unsigned long previousGreenMillis = 0;
int ledAAN = 200;
int ledUIT = 800;
long blinkInterval = 500;
//long startTIMER1 = 0;
//long startTIMER2 = 0;
//unsigned long previousTime = 0;
int ldrWaarde = 0;
void LEDROOD();
void LEDGEEL();
void setup() { // put your setup code here, to run once:
Serial.begin(9600);
pinMode(PIN_LED_ROOD, OUTPUT);
pinMode(PIN_LED_GEEL, OUTPUT);
pinMode(PIN_LED_GROEN, OUTPUT);
pinMode(PIN_LDR, INPUT);
//startTIMER1 = millis();
//startTIMER2 = millis();
}
void loop() {
LEDROOD();
LEDGEEL();
CHECKGREENLED();
// Debug output
Serial.print("LedAAN + ledUIT ");
Serial.print(" 600 ");
Serial.print(" - Yellow Blink Interval: ");
Serial.print(blinkInterval);
Serial.print(" - Green LED State: ");
Serial.println(greenLedState);
}
void LEDROOD() {
unsigned long currentMillis = millis();
if (redLedState == LOW && currentMillis - previousRedMillis >= ledUIT) {
redLedState = HIGH;
previousRedMillis = currentMillis;
digitalWrite(PIN_LED_ROOD, redLedState);
}
else if (redLedState == HIGH && currentMillis - previousRedMillis >= ledAAN) {
redLedState = LOW;
previousRedMillis = currentMillis;
digitalWrite(PIN_LED_ROOD, redLedState);
}
}
void LEDGEEL() {
unsigned long currentMillis = millis();
int ldrWaarde = analogRead(PIN_LDR); // (0-1023)
blinkInterval += (ldrWaarde - blinkInterval);
if (currentMillis - previousYellowMillis >= blinkInterval) {
previousYellowMillis = currentMillis;
yellowLedState = !yellowLedState;
digitalWrite(PIN_LED_GEEL, yellowLedState);
}
}
void CHECKGREENLED() {
unsigned long currentMillis = millis();
if (blinkInterval == ledUIT - ledAAN + 1) {
greenLedState = true;
previousGreenMillis = currentMillis;
digitalWrite(PIN_LED_GROEN, HIGH);
}
if (greenLedState && currentMillis - previousGreenMillis >= 3000) {
greenLedState = false;
digitalWrite(PIN_LED_GROEN, LOW);
}
}