from machine import Pin, I2C
import ssd1306
from time import sleep_ms
# Configurando pantalla ssd1306
i2c = I2C(0, scl=Pin(22), sda=Pin(21))
oled_width = 128
oled_height = 64
oled = ssd1306.SSD1306_I2C(oled_width, oled_height, i2c)
# Configurando botones
b1 = Pin(19, Pin.IN, Pin.PULL_UP)
b2 = Pin(18, Pin.IN, Pin.PULL_UP)
b1_ant=1
b1_act=b1.value()
b2_ant=1
b2_act=b2.value()
# Definiendo clase Aplicacion
class Aplicacion():
def __init__(self, nombre, contenido, x, y):
self.nombre = nombre
self.contenido = contenido
self.x = x
self.y = y
def mostrar(self): # Muestra el texto del argumento 'nombre' en (x,y)
oled.text(self.nombre, self.x, self.y, 1)
oled.show()
def seleccionar(self): # Encierra el texto en un rectángulo
oled.rect(0, self.y - 2, 128, 12)
oled.show()
def deseleccionar(self): # Borra el rectángulo
oled.rect(0, self.y - 2, 128, 12, 0)
oled.show()
def entrar(self): # Muestra el texto del argumento 'contenido'
oled.fill(0)
oled.text(self.contenido, 0, 25)
oled.show()
# Creando listas de aplicaciones
nombres = ["Puntos", "Calculadora", "Juego", "Agenda", "Calendario", "Web"]
contenidos = ["Bienvenido 1", "Bienvenido 2", "Bienvenido 3", "Bienvenido 4", "Bienvenido 5",
"Bienvenido 6"]
secuencia = [2, 13, 24, 35, 46, 57]
# Creando lista de objetos de tipo Aplicacion
aplicaciones = []
for i in range(len(nombres)):
aplicaciones.append(Aplicacion(nombres[i], contenidos[i], 2, secuencia[i]))
# Mostrando todas las aplicaciones y seleccionando la primera
for i in range(len(nombres)):
aplicaciones[i].mostrar()
aplicaciones[0].seleccionar()
# --------------------------------------------------
# Acompleta tu programa principal:
# Inicializando ...
i=0
while True:
b1_act=b1.value()
b2_act=b2.value()
sleep_ms(100)
if b1_ant==1 and b1_act==0:
aplicaciones[i].deseleccionar()
i+=1
if i==6:
i=0
aplicaciones[i].seleccionar()
b1_ant=b1_act
if b2_ant==1 and b2_act==0:
if i==-1:
i=5
aplicaciones[i].deseleccionar
i-=1
aplicaciones[i+1].deseleccionar()
aplicaciones[i].seleccionar()
b2_ant=b2_act
# --------------------------------------------------
#Ejercicio 1:
b1=Pin(18,Pin.IN,Pin.PULL_UP)
#b2=Pin(19,Pin.IN,pin.PULL_UP)
led=Pin(2,Pin.OUT)
led.value(1)
b1_ant=1
b1_act=b1.value()
while True:
b1_act=b1.value()
sleep_ms(100)
if b1_ant==0 and b1_act==1:
led.value(not led.value())#Detector de subida
b1_ant=b1_act