Adafruit_CircuitPython_CLUE/examples/clue_ams_remote.py
2020-03-20 12:16:43 -04:00

77 lines
2.1 KiB
Python

"""
This example solicits that apple devices that provide notifications connect to it, initiates
pairing, then allows the user to use a CLUE board as a media remote through both the buttons
and capacitive touch pads.
This example requires the following additional libraries:
adafruit_ble
adafruit_ble_apple_media
"""
import time
import adafruit_ble
from adafruit_ble.advertising.standard import SolicitServicesAdvertisement
from adafruit_ble_apple_media import AppleMediaService
from adafruit_clue import clue
# PyLint can't find BLERadio for some reason so special case it here.
radio = adafruit_ble.BLERadio() # pylint: disable=no-member
a = SolicitServicesAdvertisement()
a.solicited_services.append(AppleMediaService)
radio.start_advertising(a)
while not radio.connected:
pass
print("connected")
known_notifications = set()
i = 0
if radio.connected:
for connection in radio.connections:
if not connection.paired:
connection.pair()
print("paired")
ams = connection[AppleMediaService]
while radio.connected:
if ams.playing:
play_str = "Playing"
else:
play_str = "Paused"
print("{} - {}, {}".format(ams.title, ams.artist, play_str))
# Capacitive touch pad marked 0 goes to the previous track
if clue.touch_0:
ams.previous_track()
time.sleep(0.25)
# Capacitive touch pad marked 1 toggles pause/play
if clue.touch_1:
ams.toggle_play_pause()
time.sleep(0.25)
# Capacitive touch pad marked 2 advances to the next track
if clue.touch_2:
ams.next_track()
time.sleep(0.25)
# If button B (on the right) is pressed, it increases the volume
if "B" in clue.were_pressed:
ams.volume_up()
time.sleep(0.30)
while "B" in clue.were_pressed:
ams.volume_up()
time.sleep(0.07)
# If button A (on the left) is pressed, the volume decreases
if "A" in clue.were_pressed:
ams.volume_down()
time.sleep(0.30)
while "A" in clue.were_pressed:
ams.volume_down()
time.sleep(0.07)
print("disconnected")