import board
import time
import digitalio
y = 30
count = y
interval = 1.0
# Setup Button
sw1 = digitalio.DigitalInOut(board.GP15)
sw1.direction = digitalio.Direction.INPUT
sw1.pull = digitalio.Pull.UP
sw2 = digitalio.DigitalInOut(board.GP16)
sw2.direction = digitalio.Direction.INPUT
sw2.pull = digitalio.Pull.UP
# Setup BCD Pins (A, B, C, D)
pins = [board.GP2, board.GP3, board.GP4, board.GP5]
bcd_pins = []
for p in pins:
led = digitalio.DigitalInOut(p)
led.direction = digitalio.Direction.OUTPUT
bcd_pins.append(led)
# Setup Latch Pins
s72 = digitalio.DigitalInOut(board.GP0) # Tens
s72.direction = digitalio.Direction.OUTPUT
s71 = digitalio.DigitalInOut(board.GP1) # Ones
s71.direction = digitalio.Direction.OUTPUT
def send_bcd(value):
for i in range(4):
bcd_pins[i].value = (value >> i) & 1
def latch(pin):
pin.value = 0
time.sleep(0.001)
pin.value = 1
def display_number(num):
tens = num // 10
ones = num % 10
# Tens
send_bcd(tens)
latch(s72)
# Ones
send_bcd(ones)
latch(s71)
def display_off():
send_bcd(0)
latch(s72)
latch(s71)
count = 25
running = False
display_off()
count = 30
running = False
display_off()
while True:
display_number(count)
# Start Button (SW1)
if not sw1.value:
if count > 0:
running = True
print("Start Countdown")
time.sleep(0.3)
# Reset Button (SW2)
if not sw2.value:
display_off()
running = False
count = 30
display_number(count)
print("Reset to 30")
time.sleep(10)
if running:
time.sleep(interval)
if count > 0:
count -= 1
print("Time: {:02d}".format(count))
if count == 0:
running = False
display_number(0)
print("Time Up!")