#include <Wire.h>
#include <U8g2lib.h>
#include "messages.h"
#define OLED_RESET 4
U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, OLED_RESET);
// Pins voor de knoppen
const int buttonUpPin = 2;
const int buttonDownPin = 3;
const int buttonSetPin = 4;
int selectedOption = 0; // Index van de geselecteerde optie in het menu
void setup() {
// Initialiseer de OLED-display
u8g2.begin();
u8g2.setFont(u8g2_font_ncenB08_tr); // Kies het lettertype
// Configureer de knoppen als input met pull-up weerstanden
pinMode(buttonUpPin, INPUT_PULLUP);
pinMode(buttonDownPin, INPUT_PULLUP);
pinMode(buttonSetPin, INPUT_PULLUP);
}
void loop() {
// Lees de status van de knoppen
int buttonUpState = digitalRead(buttonUpPin);
int buttonDownState = digitalRead(buttonDownPin);
int buttonSetState = digitalRead(buttonSetPin);
// Verwerk de knopacties
if (buttonUpState == LOW) {
// Verhoog de geselecteerde optie
selectedOption = (selectedOption + 1) % numOptions;
delay(200); // Debouncing delay
}
if (buttonDownState == LOW) {
// Verlaag de geselecteerde optie
selectedOption = (selectedOption - 1 + numOptions) % numOptions;
delay(200); // Debouncing delay
}
if (buttonSetState == LOW) {
// Toon de geselecteerde optie op het hoofddisplay en de extra displays
displayOptions();
delay(200); // Debouncing delay
}
}
void displayOptions() {
// Wis het display en teken alle opties
u8g2.clearBuffer();
for (int i = 0; i < numOptions; i++) {
if (i == selectedOption) {
// Markeer de geselecteerde optie met een asterisk (*)
u8g2.drawStr(0, 10 * i, "*");
}
u8g2.drawStr(10, 10 * i, mainMenu[i]);
}
u8g2.sendBuffer();
}