update BLE_snowglobe for CP 5/0-beta.0 BLE API

This commit is contained in:
Jerry Needell 2019-12-01 06:42:49 -05:00
parent 0b6b216c8e
commit 63375ed029

View file

@ -5,18 +5,24 @@ import busio
import neopixel
import adafruit_lis3dh
from adafruit_ble.uart_server import UARTServer
from adafruit_bluefruit_connect.packet import Packet
from adafruit_bluefruit_connect.color_packet import ColorPacket
from adafruit_bluefruit_connect.button_packet import ButtonPacket
from adafruit_ble import BLERadio
from adafruit_ble.advertising.standard import ProvideServicesAdvertisement
from adafruit_ble.services.nordic import UARTService
#===| User Config |==================================================
SNOWGLOBE_NAME = "SNOWGLOBE" # name that will show up on smart device
DEFAULT_ANIMATION = 0 # 0-3, index in ANIMATIONS list
DEFAULT_DURATION = 5 # total seconds to play animation
DEFAULT_SPEED = 0.1 # delay in seconds between updates
DEFAULT_COLOR = 0xFF0000 # hex color value
DEFAULT_SHAKE = 27 # lower number is more sensitive
DEFAULT_SHAKE = 20 # lower number is more sensitive
# you can define more animation functions below
# here, specify the four to be used
ANIMATIONS = ('spin', 'pulse', 'strobe', 'sparkle')
@ -39,7 +45,10 @@ accelo_i2c = busio.I2C(board.ACCELEROMETER_SCL, board.ACCELEROMETER_SDA)
accelo = adafruit_lis3dh.LIS3DH_I2C(accelo_i2c, address=0x19)
# Setup BLE
uart_server = UARTServer(name=SNOWGLOBE_NAME)
ble = BLERadio()
uart = UARTService()
advertisement = ProvideServicesAdvertisement(uart)
#--| ANIMATIONS |----------------------------------------------------
def spin(config):
@ -124,26 +133,36 @@ def indicate(event=None):
time.sleep(0.1)
indicate('START')
while True:
uart_server.start_advertising()
# wait for connection
while not uart_server.connected:
# check for shake while waiting
# Are we already advertising?
advertising = False
while True:
# While BLE is *not* connected
while not ble.connected:
if accelo.shake(snow_config['shake'], 5, 0):
play_animation(snow_config)
if not advertising:
ble.start_advertising(advertisement)
advertising = True
# connected
indicate('CONNECTED')
while uart_server.connected:
while ble.connected:
# Once we're connected, we're not advertising any more.
advertising = False
if accelo.shake(snow_config['shake'], 5, 0):
play_animation(snow_config)
if uart_server.in_waiting:
if uart.in_waiting:
try:
packet = Packet.from_stream(uart_server)
packet = Packet.from_stream(uart)
except ValueError:
continue