import machine
import utime
utime.sleep(0.1) # Wait for USB to become ready
# internal LED definition
led_onboard = machine.Pin(25, machine.Pin.OUT)
# input definition
# switch is in pull_down configuration
big_blue_button_1 = machine.Pin(5, machine.Pin.IN, machine.Pin.PULL_DOWN)
# variables
BBB_previous_state = False
press_count = 0
#debounce related
last_time = utime.ticks_ms() # the last time the button is pressed
debounce_time = 0 #ms expected debounce time in [ms]
#functions
#no debounce check
def check_button_wo_debounce():
global BBB_previous_state, press_count
BBB_current_reading = big_blue_button_1.value()
if (BBB_current_reading == True) and (BBB_previous_state == False):
BBB_previous_state = BBB_current_reading
elif (BBB_current_reading == False) and (BBB_previous_state == True):
press_count += 1
BBB_previous_state = BBB_current_reading
#debounce check
def check_button_with_debounce():
global BBB_previous_state, press_count, last_time, debounce_time
BBB_current_reading = big_blue_button_1.value()
if (BBB_current_reading == True) and (BBB_previous_state == False):
new_time = utime.ticks_ms()
if utime.ticks_diff(new_time, last_time) > debounce_time:
BBB_previous_state = BBB_current_reading
last_time = new_time
elif (BBB_current_reading == False) and (BBB_previous_state == True):
new_time = utime.ticks_ms()
if utime.ticks_diff(new_time, last_time) > debounce_time:
press_count += 1
BBB_previous_state = BBB_current_reading
last_time = new_time
#main loop
print("Hello, Pi Pico!")
while True:
led_onboard.value(1)
#check_button_wo_debounce()
check_button_with_debounce()
if press_count == 3:
break
# ending
print(press_count, " ")
led_onboard.value(0)
print("Finished!")