|
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