updated it to use CircuitPlayground library
This commit is contained in:
parent
0ad0bb1c41
commit
1b420d130c
1 changed files with 16 additions and 31 deletions
|
|
@ -6,10 +6,7 @@ slide switch. The buttons change the color when advertising.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import time
|
import time
|
||||||
import board
|
from adafruit_circuitplayground.bluefruit import cpb
|
||||||
import digitalio
|
|
||||||
|
|
||||||
import neopixel
|
|
||||||
|
|
||||||
from adafruit_ble import BLERadio
|
from adafruit_ble import BLERadio
|
||||||
from adafruit_ble.advertising.adafruit import AdafruitColor
|
from adafruit_ble.advertising.adafruit import AdafruitColor
|
||||||
|
|
@ -28,38 +25,27 @@ color_options = [0x110000,
|
||||||
|
|
||||||
ble = BLERadio()
|
ble = BLERadio()
|
||||||
|
|
||||||
slide_switch = digitalio.DigitalInOut(board.SLIDE_SWITCH)
|
|
||||||
slide_switch.pull = digitalio.Pull.UP
|
|
||||||
button_a = digitalio.DigitalInOut(board.BUTTON_A)
|
|
||||||
button_a.pull = digitalio.Pull.DOWN
|
|
||||||
button_b = digitalio.DigitalInOut(board.BUTTON_B)
|
|
||||||
button_b.pull = digitalio.Pull.DOWN
|
|
||||||
|
|
||||||
led = digitalio.DigitalInOut(board.D13)
|
|
||||||
led.switch_to_output()
|
|
||||||
|
|
||||||
neopixels = neopixel.NeoPixel(board.NEOPIXEL, 10, auto_write=False)
|
|
||||||
|
|
||||||
i = 0
|
i = 0
|
||||||
advertisement = AdafruitColor()
|
advertisement = AdafruitColor()
|
||||||
advertisement.color = color_options[i]
|
advertisement.color = color_options[i]
|
||||||
neopixels.fill(color_options[i])
|
cpb.pixels.auto_write = False
|
||||||
|
cpb.pixels.fill(color_options[i])
|
||||||
while True:
|
while True:
|
||||||
# The first mode is the color selector which broadcasts it's current color to other devices.
|
# The first mode is the color selector which broadcasts it's current color to other devices.
|
||||||
if slide_switch.value:
|
if cpb.switch:
|
||||||
print("Broadcasting color")
|
print("Broadcasting color")
|
||||||
ble.start_advertising(advertisement)
|
ble.start_advertising(advertisement)
|
||||||
while slide_switch.value:
|
while cpb.switch:
|
||||||
last_i = i
|
last_i = i
|
||||||
if button_a.value:
|
if cpb.button_a:
|
||||||
i += 1
|
i += 1
|
||||||
if button_b.value:
|
if cpb.button_b:
|
||||||
i -= 1
|
i -= 1
|
||||||
i %= len(color_options)
|
i %= len(color_options)
|
||||||
if last_i != i:
|
if last_i != i:
|
||||||
color = color_options[i]
|
color = color_options[i]
|
||||||
neopixels.fill(color)
|
cpb.pixels.fill(color)
|
||||||
neopixels.show()
|
cpb.pixels.show()
|
||||||
print("New color {:06x}".format(color))
|
print("New color {:06x}".format(color))
|
||||||
advertisement.color = color
|
advertisement.color = color
|
||||||
ble.stop_advertising()
|
ble.stop_advertising()
|
||||||
|
|
@ -72,9 +58,9 @@ while True:
|
||||||
closest_rssi = -80
|
closest_rssi = -80
|
||||||
closest_last_time = 0
|
closest_last_time = 0
|
||||||
print("Scanning for colors")
|
print("Scanning for colors")
|
||||||
while not slide_switch.value:
|
while not cpb.switch:
|
||||||
for entry in ble.start_scan(AdafruitColor, minimum_rssi=-100, timeout=1):
|
for entry in ble.start_scan(AdafruitColor, minimum_rssi=-100, timeout=1):
|
||||||
if slide_switch.value:
|
if cpb.switch:
|
||||||
break
|
break
|
||||||
now = time.monotonic()
|
now = time.monotonic()
|
||||||
new = False
|
new = False
|
||||||
|
|
@ -87,15 +73,14 @@ while True:
|
||||||
closest_rssi = entry.rssi
|
closest_rssi = entry.rssi
|
||||||
closest_last_time = now
|
closest_last_time = now
|
||||||
discrete_strength = min((100 + entry.rssi) // 5, 10)
|
discrete_strength = min((100 + entry.rssi) // 5, 10)
|
||||||
#print(entry.rssi, discrete_strength)
|
cpb.pixels.fill(0x000000)
|
||||||
neopixels.fill(0x000000)
|
|
||||||
for i in range(0, discrete_strength):
|
for i in range(0, discrete_strength):
|
||||||
neopixels[i] = entry.color
|
cpb.pixels[i] = entry.color
|
||||||
neopixels.show()
|
cpb.pixels.show()
|
||||||
|
|
||||||
# Clear the pixels if we haven't heard from anything recently.
|
# Clear the pixels if we haven't heard from anything recently.
|
||||||
now = time.monotonic()
|
now = time.monotonic()
|
||||||
if now - closest_last_time > 1:
|
if now - closest_last_time > 1:
|
||||||
neopixels.fill(0x000000)
|
cpb.pixels.fill(0x000000)
|
||||||
neopixels.show()
|
cpb.pixels.show()
|
||||||
ble.stop_scan()
|
ble.stop_scan()
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue