Skip to content

Commit 80ddaeb

Browse files
authored
Merge branch 'master' into master
2 parents a4cec24 + 11fbffc commit 80ddaeb

File tree

62 files changed

+72689
-63
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

62 files changed

+72689
-63
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,4 @@ Hue_Controller/secrets.h
33
.idea
44
*.DS_Store
55
CircuitPython_Logger/secrets\.py
6+
.python-version

Adafruit_pIRKey/NEC_keyboard_example.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,13 @@
1010
import adafruit_dotstar
1111
import pulseio
1212
import board
13+
import usb_hid
1314

1415
led = adafruit_dotstar.DotStar(board.APA102_SCK, board.APA102_MOSI, 1)
1516

1617
# The keyboard object!
1718
time.sleep(1) # Sleep for a bit to avoid a race condition on some systems
18-
keyboard = Keyboard()
19+
keyboard = Keyboard(usb_hid.devices)
1920
keyboard_layout = KeyboardLayoutUS(keyboard) # We're in the US :)
2021

2122
# our infrared pulse decoder helpers

Adafruit_pIRKey/raw_code_keyboard/main.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,11 @@
88
import adafruit_dotstar
99
import adafruit_irremote
1010
import time
11+
import usb_hid
1112

1213
# The keyboard object!
1314
time.sleep(1) # Sleep for a bit to avoid a race condition on some systems
14-
keyboard = Keyboard()
15+
keyboard = Keyboard(usb_hid.devices)
1516
keyboard_layout = KeyboardLayoutUS(keyboard) # We're in the US :)
1617

1718
led = adafruit_dotstar.DotStar(board.APA102_SCK, board.APA102_MOSI, 1)

Arcade_Button_Control_Box/Arcade_Button_Control_Box.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
from adafruit_hid.keyboard import Keyboard
55
from adafruit_hid.keycode import Keycode
66
import board
7+
import usb_hid
78

89
# A simple neat keyboard demo in circuitpython
910

@@ -16,7 +17,7 @@
1617
controlkey = Keycode.LEFT_CONTROL
1718

1819
# the keyboard object!
19-
kbd = Keyboard()
20+
kbd = Keyboard(usb_hid.devices)
2021
# our array of button objects
2122
buttons = []
2223
leds = []

AutoSunglasses/code.py

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,15 @@
1414

1515
import time
1616
import board
17-
import simpleio
17+
import pulseio
1818
from adafruit_circuitplayground.express import cpx
19+
from adafruit_motor import servo
1920

20-
servo = simpleio.Servo(board.A1)
21+
pwm = pulseio.PWMOut(board.A1, duty_cycle=2 ** 15, frequency=50)
22+
my_servo = servo.Servo(pwm)
2123

2224
cpx.pixels.fill((0, 0, 0))
23-
servo.angle = 90
25+
my_servo.angle = 90
2426

2527
while True:
2628
light_level = cpx.light
@@ -30,8 +32,8 @@
3032
else:
3133
cpx.pixels.fill((0, 0, 0))
3234
if light_level < 200:
33-
servo.angle = 90
35+
my_servo.angle = 90
3436
else:
35-
servo.angle = 0
37+
my_servo.angle = 0
3638

