struct MenuItem {
    const char* title;
    const char* items[10];
    int itemCount;
};

// Menü öğeleri tanımları
MenuItem mainMenu = {
    "Ana Menü",
    {"Ürünler", "Operatör", "Sistem"},
    3
};

MenuItem urunlerMenu = {
    "Ürünler",
    {"Ürün 1", "Ürün 2", "Ürün 3", "Ürün 4"},
    4
};

MenuItem operatorMenu = {
    "Operatör",
    {"Operatör 1", "Operatör 2", "Operatör 3"},
    3
};

MenuItem systemMenu = {
    "Sistem",
    {"Ayarlar", "Tarih", "Saat", "Wifi"},
    4
};

// Menüleri tanımlama
MenuItem* currentMenu = &mainMenu;
int selectedItem = 0;

void displayMenu() {
    Serial.println(currentMenu->title);
    for (int i = 0; i < currentMenu->itemCount; i++) {
        if (i == selectedItem) {
            Serial.print("> ");
        } else {
            Serial.print("  ");
        }
        Serial.println(currentMenu->items[i]);
    }
}

void moveUp() {
    if (selectedItem > 0) {
        selectedItem--;
    } else {
        selectedItem = currentMenu->itemCount - 1; // Döngüsel hareket
    }
    displayMenu();
}

void moveDown() {
    if (selectedItem < currentMenu->itemCount - 1) {
        selectedItem++;
    } else {
        selectedItem = 0; // Döngüsel hareket
    }
    displayMenu();
}

void selectItem() {
    if (currentMenu == &mainMenu) {
        if (selectedItem == 0) {
            currentMenu = &urunlerMenu;
        } else if (selectedItem == 1) {
            currentMenu = &operatorMenu;
        } else if (selectedItem == 2) {
            currentMenu = &systemMenu;
        }
        selectedItem = 0;
        displayMenu();
    } else if (currentMenu == &urunlerMenu || currentMenu == &operatorMenu || currentMenu == &systemMenu) {
        // Alt menüde seçim yapıldı
        Serial.print("Seçilen öğe: ");
        Serial.println(currentMenu->items[selectedItem]);
    }
}

void backToMainMenu() {
    currentMenu = &mainMenu;
    selectedItem = 0;
    displayMenu();
}

void setup() {
    Serial.begin(9600);
    displayMenu();
}

void loop() {
    if (Serial.available()) {
        char input = Serial.read();
        if (input == 'w') {
            moveUp();
        } else if (input == 's') {
            moveDown();
        } else if (input == 'e') {
            selectItem();
        } else if (input == 'b') {
            backToMainMenu();
        }
    }

    // Buraya buton girişleri kodu eklenebilir (örneğin, digitalRead() ile)
}