# Importamos las bibliotecas necesarias
from machine import Pin, I2C
import ssd1306
# Definimos las dimensiones del display OLED
oled_width = 128
oled_height = 64
# Definimos los pines del ESP32 para el I2C
i2c = I2C(0, scl=Pin(22), sda=Pin(21))
# Creamos el objeto oled con el I2C
oled = ssd1306.SSD1306_I2C(oled_width, oled_height, i2c)
# Definimos una lista con las opciones del menú
opciones = ["1. Saludar", "2. Sumar", "3. Salir"]
# Definimos una variable para almacenar la opción elegida
opcion = 0
# Definimos una función para mostrar el menú en el display
def mostrar_menu():
# Borramos el contenido del display
oled.fill(0)
# Mostramos el título del menú
oled.text("Menu de ejemplo", 10, 10)
# Mostramos las opciones del menú
for i in range(len(opciones)):
oled.text(opciones[i], 10, 20 + i * 10)
# Actualizamos el display
oled.show()
# Definimos una función para leer la opción elegida por el usuario
def leer_opcion():
# Usamos una variable global para la opción
global opcion
# Leemos el valor del pin 0 (botón conectado al GPIO 0)
boton = Pin(0, Pin.IN, Pin.PULL_UP).value()
# Si el botón está presionado (valor 0)
if boton == 0:
# Incrementamos la opción en 1
opcion += 1
# Si la opción supera el número de opciones, la reiniciamos a 0
if opcion > len(opciones):
opcion = 0
# Esperamos un segundo para evitar rebotes
time.sleep(1)
# Definimos una función para saludar al usuario
def saludar():
# Borramos el contenido del display
oled.fill(0)
# Mostramos un mensaje de saludo
oled.text("Hola, este es Bing.", 10, 10)
oled.text("Espero que te guste", 10, 20)
oled.text("este codigo de ejemplo.", 10, 30)
# Actualizamos el display
oled.show()
# Definimos una función para sumar dos números y mostrar el resultado
def sumar():
# Borramos el contenido del display
oled.fill(0)
# Mostramos un mensaje de suma
oled.text("Vamos a sumar dos numeros", 10, 10)
# Generamos dos números aleatorios entre 1 y 10
a = random.randint(1, 10)
b = random.randint(1, 10)
# Calculamos la suma de los números
c = a + b
# Mostramos los números y el resultado en el display
oled.text(str(a) + " + " + str(b) + " = " + str(c), 10, 30)
# Actualizamos el display
oled.show()
# Definimos una función para salir del programa
def salir():
# Borramos el contenido del display
oled.fill(0)
# Mostramos un mensaje de despedida
oled.text("Adios, fue un placer", 10, 10)
oled.text("charlar contigo.", 10, 20)
# Actualizamos el display
oled.show()
# Creamos un bucle infinito para ejecutar el programa
while True:
# Mostramos el menú en el display
mostrar_menu()
# Leemos la opción elegida por el usuario
leer_opcion()
# Según la opción elegida, ejecutamos una función diferente
if opcion == 1:
saludar()
time.sleep(3) # Esperamos 3 segundos antes de volver al menú
elif opcion == 2:
sumar()
time.sleep(3) # Esperamos 3 segundos antes de volver al menú
elif opcion == 3:
salir()
break # Salimos del bucle infinito y terminamos el programa