from machine import Pin, I2C
import ssd1306
import time
# Principe du menu
"""
Bouton UP → monte dans le menu
Bouton DOWN → descend
Bouton OK → valide
"""
# -------- OLED --------
i2c = I2C(0, scl=Pin(17), sda=Pin(16),freq =400000)
oled = ssd1306.SSD1306_I2C(128, 64, i2c)
# -------- Boutons --------
btn_up = Pin(2, Pin.IN, Pin.PULL_UP)
btn_down = Pin(3, Pin.IN, Pin.PULL_UP)
btn_ok = Pin(4, Pin.IN, Pin.PULL_UP)
# -------- Menu --------
menu = ["Status", "Settings", "Test IO", "About"]
index = 0
# -------- Fonctions --------
def draw_menu():
oled.fill(0)
for i, item in enumerate(menu):
y = i * 10
if i == index:
oled.text(">", 0, y)
oled.text(item, 10, y)
else:
oled.text(item, 10, y)
oled.show()
def wait_release(btn):
while not btn.value():
time.sleep_ms(10)
def action(item):
oled.fill(0)
oled.text("Selected:", 0, 0)
oled.text(item, 0, 12)
oled.show()
time.sleep(1)
# -------- Boucle principale --------
draw_menu()
while True:
if not btn_up.value():
index = (index - 1) % len(menu)
draw_menu()
wait_release(btn_up)
if not btn_down.value():
index = (index + 1) % len(menu)
draw_menu()
wait_release(btn_down)
if not btn_ok.value():
action(menu[index])
draw_menu()
wait_release(btn_ok)
time.sleep_ms(50)