/ examples / bluefruitconnect_sensors.py
bluefruitconnect_sensors.py
 1  # Basic structure example for using the BLE Connect Controller sensors
 2  # To use, start this program, and start the Adafruit Bluefruit LE Connect app.
 3  # Connect, and then select Controller and enable the sensors
 4  
 5  from adafruit_ble import BLERadio
 6  from adafruit_ble.advertising.standard import ProvideServicesAdvertisement
 7  from adafruit_ble.services.nordic import UARTService
 8  from adafruit_bluefruit_connect.packet import Packet
 9  
10  # Only the packet classes that are imported will be known to Packet.
11  from adafruit_bluefruit_connect.accelerometer_packet import AccelerometerPacket
12  from adafruit_bluefruit_connect.gyro_packet import GyroPacket
13  from adafruit_bluefruit_connect.location_packet import LocationPacket
14  from adafruit_bluefruit_connect.magnetometer_packet import MagnetometerPacket
15  from adafruit_bluefruit_connect.quaternion_packet import QuaternionPacket
16  
17  ble = BLERadio()
18  uart_server = UARTService()
19  advertisement = ProvideServicesAdvertisement(uart_server)
20  
21  while True:
22      print("WAITING...")
23      # Advertise when not connected.
24      ble.start_advertising(advertisement)
25      while not ble.connected:
26          pass
27  
28      # Connected
29      ble.stop_advertising()
30      print("CONNECTED")
31  
32      # Loop and read packets
33      while ble.connected:
34  
35          # Keeping trying until a good packet is received
36          try:
37              packet = Packet.from_stream(uart_server)
38          except ValueError:
39              continue
40  
41          # Accelerometer
42          if isinstance(packet, AccelerometerPacket):
43              print("Accelerometer:", packet.x, packet.y, packet.z)
44  
45          # Gyro
46          if isinstance(packet, GyroPacket):
47              print("Gyro:", packet.x, packet.y, packet.z)
48  
49          # Location
50          if isinstance(packet, LocationPacket):
51              print("Location:", packet.latitude, packet.longitude, packet.altitude)
52  
53          # Magnetometer
54          if isinstance(packet, MagnetometerPacket):
55              print("Magnetometer", packet.x, packet.y, packet.z)
56  
57          # Quaternion
58          if isinstance(packet, QuaternionPacket):
59              print("Quaternion:", packet.x, packet.y, packet.z, packet.w)
60  
61      # Disconnected
62      print("DISCONNECTED")