|
6 | 6 | """
|
7 | 7 |
|
8 | 8 | import time
|
9 |
| -import board |
10 |
| -import digitalio |
11 |
| - |
12 |
| -import neopixel |
| 9 | +from adafruit_circuitplayground.bluefruit import cpb |
13 | 10 |
|
14 | 11 | from adafruit_ble import BLERadio
|
15 | 12 | from adafruit_ble.advertising.adafruit import AdafruitColor
|
|
28 | 25 |
|
29 | 26 | ble = BLERadio()
|
30 | 27 |
|
31 |
| -slide_switch = digitalio.DigitalInOut(board.SLIDE_SWITCH) |
32 |
| -slide_switch.pull = digitalio.Pull.UP |
33 |
| -button_a = digitalio.DigitalInOut(board.BUTTON_A) |
34 |
| -button_a.pull = digitalio.Pull.DOWN |
35 |
| -button_b = digitalio.DigitalInOut(board.BUTTON_B) |
36 |
| -button_b.pull = digitalio.Pull.DOWN |
37 |
| - |
38 |
| -led = digitalio.DigitalInOut(board.D13) |
39 |
| -led.switch_to_output() |
40 |
| - |
41 |
| -neopixels = neopixel.NeoPixel(board.NEOPIXEL, 10, auto_write=False) |
42 |
| - |
43 | 28 | i = 0
|
44 | 29 | advertisement = AdafruitColor()
|
45 | 30 | advertisement.color = color_options[i]
|
46 |
| -neopixels.fill(color_options[i]) |
| 31 | +cpb.pixels.auto_write = False |
| 32 | +cpb.pixels.fill(color_options[i]) |
47 | 33 | while True:
|
48 | 34 | # The first mode is the color selector which broadcasts it's current color to other devices.
|
49 |
| - if slide_switch.value: |
| 35 | + if cpb.switch: |
50 | 36 | print("Broadcasting color")
|
51 | 37 | ble.start_advertising(advertisement)
|
52 |
| - while slide_switch.value: |
| 38 | + while cpb.switch: |
53 | 39 | last_i = i
|
54 |
| - if button_a.value: |
| 40 | + if cpb.button_a: |
55 | 41 | i += 1
|
56 |
| - if button_b.value: |
| 42 | + if cpb.button_b: |
57 | 43 | i -= 1
|
58 | 44 | i %= len(color_options)
|
59 | 45 | if last_i != i:
|
60 | 46 | color = color_options[i]
|
61 |
| - neopixels.fill(color) |
62 |
| - neopixels.show() |
| 47 | + cpb.pixels.fill(color) |
| 48 | + cpb.pixels.show() |
63 | 49 | print("New color {:06x}".format(color))
|
64 | 50 | advertisement.color = color
|
65 | 51 | ble.stop_advertising()
|
|
72 | 58 | closest_rssi = -80
|
73 | 59 | closest_last_time = 0
|
74 | 60 | print("Scanning for colors")
|
75 |
| - while not slide_switch.value: |
| 61 | + while not cpb.switch: |
76 | 62 | for entry in ble.start_scan(AdafruitColor, minimum_rssi=-100, timeout=1):
|
77 |
| - if slide_switch.value: |
| 63 | + if cpb.switch: |
78 | 64 | break
|
79 | 65 | now = time.monotonic()
|
80 | 66 | new = False
|
|
87 | 73 | closest_rssi = entry.rssi
|
88 | 74 | closest_last_time = now
|
89 | 75 | discrete_strength = min((100 + entry.rssi) // 5, 10)
|
90 |
| - #print(entry.rssi, discrete_strength) |
91 |
| - neopixels.fill(0x000000) |
| 76 | + cpb.pixels.fill(0x000000) |
92 | 77 | for i in range(0, discrete_strength):
|
93 |
| - neopixels[i] = entry.color |
94 |
| - neopixels.show() |
| 78 | + cpb.pixels[i] = entry.color |
| 79 | + cpb.pixels.show() |
95 | 80 |
|
96 | 81 | # Clear the pixels if we haven't heard from anything recently.
|
97 | 82 | now = time.monotonic()
|
98 | 83 | if now - closest_last_time > 1:
|
99 |
| - neopixels.fill(0x000000) |
100 |
| - neopixels.show() |
| 84 | + cpb.pixels.fill(0x000000) |
| 85 | + cpb.pixels.show() |
101 | 86 | ble.stop_scan()
|
0 commit comments