/ examples / trellism4_neopixel_toggle.py
trellism4_neopixel_toggle.py
 1  import adafruit_trellism4
 2  
 3  trellis = adafruit_trellism4.TrellisM4Express()
 4  
 5  
 6  def wheel(pos):
 7      if pos < 0 or pos > 255:
 8          return 0, 0, 0
 9      if pos < 85:
10          return int(255 - pos * 3), int(pos * 3), 0
11      if pos < 170:
12          pos -= 85
13          return 0, int(255 - pos * 3), int(pos * 3)
14      pos -= 170
15      return int(pos * 3), 0, int(255 - (pos * 3))
16  
17  
18  led_on = []
19  
20  for x in range(trellis.pixels.width):
21      led_on.append([])
22      for y in range(trellis.pixels.height):
23          led_on[x].append(False)
24  
25  trellis.pixels.fill((0, 0, 0))
26  
27  current_press = set()
28  
29  while True:
30      pressed = set(trellis.pressed_keys)
31  
32      for press in pressed - current_press:
33          x, y = press
34  
35          if not led_on[x][y]:
36              print("Turning on:", press)
37              pixel_index = (x + (y * 8)) * 256 // 32
38              trellis.pixels[x, y] = wheel(pixel_index & 255)
39              led_on[x][y] = True
40  
41          else:
42              print("Turning off:", press)
43              trellis.pixels[x, y] = (0, 0, 0)
44              led_on[x][y] = False
45  
46      current_press = pressed