|
12 | 12 | # Only the packet classes that are imported will be known to Packet.
|
13 | 13 | from adafruit_bluefruit_connect.color_packet import ColorPacket
|
14 | 14 |
|
15 |
| -from adafruit_ble.scanner import Scanner |
16 |
| -from adafruit_ble.uart_client import UARTClient |
| 15 | +from adafruit_ble import BLERadio |
| 16 | +from adafruit_ble.advertising.standard import ProvideServicesAdvertisement |
| 17 | +from adafruit_ble.services.nordic import UARTService |
17 | 18 |
|
18 | 19 | def scale(value):
|
19 | 20 | """Scale an value from 0-65535 (AnalogIn range) to 0-255 (RGB range)"""
|
20 | 21 | return int(value / 65535 * 255)
|
21 | 22 |
|
22 |
| -scanner = Scanner() |
23 |
| -uart_client = UARTClient() |
| 23 | +ble = BLERadio() |
24 | 24 |
|
25 |
| -a3 = AnalogIn(board.A4) |
26 |
| -a4 = AnalogIn(board.A5) |
27 |
| -a5 = AnalogIn(board.A6) |
| 25 | +a4 = AnalogIn(board.A4) |
| 26 | +a5 = AnalogIn(board.A5) |
| 27 | +a6 = AnalogIn(board.A6) |
28 | 28 |
|
29 |
| -while True: |
30 |
| - uart_addresses = [] |
31 |
| - # Keep trying to find a UART peripheral |
32 |
| - while not uart_addresses: |
33 |
| - uart_addresses = uart_client.scan(scanner) |
34 |
| - uart_client.connect(uart_addresses[0], 5) |
| 29 | +uart_connection = None |
| 30 | + |
| 31 | +# See if any existing connections are providing UARTService. |
| 32 | +if ble.connected: |
| 33 | + for connection in ble.connections: |
| 34 | + if UARTService in connection: |
| 35 | + uart_connection = connection |
| 36 | + break |
35 | 37 |
|
36 |
| - while uart_client.connected: |
37 |
| - r = scale(a3.value) |
38 |
| - g = scale(a4.value) |
39 |
| - b = scale(a5.value) |
| 38 | +while True: |
| 39 | + if not uart_connection: |
| 40 | + for adv in ble.start_scan(ProvideServicesAdvertisement, timeout=5): |
| 41 | + if UARTService in adv.services: |
| 42 | + uart_connection = ble.connect(adv) |
| 43 | + break |
| 44 | + # Stop scanning whether or not we are connected. |
| 45 | + ble.stop_scan() |
| 46 | + |
| 47 | + while uart_connection and uart_connection.connected: |
| 48 | + r = scale(a4.value) |
| 49 | + g = scale(a5.value) |
| 50 | + b = scale(a6.value) |
40 | 51 |
|
41 | 52 | color = (r, g, b)
|
42 | 53 | print(color)
|
43 | 54 | color_packet = ColorPacket(color)
|
44 | 55 | try:
|
45 |
| - uart_client.write(color_packet.to_bytes()) |
| 56 | + uart_connection[UARTService].write(color_packet.to_bytes()) |
46 | 57 | except OSError:
|
47 | 58 | pass
|
48 | 59 | time.sleep(0.3)
|
0 commit comments