Add an asyncio example with a fancy precomputed qr code
This commit is contained in:
parent
ee4d7dfcaa
commit
d15c90b87e
3 changed files with 91 additions and 0 deletions
BIN
examples/QR_Blinka_CircuitPythonOrg.bmp
Normal file
BIN
examples/QR_Blinka_CircuitPythonOrg.bmp
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 38 KiB |
3
examples/QR_Blinka_CircuitPythonOrg.bmp.license
Normal file
3
examples/QR_Blinka_CircuitPythonOrg.bmp.license
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
# SPDX-FileCopyrightText: 2021 ladyada for Adafruit Industries
|
||||
#
|
||||
# SPDX-License-Identifier: CC-BY-SA-4.0
|
||||
88
examples/pybadger_pygamer_asyncio.py
Normal file
88
examples/pybadger_pygamer_asyncio.py
Normal file
|
|
@ -0,0 +1,88 @@
|
|||
# SPDX-FileCopyrightText: 2022 Jeff Epler for Adafruit Industries
|
||||
# SPDX-License-Identifier: MIT
|
||||
|
||||
# pylint: disable=consider-using-with
|
||||
|
||||
import asyncio
|
||||
from displayio import TileGrid, OnDiskBitmap, Group
|
||||
from rainbowio import colorwheel
|
||||
from adafruit_pybadger import pybadger
|
||||
|
||||
# If you choose to enter a pronoun it's shown on the "business card" page
|
||||
pronoun = ""
|
||||
custom_line1 = "FIRST"
|
||||
custom_line2 = "LAST" # also a great place to show a pronoun
|
||||
|
||||
# Set up the custom image
|
||||
qr_image = OnDiskBitmap(open("/QR_Blinka_CircuitPythonOrg.bmp", "rb"))
|
||||
qr_tg = TileGrid(qr_image, pixel_shader=qr_image.pixel_shader)
|
||||
qr_gp = Group()
|
||||
qr_gp.append(qr_tg)
|
||||
|
||||
pybadger.badge_background(
|
||||
background_color=pybadger.WHITE,
|
||||
rectangle_color=pybadger.PURPLE,
|
||||
rectangle_drop=0.25,
|
||||
rectangle_height=0.55,
|
||||
)
|
||||
|
||||
pybadger.badge_line(
|
||||
text="HELLO I'M", color=pybadger.BLINKA_PURPLE, scale=2, padding_above=1
|
||||
)
|
||||
pybadger.badge_line(text=custom_line1, color=pybadger.WHITE, scale=6, padding_above=1)
|
||||
pybadger.badge_line(
|
||||
text=custom_line2, color=pybadger.BLINKA_PURPLE, scale=2, padding_above=0.25
|
||||
)
|
||||
|
||||
# Start with the custom badge page
|
||||
pybadger.show_custom_badge()
|
||||
|
||||
# This task responds to buttons and changes the visible page
|
||||
async def ui_task():
|
||||
while True:
|
||||
if pybadger.button.a:
|
||||
pybadger.show_business_card(
|
||||
image_name="Blinka.bmp",
|
||||
name_string="Jeff Epler",
|
||||
name_scale=2,
|
||||
email_string_one="jeff@adafruit.com",
|
||||
email_string_two=pronoun,
|
||||
)
|
||||
elif pybadger.button.b:
|
||||
pybadger.show(qr_gp)
|
||||
elif pybadger.button.start:
|
||||
pybadger.show_custom_badge()
|
||||
elif pybadger.button.select:
|
||||
pybadger.activity()
|
||||
else:
|
||||
pybadger.auto_dim_display(
|
||||
delay=0.5
|
||||
) # Remove or comment out this line if you have the PyBadge LC
|
||||
await asyncio.sleep(0.02)
|
||||
|
||||
|
||||
# This task animates the LEDs
|
||||
async def led_task():
|
||||
pixels = pybadger.pixels
|
||||
pixels.auto_write = False
|
||||
num_pixels = len(pixels)
|
||||
j = 0
|
||||
while True:
|
||||
bright = pybadger.display.brightness > 0.5
|
||||
j = (j + (7 if bright else 3)) & 255
|
||||
b = 31 / 255.0 if bright else 5 / 255.0
|
||||
if pixels.brightness != b:
|
||||
pixels.brightness = b
|
||||
for i in range(num_pixels):
|
||||
rc_index = i * 97 + j
|
||||
pixels[i] = colorwheel(rc_index & 255)
|
||||
pixels.show()
|
||||
await asyncio.sleep(0.02)
|
||||
|
||||
|
||||
# Run both tasks via asyncio!
|
||||
async def main():
|
||||
await asyncio.gather(ui_task(), led_task())
|
||||
|
||||
|
||||
asyncio.run(main())
|
||||
Loading…
Reference in a new issue