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)