'''Pasos para realizar el taller:
• Utilizar entorno simulado de Wokwi.
• Acceder al entorno de simulación Wokwi para la Raspberry Pi Pico: Wokwi
Raspberry Pi Pico Simulator.
• Asegurarse de tener una cuenta en Wokwi para guardar el trabajo.
• Conectar dos LEDs al pin GPIO 0 (GP0) y al pin GPIO 1 (GP1) de la
Raspberry Pi Pico. El ánodo de cada LED debe conectarse a su respectivo
pin GPIO y el cátodo a GND (tierra).
• Abrir el editor de código en Wokwi y modificar el programa en Python para
controlar ambos LEDs.
• Puede utilizar bucles y temporizadores para crear patrones de parpadeo
distintos para cada LED.
Estrategias de Aprendizaje
• Hacer que el primer LED (conectado a GP0) parpadee con un patrón
específico.
• Hacer que el segundo LED (conectado a GP1) parpadee con un patrón
diferente.
• Ejecutar el programa en el entorno de simulación.
'''
#from machine import Pin
#from utime import sleep
import machine
import utime
# Se configura como salida Pin0 y Pin1, y se lo define como led1 y led2
led1 = machine.Pin(0, machine.Pin.OUT)
led2 = machine.Pin(1, machine.Pin.OUT)
# Se configura al Pin14 , Pin15 y Pin16 como entrada y se lo asigna al botón1 , botón2 y botón "Stop"
boton_set_led1 = machine.Pin(14, machine.Pin.IN, machine.Pin.PULL_UP)
boton_set_led2 = machine.Pin(15, machine.Pin.IN, machine.Pin.PULL_UP)
boton_stop = machine.Pin(16, machine.Pin.IN, machine.Pin.PULL_UP)
#Se inicializan las variables
contador_de_ciclos1=0
contador_de_ciclos2=0
retardo_de_ciclos1=5
retardo_de_ciclos2=10
salida1=1
salida2=1
prev_boton_set1=1
prev_boton_set2=1
#Esta función led_estado cambia dinamicamente el estado de los pines de salida (Pin0 y Pin1)
def led_estado(estado1, estado2):
led1.value(estado1)
led2.value(estado2)
return
#La función retardo_salida genera retardos a partir de los ciclos en el bucle
def retardo_salida(contador_de_ciclos,retardo_de_ciclos):
if contador_de_ciclos<=retardo_de_ciclos: #retardos salida en alto
salida=1
contador_de_ciclos+= 1
elif contador_de_ciclos >retardo_de_ciclos and contador_de_ciclos<=(retardo_de_ciclos*2): #Retardos salidas en bajo
salida=0
contador_de_ciclos+= 1
else: #Se reinician las variables al terminar el ciclo de conteo
salida=0
contador_de_ciclos=0
return salida, contador_de_ciclos #Retorno de parametros de la función
#La función botón setea individualmente y dinamicamente el destello de ambos le led
def boton(retardo_de_ciclos1, retardo_de_ciclos2, prev_set_led1, prev_set_led2):
stop = False
actual_set_led1 = boton_set_led1.value()
actual_set_led2 = boton_set_led2.value()
# Detección del flanco descendente para boton_set_led1
if prev_set_led1 == 1 and actual_set_led1 == 0:
retardo_de_ciclos1 += 1
if retardo_de_ciclos1 >= 15:
retardo_de_ciclos1 = 0
# Detección del flanco descendente para botón_set_led2
if prev_set_led2 == 1 and actual_set_led2 == 0:
retardo_de_ciclos2 += 1
if retardo_de_ciclos2 >= 15:
retardo_de_ciclos2 = 0
# Detección de botón Stop presionado
if boton_stop.value() == 0:
stop = True
return retardo_de_ciclos1, retardo_de_ciclos2, actual_set_led1, actual_set_led2, stop
#CÓdigo principal
while True:
retardo_de_ciclos1 , retardo_de_ciclos2 , prev_boton_set1, prev_boton_set2, stop = boton(retardo_de_ciclos1, retardo_de_ciclos2, prev_boton_set1, prev_boton_set2)
if stop:
break
led_estado(salida1,salida2)
utime.sleep(0.06)
salida1, contador_de_ciclos1 = retardo_salida(contador_de_ciclos1, retardo_de_ciclos1)
salida2, contador_de_ciclos2 = retardo_salida(contador_de_ciclos2, retardo_de_ciclos2)
led1.value(1)
led2.value(1)
utime.sleep(10)
led1.value(0)
led2.value(0)
STOP
Led 1
Led 2
BOTON 1
BOTON 2