#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2); // LCD adresi 0x27, 16 sütun, 2 satır
#define BUTTON_SET 3
#define BUTTON_DOWN 4
#define BUTTON_UP 5
int menuIndex = 0;
void setup() {
Wire.begin();
lcd.init();
lcd.backlight();
pinMode(BUTTON_SET, INPUT_PULLUP);
pinMode(BUTTON_DOWN, INPUT_PULLUP);
pinMode(BUTTON_UP, INPUT_PULLUP);
displayMenu();
}
void loop() {
if (digitalRead(BUTTON_SET) == LOW) {
// Set butonuna basıldığında
delay(100); // debounce
handleSetButton();
}
if (digitalRead(BUTTON_DOWN) == LOW) {
// Aşağı butonuna basıldığında
delay(100); // debounce
handleDownButton();
}
if (digitalRead(BUTTON_UP) == LOW) {
// Yukarı butonuna basıldığında
delay(100); // debounce
handleUpButton();
}
}
void displayMenu() {
lcd.clear();
switch (menuIndex) {
case 0:
lcd.print("SICAKLIK: 37.7");
lcd.setCursor(0, 1);
lcd.print("NEM: 55");
break;
case 1:
lcd.print("Secenek 1");
break;
case 2:
lcd.print("Secenek 2");
break;
case 3:
lcd.print("Secenek 3");
break;
// Buraya istediğiniz kadar seçenek ekleyebilirsiniz
}
}
void handleSetButton() {
// Set butonuna basıldığında yapılacak işlemler
if (menuIndex == 0) {
// Ana menüdeyken Set butonuna basıldığında, seçili olan menüyü seç
executeSelectedMenu();
} else {
// Ana menü dışındaki herhangi bir menüdeyken Set butonuna basıldığında ana menüye dön
menuIndex = 0;
displayMenu();
}
}
void handleDownButton() {
// Aşağı butonuna basıldığında yapılacak işlemler
if (menuIndex > 0) {
menuIndex--;
displayMenu();
}
}
void handleUpButton() {
// Yukarı butonuna basıldığında yapılacak işlemler
if (menuIndex < 3) { // Toplam seçenek sayısına göre ayarlayın
menuIndex++;
displayMenu();
}
}
void executeSelectedMenu() {
// Seçili menüyü çalıştırma işlemleri
switch (menuIndex) {
case 1:
// Seçenek 1 seçildiğinde yapılacak işlemler
break;
case 2:
// Seçenek 2 seçildiğinde yapılacak işlemler
break;
case 3:
// Seçenek 3 seçildiğinde yapılacak işlemler
break;
// Buraya istediğiniz kadar seçenek için işlem ekleyebilirsiniz
}
}