/ examples / ble_broadcastnet_battery_level_neopixel.py
ble_broadcastnet_battery_level_neopixel.py
 1  import time
 2  import analogio
 3  import board
 4  import microcontroller
 5  import neopixel
 6  import adafruit_ble_broadcastnet
 7  
 8  print("This is BroadcastNet sensor:", adafruit_ble_broadcastnet.device_address)
 9  
10  battery = analogio.AnalogIn(board.VOLTAGE_MONITOR)
11  divider_ratio = 2
12  
13  pixel = neopixel.NeoPixel(board.NEOPIXEL, 1)
14  
15  while True:
16      measurement = adafruit_ble_broadcastnet.AdafruitSensorMeasurement()
17      battery_voltage = (
18          battery.value
19          / 2 ** 16
20          * divider_ratio
21          * battery.reference_voltage  # pylint: disable=no-member
22      )
23      r = 16 - int(((battery_voltage - 3.6) / 0.6) * 16)
24      r = min(16, max(r, 0))
25      g = int(((battery_voltage - 3.6) / 0.6) * 16)
26      g = min(16, max(g, 0))
27      pixel[0] = r << 16 | g << 8
28      measurement.battery_voltage = int(battery_voltage * 1000)
29      measurement.temperature = (
30          microcontroller.cpu.temperature  # pylint: disable=no-member
31      )
32      print(measurement)
33      adafruit_ble_broadcastnet.broadcast(measurement)
34      pixel[0] = 0
35  
36      time.sleep(30)