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()