|
7 | 7 |
|
8 | 8 | import board
|
9 | 9 | from analogio import AnalogIn
|
10 |
| - |
11 |
| -# This hasn't been updated. |
12 |
| - |
13 |
| -#from adafruit_bluefruit_connect.packet import Packet |
14 |
| -# Only the packet classes that are imported will be known to Packet. |
15 |
| -from adafruit_bluefruit_connect.color_packet import ColorPacket |
16 |
| - |
17 | 10 | import adafruit_ble
|
| 11 | +from adafruit_ble import SmartAdapter |
| 12 | +from adafruit_ble.advertising.standard import ProvideServiceAdvertisement |
18 | 13 | from adafruit_ble.services.nordic import UARTService
|
19 |
| -from adafruit_ble.scanner import Scanner |
| 14 | + |
| 15 | +from adafruit_bluefruit_connect.color_packet import ColorPacket |
20 | 16 |
|
21 | 17 | def scale(value):
|
22 | 18 | """Scale an value from 0-65535 (AnalogIn range) to 0-255 (RGB range)"""
|
23 | 19 | return int(value / 65535 * 255)
|
24 | 20 |
|
25 |
| -scanner = Scanner() |
| 21 | +adapter = SmartAdapter() |
| 22 | +adafruit_ble.recognize_services(UARTService) |
26 | 23 |
|
27 | 24 | a3 = AnalogIn(board.A3)
|
28 | 25 | a4 = AnalogIn(board.A4)
|
29 | 26 | a5 = AnalogIn(board.A5)
|
30 | 27 |
|
| 28 | +uart_connection = None |
| 29 | +# See if any existing connections are providing UARTService. |
| 30 | +if adapter.connected: |
| 31 | + for conn in adapter.connections: |
| 32 | + if hasattr(conn, "uart"): |
| 33 | + uart_connection = conn |
| 34 | + break |
| 35 | + |
31 | 36 | while True:
|
32 |
| - for peer in scanner.scan(UARTService): |
33 |
| - peer.connect() |
34 |
| - |
35 |
| - r = scale(a3.value) |
36 |
| - g = scale(a4.value) |
37 |
| - b = scale(a5.value) |
38 |
| - |
39 |
| - color = (r, g, b) |
40 |
| - print(color) |
41 |
| - color_packet = ColorPacket(color) |
42 |
| - for peer in adafruit_ble.peers: |
43 |
| - if not hasattr(peer, "uart"): |
44 |
| - continue |
| 37 | + if not uart_connection: |
| 38 | + print("Scanning...") |
| 39 | + for adv in adapter.start_scan((ProvideServiceAdvertisement,), timeout=5): |
| 40 | + if UARTService in adv.services: |
| 41 | + print("found a UARTService advertisement") |
| 42 | + uart_connection = adapter.connect(adv) |
| 43 | + break |
| 44 | + # Stop scanning whether or not we are connected. |
| 45 | + adapter.stop_scan() |
| 46 | + |
| 47 | + while uart_connection and uart_connection.connected: |
| 48 | + r = scale(a3.value) |
| 49 | + g = scale(a4.value) |
| 50 | + b = scale(a5.value) |
| 51 | + |
| 52 | + color = (r, g, b) |
| 53 | + print(color) |
| 54 | + color_packet = ColorPacket(color) |
45 | 55 | try:
|
46 |
| - peer.uart.write(color_packet.to_bytes()) |
| 56 | + uart_connection.uart.write(color_packet.to_bytes()) |
47 | 57 | except OSError:
|
48 |
| - pass |
49 |
| - time.sleep(0.3) |
| 58 | + try: |
| 59 | + uart_connection.disconnect() |
| 60 | + except: |
| 61 | + pass |
| 62 | + uart_connection = None |
| 63 | + time.sleep(0.3) |
0 commit comments