# #############################################################################
# ** Proyecto : 3_3 Herencia Torre Leds
# ** Plataforma : ESP32 / WROOM
# ** Herramienta : https://www.wokwi.com
# ** : Thonny aplicacion de escritorio descargar en www.thonny.org
# ** Compilador : wokwi Simulador online
# ** Version : 1.0
# ** Fecha/Hora : 19-10-2025, 6:45 pm,
# **
# ** Torre de Leds utilizando concepto de Herencia
# ** y tuplas, listas ciclo for
# **
# ** Versión : 1
# ** Revisión : A
# ** Release : 0
# ** Bugs & Fixes :
# ** Date : 19/10/2025
# **
# ** By : Jorge Anzaldo
# ** contact : [email protected]
# ** twitter x : @janzaldob
# #############################################################################
# ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# : Librerias / Bibliotecas / Modulos | :
# ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
from machine import Pin #https://docs.micropython.org/en/latest/library/machine.Pin.html
import time #https://docs.micropython.org/en/latest/library/time.html
import sys
# ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# | Definición y Desarrollo de Clase |
# ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# CLASE PADRE (BASE)
class Led:
def __init__(self, *pines,color="Azul"):
self._leds = [] # Lista para guardar los pines
for pin in pines: # Recorre cada pin recibido
led = Pin(pin, Pin.OUT) # Configura pin como salida
self._leds.append(led) # Agrega a la lista de LEDs
print(f'{self.__class__.__name__} construido con pines: {pines}')
def prender(self,tiempo=0):
for led in self._leds:
led.on()
time.sleep(tiempo)
def apagar(self,tiempo=0):
for led in self._leds:
led.off()
time.sleep(tiempo)
def parpadear(self):
self.prender()
self.apagar()
def __str__(self):
if self.estado:
return f"LED {self.color} -> PRENDIDO"
else:
return f"LED {self.color} -> APAGADO"
def __del__(self):
print(f" LED {self.color} eliminado")
# SUBCLASE / CLASE HIJA (HEREDA DE Led)
class TorreLed(Led):
def __init__(self, *pines):
super().__init__(*pines)
super().prender()
super().apagar()
super().parpadear()
def prender(self,tiempo=1):
# Prender TODOS los LEDs (sobrescribe el método del padre)
print(" PRENDIENDO TODA LA TORRE:")
for led in self._leds:
led.on()
time.sleep(tiempo)
def apagar(self,tiempo=1):
#Apagar TODOS los LEDs (sobrescribe el método del padre)
print(" APAGANDO TODA LA TORRE:")
for led in self._leds:
led.off()
time.sleep(tiempo)
def prender_izq_der(self):
# Prende de izquierda a derecha
for led in self._leds:
led.prender()
time.sleep(0.1)
self.apagar()
def mostrar_estado(self):
# Muestra el estado de todos los LEDs
print("\n ESTADO DE LA TORRE:")
for led in self.leds:
print(f" - {led}")
# +-------------------------------------------------------------------------------
# | V A R I A B L E S / O B J E T O S - G L O B A L E S |
# +-------------------------------------------------------------------------------
# Crear una instancia/Objeto de la subclase TorreLeds
led = Led(2)
torre = TorreLed(13,12,14,27,26,25,33,32)
# ===============================================================================
# || ||
# || B L O Q U E / F U N C I O N P R I N C I P A L ||
# || ||
# ===============================================================================
if __name__ == "__main__":
while True:
led.prender(1)
led.apagar(1)
torre.prender(1)
torre.apagar(1)
#torre.prender_izq_der()
#torre.apagar()
# ********************************************************************************
#
#
#
# R E F E R E N C I A S / C O M E N T A R I O S
#
# *********************************************************************************