code.py
1 # SPDX-FileCopyrightText: 2022 Dan Halbert for Adafruit Industries 2 # 3 # SPDX-License-Identifier: MIT 4 5 import time 6 7 import board 8 import digitalio 9 10 11 class Blinker: 12 def __init__(self, led, interval, count): 13 self.led = led 14 self.interval = interval 15 # Count both on and off. 16 self.count2 = count * 2 17 self.last_transition = 0 18 19 def blink(self): 20 """Return False when blinking is finished.""" 21 if self.count2 <= 0: 22 return False 23 now = time.monotonic() 24 if now > self.last_transition + self.interval: 25 self.led.value = not self.led.value 26 self.last_transition = now 27 self.count2 -= 1 28 return True 29 30 31 def main(): 32 with digitalio.DigitalInOut(board.D1) as led1, digitalio.DigitalInOut( 33 board.D2 34 ) as led2: 35 led1.switch_to_output(value=False) 36 led2.switch_to_output(value=False) 37 38 blinker1 = Blinker(led1, 0.25, 10) 39 blinker2 = Blinker(led2, 0.1, 20) 40 running1 = True 41 running2 = True 42 while running1 or running2: 43 running1 = blinker1.blink() 44 running2 = blinker2.blink() 45 print("done") 46 47 48 main()