# 1.- ---------------- Encabezado ----------------------------------------------
# Autor : Jorge Anzaldo
# Fecha : 20/04/2026
# Descripcion del programa :
# Este programa ejemplifica el uso de Programación Orientada a Objetos (POO)
# en MicroPython para controlar LEDs mediante la creación de una clase.
# Se explican los conceptos de clase, objeto, atributos, métodos y composición.
# 2.- ---------------- Importación de Módulos y Bibliotecas --------------------
from machine import Pin
import time
# 3.- ---------------- Definición de Funciones o Clases ------------------------
"""
CLASE:
Una clase es una plantilla o molde para crear objetos.
En este caso, la clase Led representa el comportamiento de un LED físico.
"""
class Led:
def __init__(self, numeroPin):
self.numeroPin = numeroPin # Atributo simple
self.led = Pin(self.numeroPin, Pin.OUT) # Objeto compuesto (Pin)
print(f"El objeto {self} fue construido")
def prender(self, tiempo=0):
self.led.on()
time.sleep(tiempo)
if tiempo != 0:
self.led.off()
def apagar(self, tiempo=0):
self.led.off()
time.sleep(tiempo)
def parpadear(self, veces=5):
for i in range(veces):
self.prender(0.2)
self.apagar(0.2)
def __str__(self):
return f"led conectado al pin {self.numeroPin}"
def __del__(self):
print(f"El objeto {self} fue destruido")
# 4.- ---------------- Variables u Objetos Globales ----------------------------
led = Led(2)
# 5.- ---------------- Bloque Principal ----------------------------------------
if __name__ == "__main__":
while True:
led.parpadear()
# 6.- ---------------- Documentación y Comentarios------------------------------
"""
RESUMEN CONCEPTUAL:
1. CLASE:
Es una plantilla para crear objetos.
Ejemplo: class Led
2. OBJETO:
Es una instancia de una clase.
Ejemplo: led_verde, led_rojo
3. ATRIBUTOS:
Son variables dentro de un objeto.
Ejemplo: self.numeroPin, self.led
4. MÉTODOS:
Son funciones dentro de una clase.
Ejemplo: prender(), apagar(), parpadear()
5. COMPOSICIÓN:
Es cuando una clase utiliza otra clase dentro de sí.
Ejemplo:
self.led = Pin(self.numeroPin, Pin.OUT)
Aquí, la clase Led contiene un objeto de la clase Pin.
"""