import board
import digitalio
import pwmio
import time
# pushbuttons
pb1 = digitalio.DigitalInOut(board.GP18)
pb1.direction = digitalio.Direction.INPUT
# Physical pull-down resistor expected (Active High)
pb2 = digitalio.DigitalInOut(board.GP19)
pb2.direction = digitalio.Direction.INPUT
# Physical pull-up resistor expected (Active Low)
# leds
led1 = digitalio.DigitalInOut(board.GP2)
led1.direction = digitalio.Direction.OUTPUT
led2 = digitalio.DigitalInOut(board.GP3)
led2.direction = digitalio.Direction.OUTPUT
led3 = digitalio.DigitalInOut(board.GP4)
led3.direction = digitalio.Direction.OUTPUT
led4 = digitalio.DigitalInOut(board.GP5)
led4.direction = digitalio.Direction.OUTPUT
# buzzer
buzzer = pwmio.PWMOut(board.GP6, frequency=1000, variable_frequency=True)
buzzer.duty_cycle = 0 # volume = 0
while True:
# pb1 pressed (Active HIGH = read True instead of 1)
if pb1.value == True:
# cycle 6 times
for i in range(6):
# all led ON
led1.value = True; led2.value = True; led3.value = True; led4.value = True
time.sleep(0.5)
# all LED OFF
led1.value = False; led2.value = False; led3.value = False; led4.value = False
time.sleep(0.5)
buzzer.frequency = 1000 # high pitch
buzzer.duty_cycle = 32768 # half volume
time.sleep(1) # on for 1 second
buzzer.duty_cycle = 0 # off
time.sleep(0.5)
# ELSE IF PB2 is pressed
elif pb2.value == False:
# Cycle 4 times
for i in range(4):
# left to right (led1,led2,led3,led4)
led1.value = True; time.sleep(0.3); led1.value = False
led2.value = True; time.sleep(0.3); led2.value = False
led3.value = True; time.sleep(0.3); led3.value = False
led4.value = True; time.sleep(0.3); led4.value = False
# right to left (led3,led2)
led3.value = True; time.sleep(0.3); led3.value = False
led2.value = True; time.sleep(0.3); led2.value = False
# Last led blink is Led1 outside of for loop
led1.value = True; time.sleep(0.15); led1.value = False
time.sleep(0.5)
else:
led1.value = False
led2.value = False
led3.value = False
led4.value = False
buzzer.duty_cycle = 0
time.sleep(0.1)