#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Definieer pinnen voor de knoppen
const int knopA = 10; // Groene knop voor punten toevoegen
const int knopB = 9; // Rode knop voor punten verminderen
const int knopC = 3; // Gele knop voor het resetten van punten
const int knopD = 6; // Groene knop voor punten toevoegen
const int knopE = 4; // Rode knop voor punten verminderen
const int knopF = 2; // Gele knop voor het resetten van punten
int punten1 = 0; // Variabele voor het bijhouden van punten
int punten2 = 0;
unsigned long laatsteUpdateTijd = 0; // Variabele om bij te houden wanneer het LCD voor het laatst is bijgewerkt
LiquidCrystal_I2C lcd(0x27, 16, 2); // Initialiseer LCD-scherm
void setup() {
lcd.begin(16, 2); // Initialiseer het LCD-scherm
pinMode(knopA, INPUT_PULLUP); // Stel de pinnen van de knoppen in als invoer met interne pull-up weerstand
pinMode(knopB, INPUT_PULLUP);
pinMode(knopC, INPUT_PULLUP);
pinMode(knopD, INPUT_PULLUP);
pinMode(knopE, INPUT_PULLUP);
pinMode(knopF, INPUT_PULLUP);
}
void loop() {
// Lees de status van de knoppen en pas de punten dienovereenkomstig aan
if (digitalRead(knopA) == LOW && millis() - laatsteUpdateTijd >= 500) {
punten1 += 1; // Voeg een punt toe bij indrukken van knop A
laatsteUpdateTijd = millis(); // Bijwerken van de tijd van laatste update
}
if (digitalRead(knopB) == LOW && millis() - laatsteUpdateTijd >= 500) {
punten1 -= 1; // Verminder een punt bij indrukken van knop B
laatsteUpdateTijd = millis(); // Bijwerken van de tijd van laatste update
}
if (digitalRead(knopC) == LOW && millis() - laatsteUpdateTijd >= 500) {
punten1 = 0; // Reset punten naar 0 bij indrukken van knop C
lcd.clear();
laatsteUpdateTijd = millis(); // Bijwerken van de tijd van laatste update
}
if (digitalRead(knopD) == LOW && millis() - laatsteUpdateTijd >= 500) {
punten2 += 1; // Voeg een punt toe bij indrukken van knop D
laatsteUpdateTijd = millis(); // Bijwerken van de tijd van laatste update
}
if (digitalRead(knopE) == LOW && millis() - laatsteUpdateTijd >= 500) {
punten2 -= 1; // Verminder een punt bij indrukken van knop E
laatsteUpdateTijd = millis(); // Bijwerken van de tijd van laatste update
}
if (digitalRead(knopF) == LOW && millis() - laatsteUpdateTijd >= 500) {
punten2 = 0; // Reset punten naar 0 bij indrukken van knop F
lcd.clear();
laatsteUpdateTijd = millis(); // Bijwerken van de tijd van laatste update
}
lcd.setCursor(0, 0);
lcd.print("Team 1");
lcd.setCursor(8, 0);
lcd.print("Team 2");
lcd.setCursor(0, 1);
printDigits(punten1);
lcd.setCursor(8, 1);
printDigits(punten2);
}
// Functie om punten weer te geven met een voorloopnul indien nodig
void printDigits(int digits) {
if (digits < 10)
lcd.print("0");
lcd.print(digits);
}