from machine import Pin
import time
# Pin definitions
LED1_PIN = 2
LED2_PIN = 3
BTN1_PIN = 4
BTN2_PIN = 5
BTN3_PIN = 6
DEBOUNCE_DELAY = 150 # milliseconds
# Setup pins
led1 = Pin(LED1_PIN, Pin.OUT)
led2 = Pin(LED2_PIN, Pin.OUT)
btn1 = Pin(BTN1_PIN, Pin.IN, Pin.PULL_UP)
btn2 = Pin(BTN2_PIN, Pin.IN, Pin.PULL_UP)
btn3 = Pin(BTN3_PIN, Pin.IN, Pin.PULL_UP)
# Initial states
led1_state = False
led2_state = False
last_debounce_time_btn1 = 0
last_debounce_time_btn2 = 0
last_debounce_time_btn3 = 0
# Set initial LED states
led1.value(led1_state)
led2.value(led2_state)
def handle_button(button, last_debounce_time, led_state, led_pin):
"""Handle button press to toggle LED state with debouncing"""
if button.value() == 0: # Button pressed (LOW)
current_time = time.ticks_ms()
if time.ticks_diff(current_time, last_debounce_time) > DEBOUNCE_DELAY:
led_state = not led_state
led_pin.value(led_state)
last_debounce_time = current_time
time.sleep(2) # 2-second delay after successful press
return led_state, last_debounce_time
def handle_reset_button(button, last_debounce_time):
"""Handle reset button press to turn off both LEDs"""
global led1_state, led2_state
if button.value() == 0: # Button pressed (LOW)
current_time = time.ticks_ms()
if time.ticks_diff(current_time, last_debounce_time) > DEBOUNCE_DELAY:
led1_state = False
led2_state = False
led1.value(led1_state)
led2.value(led2_state)
last_debounce_time = current_time
time.sleep(2) # 2-second delay after successful press
return last_debounce_time
# Main loop
while True:
led1_state, last_debounce_time_btn1 = handle_button(btn1, last_debounce_time_btn1, led1_state, led1)
led2_state, last_debounce_time_btn2 = handle_button(btn2, last_debounce_time_btn2, led2_state, led2)
last_debounce_time_btn3 = handle_reset_button(btn3, last_debounce_time_btn3)