# #############################################################################
# ** Proyecto : 3_2 Composicion 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-07-2024, 6:45 pm,
# **
# ** Torre de Leds utilizando concepto de Composicion
# ** y tuplas, listas ciclo for
# **
# ** Versión : 1
# ** Revisión : A
# ** Release : 0
# ** Bugs & Fixes :
# ** Date : 19/07/2024
# **
# ** 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
# +-------------------------------------------------------------------------------
# | V A R I A B L E S / O B J E T O S - G L O B A L E S |
# +-------------------------------------------------------------------------------
# ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# | Definición y Desarrollo de Clase |
# ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
class Led:
def __init__(self,numeroPin):
self.numeroPin = numeroPin
self.led=Pin(self.numeroPin,Pin.OUT)
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")
class TorreLeds:
def __init__(self, lista_pines):
self.leds = [Led(pin) for pin in lista_pines]
print("Torre de LEDs construida con los pines:", lista_pines)
def prender_todos(self,tiempo=1):
for led in self.leds:
led.prender()
time.sleep(tiempo)
def apagar_todos(self,tiempo=1):
for led in self.leds:
led.apagar()
time.sleep(tiempo)
def prender_der_izq(self,tiempo=0.1):
for i in range(len(self.leds)):
self.leds[i].prender()
time.sleep(tiempo)
self.leds[i].apagar()
time.sleep(tiempo)
def prender_individual(self, indice, tiempo=0):
if 0 <= indice < len(self.leds):
self.leds[indice].prender(tiempo)
def apagar_individual(self, indice, tiempo=0):
if 0 <= indice < len(self.leds):
self.leds[indice].apagar(tiempo)
def __del__(self):
print("Torre de LEDs destruida")
# Objetos Globales
torre = TorreLeds([32, 33, 25,26,27,14,12,13])
# ===============================================================================
# || ||
# || 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:
torre.prender_todos()
torre.apagar_todos()
torre.prender_der_izq()
torre.prender_individual(1, 2) # Prende el LED del pin 33 por 2 segundos
# ********************************************************************************
#
#
#
# R E F E R E N C I A S / C O M E N T A R I O S
#
# *********************************************************************************