3739
time.sleep(0.25)
Lines changed: 134 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,134 @@
1+
"""
2+
This example solicits that apple devices that provide notifications connect to it, initiates
3+
pairing, prints existing notifications and then prints any new ones as they arrive.
4+
"""
5+
6+
import time
7+
import displayio
8+
import terminalio
9+
from adafruit_gizmo import tft_gizmo
10+
from adafruit_display_text.label import Label
11+
from adafruit_display_shapes.rect import Rect
12+
from adafruit_bitmap_font import bitmap_font
13+
import adafruit_ble
14+
from adafruit_ble.advertising.standard import SolicitServicesAdvertisement
15+
from adafruit_ble_apple_media import AppleMediaService
16+
from adafruit_ble_apple_media import UnsupportedCommand
17+
from adafruit_circuitplayground import cp
18+
19+
BACKGROUND_COLOR = 0x49523b # Gray
20+
TEXT_COLOR = 0xFF0000 # Red
21+
BORDER_COLOR = 0xAAAAAA # Light Gray
22+
STATUS_COLOR = BORDER_COLOR
23+
24+
# PyLint can't find BLERadio for some reason so special case it here.
25+
radio = adafruit_ble.BLERadio() # pylint: disable=no-member
26+
radio.name = "Now Playing Gizmo"
27+
a = SolicitServicesAdvertisement()
28+
a.solicited_services.append(AppleMediaService)
29+
radio.start_advertising(a)
30+
31+
def wrap_in_tilegrid(open_file):
32+
odb = displayio.OnDiskBitmap(open_file)
33+
return displayio.TileGrid(odb, pixel_shader=displayio.ColorConverter())
34+
35+
def make_background(width, height, color):
36+
color_bitmap = displayio.Bitmap(width, height, 1)
37+
color_palette = displayio.Palette(1)
38+
color_palette[0] = color
39+
40+
return displayio.TileGrid(color_bitmap,
41+
pixel_shader=color_palette,
42+
x=0, y=0)
43+
44+
def load_font(fontname, text):
45+
font = bitmap_font.load_font(fontname)
46+
font.load_glyphs(text.encode('utf-8'))
47+
return font
48+
49+
def make_label(text, x, y, color, max_glyphs=30, font=terminalio.FONT):
50+
if isinstance(font, str):
51+
font = load_font(font, "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz.,?()")
52+
text_area = Label(font, text=text, color=color, max_glyphs=max_glyphs)
53+
text_area.x = x
54+
text_area.y = y
55+
return text_area
56+
57+
def set_label(label, value, max_length):
58+
text = "{}".format(value)
59+
if len(text) > max_length:
60+
text = text[:max_length-3] + "..."
61+
label.text = text
62+
63+
def set_status(label, action_text, player):
64+
label.text = "{} on {}".format(action_text, player)
65+
_, _, label_width, _ = label.bounding_box
66+
label.x = display.width - 10 - label_width
67+
68+
display = tft_gizmo.TFT_Gizmo()
69+
group = displayio.Group(max_size=20)
70+
display.show(group)
71+
72+
while True:
73+
if not radio.connected:
74+
group.append(wrap_in_tilegrid(open("/graphic_tfts_ams_connect.bmp", "rb")))
75+
76+
while not radio.connected:
77+
pass
78+
79+
group.pop()
80+
print("connected")
81+
82+
known_notifications = set()
83+
84+
# Draw the text fields
85+
print("Loading Font Glyphs...")
86+
group.append(wrap_in_tilegrid(open("/graphic_tfts_ams_loading.bmp", "rb")))
87+
title_label = make_label("None", 12, 30, TEXT_COLOR, font="/fonts/Arial-Bold-18.bdf")
88+
artist_label = make_label("None", 12, 70, TEXT_COLOR, font="/fonts/Arial-16.bdf")
89+
album_label = make_label("None", 12, 184, TEXT_COLOR, font="/fonts/Arial-16.bdf")
90+
status_label = make_label("None", 80, 220, STATUS_COLOR, font="/fonts/Arial-16.bdf")
91+
group.pop()
92+
group.append(make_background(240, 240, BACKGROUND_COLOR))
93+
border = Rect(4, 4, 232, 200, outline=BORDER_COLOR, stroke=2)
94+
group.append(title_label)
95+
group.append(artist_label)
96+
group.append(album_label)
97+
group.append(status_label)
98+
group.append(border)
99+
100+
while radio.connected:
101+
try:
102+
for connection in radio.connections:
103+
if not connection.paired:
104+
connection.pair()
105+
print("paired")
106+
107+
ams = connection[AppleMediaService]
108+
set_label(title_label, ams.title, 18)
109+
set_label(album_label, ams.album, 21)
110+
set_label(artist_label, ams.artist, 21)
111+
action = "?"
112+
if ams.playing:
113+
action = "Playing"
114+
elif ams.paused:
115+
action = "Paused"
116+
set_status(status_label, action, ams.player_name)
117+
if cp.button_a:
118+
ams.toggle_play_pause()
119+
time.sleep(0.1)
120+
121+
if cp.button_b:
122+
if cp.switch:
123+
ams.previous_track()
124+
else:
125+
ams.next_track()
126+
time.sleep(0.1)
127+
except (RuntimeError, UnsupportedCommand):
128+
# Skip Bad Packets, unknown commands, etc.
129+
pass
130+
131+
print("disconnected")
132+
# Remove all layers
133+
while len(group):
134+
group.pop()

0 commit comments

Comments
 (0)