"""
# MÉTODO 1 - CON VARIABLES DE ESTADO
from machine import Pin
from time import sleep
LEDPin = 0
myLED = Pin(LEDPin, Pin.OUT)
butPin = 20
myButton = Pin(butPin, Pin.IN, Pin.PULL_UP)
butStateNow = 1
butStateOld = 1
LEDState = False
while True:
butStateNow = myButton.value()
if butStateNow == 1 and butStateOld == 0:
LEDState = not LEDState
myLED.value(LEDState)
butStateOld = butStateNow
sleep(.1)
"""
"""
# MÉTODO2 - 'LEYENDO' LA SALIDA
from machine import Pin
from time import sleep
# Configuración de pines
boton = Pin(20, Pin.IN, Pin.PULL_UP)
led = Pin(0, Pin.OUT)
# Variable de estado para el LED
led_encendido = False # 'Arranca' con el LED APAGADO
# Bucle principal
while True:
if boton.value() == 0: # Si el botón está presionado
sleep(0.1)
led_encendido = not led_encendido # Alternar el estado del LED
led.value(1 if led_encendido else 0) # Encender o apagar el LED según el estado
sleep(0.2)
"""
# MÉTODO 3 CON FUNCIONES
"""
from machine import Pin
from time import sleep
LEDPin = 0
myLED = Pin(LEDPin, Pin.OUT)
butPin = 20
myButton = Pin(butPin, Pin.IN, Pin.PULL_UP)
def toggle_LED():
LED_state = not myLED.value()
myLED.value(LED_state)
def button_pressed():
return myButton.value() == 0
def wait_for_button_release():
while myButton.value() == 0:
pass
while True:
if button_pressed():
toggle_LED()
wait_for_button_release()
sleep(0.1)
"""
# CON IRQs POR HARDWARE
"""
from machine import Pin
from time import sleep
LEDPin = 0
myLED = Pin(LEDPin, Pin.OUT)
butPin = 20
myButton = Pin(butPin, Pin.IN, Pin.PULL_UP)
# Función para manejar la interrupción del botón
def button_interrupt_handler(pin):
global LEDState
LEDState = not LEDState
myLED.value(LEDState)
# Configurar la interrupción del botón
myButton.irq(trigger=Pin.IRQ_FALLING, handler=button_interrupt_handler)
# Estado inicial del LED y del botón
LEDState = False
# Bucle principal
while True:
# Aquí puedes realizar otras tareas mientras el programa espera las interrupciones
sleep(.1)
"""
from machine import Pin
import time
# Configurar el pin del LED y el botón
led = Pin(0, Pin.OUT)
boton = Pin(20, Pin.IN, Pin.PULL_UP) # Usar PULL_UP ya que el otro pin del botón está conectado a GND
estado_led = False
def toggle_led():
global estado_led
estado_led = not estado_led
led.value(estado_led)
def main():
estado_anterior_boton = boton.value()
while True:
estado_actual_boton = boton.value()
if estado_actual_boton and not estado_anterior_boton:
toggle_led()
estado_anterior_boton = estado_actual_boton
time.sleep(0.1) # Pequeña pausa para evitar rebotes
if __name__ == '__main__':
main()