# Encabezado
# Clase Semaforo
# by Jorge Anzaldo
# date : 10/02/2026
from machine import Pin
import time
# +-------------------------------------------------------------------------------
# | Definicion de y desarrollo de clases |
# +-------------------------------------------------------------------------------
class Led:
def __init__(self, pin=2, nombre="LED INDICADOR", color="VERDE", estado=True):
# Crear el diccionario dispositivo con todos los datos
self.dispositivo = {
"pin": pin,
"nombre": nombre,
"color": color,
"estado": estado
}
# Configurar el pin físico
self.led = Pin(self.dispositivo["pin"], Pin.OUT)
# Si el estado inicial es True, encender el LED
if self.dispositivo["estado"]:
self.led.on()
print(f"El objeto {self} fue construido")
def prender(self, tiempo=0):
self.led.on()
self.dispositivo["estado"] = True # Actualizar estado en diccionario
time.sleep(tiempo)
if tiempo != 0:
self.led.off()
self.dispositivo["estado"] = False # Actualizar estado en diccionario
def apagar(self, tiempo=0):
self.led.off()
self.dispositivo["estado"] = False # Actualizar estado en diccionario
time.sleep(tiempo)
def parpadear(self, veces=5):
for i in range(veces):
self.prender(0.2)
self.apagar(0.2)
def ver(self,tiempo=1):
print("\n" + "="*40)
print("INFORMACIÓN DEL LED")
print("="*40)
for clave, valor in self.dispositivo.items():
print(f"{clave}: {valor}")
print("="*40)
time.sleep(tiempo)
def __str__(self):
return f"LED: {self.dispositivo['nombre']} ({self.dispositivo['color']}) en pin {self.dispositivo['pin']}, estado: {'encendido' if self.dispositivo['estado'] else 'apagado'}"
def __del__(self):
print(f"El objeto {self} fue destruido")
# +-------------------------------------------------------------------------------
# | VARIABLES / OBJETOS / INSTANCIAS / G L O B A L E S |
# +-------------------------------------------------------------------------------
# Crear instancias con diferentes parámetros
led_interno = Led()
led_rojo = Led(pin=5, nombre="LED", color="ROJO")
led_naranja = Led(pin=4, nombre="LED", color="NARANJA")
led_amarillo = Led(pin=16, nombre="LED", color="AMARILLO")
led_azul = Led(pin=17, nombre="LED", color="AZUL", estado=False)
# ===============================================================================
# || ||
# || P R O G R A M A / F U N C I O N P R I N C I P A L ||
# || ||
# ===============================================================================
if __name__ == '__main__':
led_interno.prender()
led_interno.ver()
while True:
led_rojo.prender(1)
led_rojo.ver()
led_naranja.prender(2)
led_amarillo.parpadear()
led_azul.ver()
led_azul.prender()
led_azul.ver()