"""
Placa Raspery Pi Pico
Programa de menus com LCD OLED ssd1306 de 128x64 pixeis
linguagem micropython
2 botões de navegação pelos menus e 1 botão de seleção
"""
from machine import Pin, I2C
from ssd1306 import SSD1306_I2C
from ssd1306 import SSD1306_SPI
from menuoled import MENU_OPTIONS, NAVIGATE_MENU
import time
# declaração e código das funções
# estas funções só são executadas após serem chamadas
def show_menu_controlo_LEDs():
print("MENU Controlo de LEDs")
menu_controlo_LEDs.draw() # mostra menu principal: menu_controlo_LEDs
def show_menu_controlo_LED_vermelho():
print("MENU Controlo LED vermelho")
menu_controlo_LED_vermelho.draw() # mostra submenu: menu_controlo_LED_vermelho
def show_menu_controlo_LED_verde():
print("MENU Controlo LED verde")
menu_controlo_LED_verde.draw() # mostrasubmenu: menu_controlo_LED_verde
menu.navigate("up") # sobe cursor 1x
def liga_LED_vermelho():
print("LED vermelho ligado")
red_LED.value(1)
menu_controlo_LED_vermelho.draw()
menu.navigate("up") # sobe cursor 2x
menu.navigate("up")
def desliga_LED_vermelho():
print("LED vermelho desligado")
red_LED.value(0)
menu_controlo_LED_vermelho.draw()
menu.navigate("up") # sobe cursor 2x
menu.navigate("up")
def liga_LED_verde():
print("LED verde ligado")
green_LED.value(1)
menu_controlo_LED_verde.draw()
menu.navigate("up") # sobe cursor 1x
def desliga_LED_verde():
print("LED verde desligado")
green_LED.value(0)
menu_controlo_LED_verde.draw()
menu.navigate("up") # sobe cursor 1x
menu.navigate("up") # sobe cursor 1x
def check_hardware():
time.sleep(3)
red_LED.value(1) #LEDs e ligações
green_LED.value(1)
#oled.fill(1) #pixeis do LCD,ligações e comunicação I2C
oled.invert(1) #display inverted
oled.text(" hardware test", 5, 25)
oled.show()
time.sleep(3)
oled.invert(0) #display not inverted
oled.fill(0) #limpa display
red_LED.value(0) #LED e ligações
green_LED.value(0)
def boas_vindas():
oled.text("Raspery PI Pico", 0, 10)
oled.text("menus no ssd1360", 0, 30)
oled.text("Programa v1.0", 0, 40)
oled.text("dez. 2024", 0, 50)
oled.show()
print("Raspery PI Pico")
print("menus no ssd1360")
print("Programa v1.0")
print("dez. 2024")
time.sleep(5)
scl_pin=9
sda_pin=8
# configuração: i2c banco 1 pi pico + lcd oled
# using default address 0x3C of LCD ssd1360
i2c = I2C(1, scl=Pin(scl_pin), sda=Pin(sda_pin))
oled = SSD1306_I2C(128, 64, i2c)
# Configura pinos dos LEDs
red_LED = Pin(12, Pin.OUT)
green_LED = Pin(11, Pin.OUT)
button_up = Pin(13, Pin.IN, Pin.PULL_DOWN)
button_down = Pin(14, Pin.IN, Pin.PULL_DOWN)
button_select = Pin(15, Pin.IN, Pin.PULL_DOWN)
# cria MENU menu_controlo_LEDs
menu_controlo_LEDs = MENU_OPTIONS(oled)
# adiciona ítens de opção ao MENU menu_controlo_LEDs os : 1. LED vermelho e 2. LED verde
# caso a opção = 1. LED vermelho chama o submenu controlo_LED_vermelho
menu_controlo_LEDs.add_option("1. LED vermelho", show_menu_controlo_LED_vermelho)
menu_controlo_LEDs.add_option("2. LED verde", show_menu_controlo_LED_verde)
menu_controlo_LED_vermelho = MENU_OPTIONS(oled)
menu_controlo_LED_vermelho.add_option("1.1 retroceder", show_menu_controlo_LEDs)
menu_controlo_LED_vermelho.add_option("1.2 red LED on", liga_LED_vermelho)
menu_controlo_LED_vermelho.add_option("1.3 red LED off", desliga_LED_vermelho)
menu_controlo_LED_verde = MENU_OPTIONS(oled)
menu_controlo_LED_verde.add_option("2.1 retroceder", show_menu_controlo_LEDs)
menu_controlo_LED_verde.add_option("2.2 green LED on", liga_LED_verde)
menu_controlo_LED_verde.add_option("2.3 green LED off", desliga_LED_verde)
menu_list = [menu_controlo_LEDs,
menu_controlo_LED_vermelho,
menu_controlo_LED_verde
]
menu = NAVIGATE_MENU(menu_list)
# verificação do hardware e software
check_hardware()
boas_vindas()
menu_controlo_LEDs.draw()
while True:
if button_up.value():
print("\nUp button pressed")
menu.navigate("up")
time.sleep(0.3)
if button_down.value():
print("\nDown button pressed")
menu.navigate("down")
time.sleep(0.3)
if button_select.value():
print("\nSelect button pressed")
menu.select()
time.sleep(0.3)