# 1.- ---------------- Encabezado ----------------------------------------------
# Autor : [Alumno]
# Fecha : [Fecha]
# Descripcion : Torre de LEDs con Herencia Simple en ESP32
# 2.- ---------------- Importación de Módulos ----------------------------------
from machine import Pin
import time
# 3.- ---------------- Definición de Clases ------------------------------------
class Led:
def __init__(self, numeroPin):
# TODO 1: Guardar el número de pin
self.numeroPin = numeroPin
# TODO 2: Crear objeto Pin en modo salida
self.led = Pin(self.numeroPin, Pin.OUT)
def prender(self, tiempo=0):
# TODO 3: Encender el LED
self.led.on()
# TODO 4: Si tiempo > 0, esperar y apagar
if tiempo > 0:
time.sleep(tiempo)
self.led.off()
def apagar(self):
# TODO 5: Apagar LED
self.led.off()
class TorreLed(Led):
def __init__(self, lista_pines):
# TODO 6: Crear lista vacía de LEDs
self.lista_leds = []
# TODO 7: Recorrer lista de pines y crear objetos Led
for p in lista_pines:
led = Led(p)
self.lista_leds.append(led)
def encendido_secuencial(self, velocidad=0.1):
# TODO 8: Encender LEDs uno por uno
for led in self.lista_leds:
led.prender()
time.sleep(velocidad)
def rebote(self, velocidad=0.1):
for i in range(len(self.lista_leds)-1, -1, -1):
self.lista_leds[i].prender()
time.sleep(velocidad)
def apagar_todo(self):
# TODO 9: Apagar todos los LEDs
for led in self.lista_leds:
led.apagar()
# 4.- ---------------- Variables Globales --------------------------------------
pines = [13, 12, 14, 27, 26, 25, 33, 32]
# 5.- ---------------- Programa Principal --------------------------------------
if __name__ == "__main__":
# TODO 10: Crear objeto TorreLed
torreta = TorreLed(pines)
while True:
torreta.encendido_secuencial()
torreta.apagar_todo()
torreta.rebote()
torreta.apagar_todo()