// https://wokwi.com/projects/420006465266160641
/*
* Author: Gij Kieken
* Date: 12/01/2025
* Purpose: Toggle two pair of Led's
*/
#include "LedController.h"
const int knopPin = 4; // Knop met interne pull-up
const int groeneLedPin = 5; // Eerste groene led pin
const int rodeLedPin = 6; // Eerste rode led pin
const int groeneLedPin_2 = 7; // Tweede groene led pin
const int rodeLedPin_2 = 8; // Tweede rode led pin
// Instantie van de LedController klasse
LedController ledController(groeneLedPin, groeneLedPin_2, rodeLedPin, rodeLedPin_2);
// Variabelen voor debouncing en flankdetectie
bool vorigeKnopIngedrukt = false;
unsigned long vorigeMillis = 0;
const unsigned long debounceDelay = 20; // 20 ms debounce voor druk
const unsigned long releaseDelay = 1; // 1 ms voor loslaten
void setup() {
pinMode(knopPin, INPUT_PULLUP); // Knop pin met interne pull-up weerstand
}
void loop() {
int knopStatus = digitalRead(knopPin); // Lees de huidige status van de knop
unsigned long huidigeMillis = millis();
// Flankdetectie voor knop indrukken
if (knopStatus == LOW && vorigeKnopIngedrukt == false && (huidigeMillis - vorigeMillis) > debounceDelay) {
ledController.toggleStatus(); // Toggle de LEDs bij een knopdruk
vorigeMillis = huidigeMillis; // Sla de tijd van de knopdruk op
vorigeKnopIngedrukt = true; // Zet de knopstatus naar ingedrukt
}
// Flankdetectie voor knop loslaten
if (knopStatus == HIGH && vorigeKnopIngedrukt == true && (huidigeMillis - vorigeMillis) > releaseDelay) {
vorigeMillis = huidigeMillis; // Sla de tijd van het loslaten op
vorigeKnopIngedrukt = false; // Zet de knopstatus naar losgelaten
}
}