#include <LiquidCrystal.h>
// Pinnummers
const int lcdPower = A3;
const int ledPinRed = 8;
const int ledPinYellow = 9;
const int ledPinGreen = 10;
const int buttonPin = 13;
// Definieer de pinnen voor de LCD
#define RS 12
#define E 11
#define D4 5
#define D5 4
#define D6 3
#define D7 2
LiquidCrystal lcd(RS, E, D4, D5, D6, D7);
// Variabelen
int buttonState = LOW; // Start met HIGH (niet ingedrukt)
int previousButtonState = LOW;
int ledBrightness = 0;
int fadeAmount = 3; // Stapgrootte voor helderheid LED
void setup() {
Serial.begin(9600);
lcd.begin(16, 2); // Optional: Call here if needed
pinMode(lcdPower, OUTPUT);
pinMode(ledPinGreen, OUTPUT);
pinMode(ledPinYellow, OUTPUT);
pinMode(ledPinRed, OUTPUT);
pinMode(buttonPin, INPUT); // Interne pull-down weerstand niet inschakelen
}
void loop() {
analogWrite(lcdPower, 0); // LCD Backlight off
analogWrite(ledPinGreen, 0); // Green LED off
analogWrite(ledPinYellow, 0); // Yellow LED off
analogWrite(ledPinRed, 0); // Red LED off
// Lees de status van de drukknop
buttonState = digitalRead(buttonPin);
// Controleer of de knop is ingedrukt
if (buttonState == LOW && previousButtonState == HIGH) {
// Drukknop is ingedrukt, LCD aan & laat de LED knipperen
analogWrite(lcdPower, 255); // LCD Backlight on
lcd.setCursor(0, 0);
lcd.print("LED GAAT AAN! ");
for (int i = 0; i <= 255; i += fadeAmount) {
analogWrite(ledPinGreen, i); // LED helderheid verhogen
delay(30); // Wacht even
}
lcd.setCursor(0, 0);
lcd.print("OOK 2de LED AAN!");
for (int i = 0; i <= 255; i += fadeAmount) {
analogWrite(ledPinRed, i); // LED helderheid verhogen
delay(30); // Wacht even
}
lcd.setCursor(0, 1);
lcd.print("BEIDE DOVEN UIT!");
for (int i = 255; i >= 0; i -= fadeAmount) {
analogWrite(ledPinGreen, i); // LED helderheid verlagen
analogWrite(ledPinRed, i); // LED helderheid verlagen
delay(30); // Wacht even
}
lcd.clear();
}
// Bewaar de huidige knopstatus voor de volgende iteratie
previousButtonState = buttonState;
}