/* CVO De Verdieping: Arduino
Sketch: Verkeerslicht v1
Oefening Verkeerslicht v1
* Sluit een gele led aan met serieweerstand op pin 13 en 9.
* Sluit een groene led aan met serieweestand op pin 12 en 10
* Sluit een rode led aan met serieweestand op pin 11 en 8.
* Sluit een drukknop met pulldownweestand aan op pin 2
Controleer of de LEDs knipperen.
Als de drukknop ingedrukt is, knipperen de LEDs sneller.
Houtmeyers Patrick
2023 - 2024
*/
// CONSTANTEN
const int LED_AUTO_ROOD_PIN = 8;
const int LED_AUTO_GEEL_PIN = 9;
const int LED_AUTO_GROEN_PIN = 10;
const int LED_VOET_ROOD_PIN = 11;
const int LED_VOET_GROEN_PIN = 12;
const int LED_AANVRAAG_PIN = 13;
const int KNOP_PIN = 2;
const int TURBO = 4;
// (GLOBALE) VARIABELEN
int aanvraag = LOW;
// VOORBEREIDING
void setup() {
pinMode(LED_AUTO_ROOD_PIN, OUTPUT);
pinMode(LED_AUTO_GEEL_PIN, OUTPUT);
pinMode(LED_AUTO_GROEN_PIN, OUTPUT);
pinMode(LED_VOET_ROOD_PIN, OUTPUT);
pinMode(LED_VOET_GROEN_PIN, OUTPUT);
pinMode(LED_AANVRAAG_PIN, OUTPUT);
pinMode(KNOP_PIN, INPUT);
autoLicht(LED_AUTO_GROEN_PIN, 0);
voetLicht(LED_VOET_ROOD_PIN, 0);
}
// UITVOERING
void loop() {
// INVOER
aanvraag = digitalRead(KNOP_PIN);
// VERWERKING + UITVOER
if (aanvraag == HIGH) {
autoLicht(LED_AUTO_GEEL_PIN, 3000);
autoLicht(LED_AUTO_ROOD_PIN, 5000);
voetLicht(LED_VOET_GROEN_PIN, 23000);
for (int i = 0; i < 14; i++) {
digitalWrite(LED_VOET_GROEN_PIN, LOW);
delay(250);
digitalWrite(LED_VOET_GROEN_PIN, HIGH);
delay(250);
}
voetLicht(LED_VOET_ROOD_PIN, 5000);
autoLicht(LED_AUTO_GROEN_PIN, 30000);
}
}
// FUNCTIES:
void autoLicht(const int PIN_AAN, const unsigned int TIJD) {
digitalWrite(LED_AUTO_ROOD_PIN, LOW);
digitalWrite(LED_AUTO_GEEL_PIN, LOW);
digitalWrite(LED_AUTO_GROEN_PIN, LOW);
digitalWrite(PIN_AAN, HIGH);
delay(TIJD/TURBO);
}
void voetLicht(const int PIN_AAN, const unsigned int TIJD) {
digitalWrite(LED_VOET_ROOD_PIN, LOW);
digitalWrite(LED_VOET_GROEN_PIN, LOW);
digitalWrite(PIN_AAN, HIGH);
delay(TIJD/TURBO);
}