Simple test¶
Ensure your device works with this simple test.
1# SPDX-FileCopyrightText: 2021 ladyada for Adafruit Industries
2# SPDX-License-Identifier: MIT
3
4"""This demo connects to a magic light and has it do a colorwheel."""
5from rainbowio import colorwheel
6import adafruit_ble
7import _bleio
8
9from adafruit_ble.advertising.standard import ProvideServicesAdvertisement
10from adafruit_ble_magic_light import MagicLightService
11
12# CircuitPython <6 uses its own ConnectionError type. So, is it if available. Otherwise,
13# the built in ConnectionError is used.
14connection_error = ConnectionError
15if hasattr(_bleio, "ConnectionError"):
16 connection_error = _bleio.ConnectionError
17
18
19def find_connection():
20 for connection in radio.connections:
21 if MagicLightService not in connection:
22 continue
23 return connection, connection[MagicLightService]
24 return None, None
25
26
27# Start advertising before messing with the display so that we can connect immediately.
28radio = adafruit_ble.BLERadio()
29
30active_connection, pixels = find_connection()
31current_notification = None
32app_icon_file = None
33while True:
34 if not active_connection:
35 print("Scanning for Magic Light")
36 for scan in radio.start_scan(ProvideServicesAdvertisement):
37 if MagicLightService in scan.services:
38 active_connection = radio.connect(scan)
39 try:
40 pixels = active_connection[MagicLightService]
41 except connection_error:
42 print("disconnected")
43 continue
44 break
45 radio.stop_scan()
46
47 i = 0
48 while active_connection.connected:
49 pixels[0] = colorwheel(i % 256)
50 i += 1
51
52 active_connection = None