#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <Encoder.h>
LiquidCrystal_I2C lcd(0x27, 16, 2); // Adres van het LCD-scherm: 0x27, aantal kolommen: 16, aantal rijen: 2
Encoder myEncoder(11, 12); // Aansluitingen van de rotary encoder: CLK = 11, DT = 12
const int buttonPin = 13; // Pin voor de knop op de rotary encoder
int selectedOption = 1;
// Definieer de namen van elke optie
String optionNames[] = {"vodka-redull ", "cola", "Optie C", "Optie D", "Optie E"};//maak dat hij elke keer 16 char heeft als naam te kort zet spatie achter
void setup() {
lcd.begin(16, 2);
lcd.print("kies drankje:");
lcd.setCursor(0, 1);
pinMode(buttonPin, INPUT_PULLUP); // Interne pull-up voor de knop
}
void loop() {
int encoderValue = myEncoder.read() / 4;
encoderValue = constrain(encoderValue, 1, 5); // Aantal opties
if (encoderValue != selectedOption) {
lcd.setCursor(0, 1);
lcd.print(" "); // Zet spaties om de bestaande tekst te wissen
selectedOption = encoderValue;
lcd.setCursor(0, 1);
lcd.print(optionNames[selectedOption - 1]); // Aangezien arrays bij 0 beginnen
}
if (digitalRead(buttonPin) == LOW) { // Lees de knopstatus met pull-up
executeAction(selectedOption);
delay(500); // Voorkom meerdere kliks
}
}
void executeAction(int option) {
lcd.clear();
lcd.print(optionNames[option - 1]);
lcd.setCursor(0,1);
lcd.print("word uitgevoerd");
// Voer hier de actie uit op basis van de geselecteerde optie
switch (option) {
case 1:
digitalWrite(2, HIGH);
delay(2000);
digitalWrite(2, LOW);
lcd.clear();
lcd.print("drankje is klaar");
break;
case 2:
// Voer hier de code uit voor optie 2
// Bijvoorbeeld: digitalWrite(LED_PIN, LOW);
break;
// Voeg hier extra cases toe voor elke optie
}
delay(2000);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("kies drankje:");
lcd.setCursor(0, 1);
lcd.print(optionNames[selectedOption - 1]);
}