Simple tests¶
Ensure your device works with this simple test.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | # SPDX-FileCopyrightText: 2021 ladyada for Adafruit Industries
# SPDX-License-Identifier: MIT
""" Example to print out the voltage and current using the INA219 """
import time
from adafruit_featherwing import ina219_featherwing
INA219 = ina219_featherwing.INA219FeatherWing()
while True:
print("Bus Voltage: {} V".format(INA219.bus_voltage))
print("Shunt Voltage: {} V".format(INA219.shunt_voltage))
print("Voltage: {} V".format(INA219.voltage))
print("Current: {} mA".format(INA219.current))
print("")
time.sleep(0.5)
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | # SPDX-FileCopyrightText: 2021 ladyada for Adafruit Industries
# SPDX-License-Identifier: MIT
"""This example zeros the joystick, and prints when the joystick moves
or the buttons are pressed."""
import time
from adafruit_featherwing import joy_featherwing
wing = joy_featherwing.JoyFeatherWing()
last_x = 0
last_y = 0
while True:
x, y = wing.joystick
if (abs(x - last_x) > 3) or (abs(y - last_y) > 3):
last_x = x
last_y = y
print(x, y)
if wing.button_a:
print("Button A!")
if wing.button_b:
print("Button B!")
if wing.button_x:
print("Button X!")
if wing.button_y:
print("Button Y!")
if wing.button_select:
print("Button SELECT!")
time.sleep(0.01)
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | # SPDX-FileCopyrightText: 2021 ladyada for Adafruit Industries
# SPDX-License-Identifier: MIT
"""This example changes the fill, brightness, blink rates,
shows number and text printing, displays a counter
and then shows off the new marquee features."""
from time import sleep
from adafruit_featherwing import alphanum_featherwing
display = alphanum_featherwing.AlphaNumFeatherWing()
# Fill and empty all segments
for count in range(0, 3):
display.fill(True)
sleep(0.5)
display.fill(False)
sleep(0.5)
# Display a number and text
display.print(1234)
sleep(1)
display.print("Text")
# Change brightness
for brightness in range(0, 16):
display.brightness = brightness
sleep(0.1)
# Change blink rate
for blink_rate in range(3, 0, -1):
display.blink_rate = blink_rate
sleep(4)
display.blink_rate = 0
# Show a counter using decimals
count = 975.0
while count < 1025:
count += 1
display.print(count)
sleep(0.1)
# Show the Marquee
display.marquee("This is a really long message!!! ", 0.2)
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 | # SPDX-FileCopyrightText: 2021 ladyada for Adafruit Industries
# SPDX-License-Identifier: MIT
"""
This plays various animations
and then draws random pixels at random locations
"""
from time import sleep
import random
from adafruit_featherwing import dotstar_featherwing
dotstar = dotstar_featherwing.DotStarFeatherWing()
# HELPERS
# a random color 0 -> 224
def random_color():
return random.randrange(0, 8) * 32
# Fill screen with random colors at random brightnesses
for i in range(0, 5):
dotstar.fill((random_color(), random_color(), random_color()))
dotstar.brightness = random.randrange(2, 10) / 10
sleep(0.2)
# Set display to 30% brightness
dotstar.brightness = 0.3
# Create a gradiant drawing each pixel
for x in range(0, dotstar.columns):
for y in range(dotstar.rows - 1, -1, -1):
dotstar[x, y] = (y * 42, 255, y * 42, 1)
# Rotate everything left 36 frames
for i in range(0, 36):
dotstar.shift_down(True)
# Draw dual gradiant and then update
dotstar.auto_write = False
for y in range(0, dotstar.rows):
for x in range(0, 6):
dotstar[x, y] = (y * 84, x * 42, x * 42, 1)
for x in range(6, 12):
dotstar[x, y] = (255 - (y * 84), 255 - ((x - 6) * 42), 255 - ((x - 6) * 42), 1)
# Rotate everything left 36 frames
for i in range(0, 36):
dotstar.shift_left(True)
dotstar.shift_up(True)
dotstar.show()
dotstar.auto_write = True
# Shift pixels without rotating for an animated screen wipe
for i in range(0, 6):
dotstar.shift_down()
# Show pixels in random locations of random color
# Bottom left corner is (0,0)
while True:
x = random.randrange(0, dotstar.columns)
y = random.randrange(0, dotstar.rows)
dotstar[x, y] = (random_color(), random_color(), random_color())
sleep(0.1)
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 | # SPDX-FileCopyrightText: 2021 ladyada for Adafruit Industries
# SPDX-License-Identifier: MIT
"""
This example plays various animations
and then draws random pixels at random locations
"""
from time import sleep
import random
from adafruit_featherwing import neopixel_featherwing
neopixel = neopixel_featherwing.NeoPixelFeatherWing()
# HELPERS
# a random color 0 -> 224
def random_color():
return random.randrange(0, 8) * 32
# Fill screen with random colors at random brightnesses
for i in range(0, 5):
neopixel.fill((random_color(), random_color(), random_color()))
neopixel.brightness = random.randrange(2, 10) / 10
sleep(0.2)
# Set display to 30% brightness
neopixel.brightness = 0.3
# Create a gradiant drawing each pixel
for x in range(0, neopixel.columns):
for y in range(neopixel.rows - 1, -1, -1):
neopixel[x, y] = (y * 63, 255, y * 63)
# Rotate everything left 36 frames
for i in range(0, 36):
neopixel.shift_down(True)
sleep(0.1)
# Draw dual gradiant and then update
# neopixel.auto_write = False
for y in range(0, neopixel.rows):
for x in range(0, 4):
neopixel[x, y] = (y * 16 + 32, x * 8, 0)
for x in range(4, 8):
neopixel[x, y] = ((4 - y) * 16 + 32, (8 - x) * 8, 0)
neopixel.show()
# Rotate everything left 36 frames
for i in range(0, 36):
neopixel.shift_left(True)
neopixel.shift_up(True)
neopixel.show()
sleep(0.1)
neopixel.auto_write = True
# Shift pixels without rotating for an animated screen wipe
for i in range(0, neopixel.rows):
neopixel.shift_down()
sleep(0.4)
# Show pixels in random locations of random color
# Bottom left corner is (0,0)
while True:
x = random.randrange(0, neopixel.columns)
y = random.randrange(0, neopixel.rows)
neopixel[x, y] = (random_color(), random_color(), random_color())
sleep(0.1)
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | # SPDX-FileCopyrightText: 2021 ladyada for Adafruit Industries
# SPDX-License-Identifier: MIT
"""This example changes the fill, brightness, blink rates,
shows number and text printing, displays a counter
and then shows off the new marquee features."""
from time import sleep
from adafruit_featherwing import sevensegment_featherwing
display = sevensegment_featherwing.SevenSegmentFeatherWing()
# Fill and empty all segments
for count in range(0, 3):
display.fill(True)
sleep(0.5)
display.fill(False)
sleep(0.5)
# Display a number and text
display.print(1234)
sleep(1)
display.print("FEED")
# Change brightness
for brightness in range(0, 16):
display.brightness = brightness
sleep(0.1)
# Change blink rate
for blink_rate in range(3, 0, -1):
display.blink_rate = blink_rate
sleep(4)
display.blink_rate = 0
# Show a counter using decimals
count = 975.0
while count < 1025:
count += 1
display.print(count)
sleep(0.1)
# Display a Time
hour = 12
for minute in range(15, 26):
display.print("{}:{}".format(hour, minute))
sleep(1)
# Show the Marquee
display.marquee("Deadbeef 192.168.100.102... ", 0.2)
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | # SPDX-FileCopyrightText: 2021 ladyada for Adafruit Industries
# SPDX-License-Identifier: MIT
"""
This example will allow you to set the date and time
and then loop through and display the current time
"""
import time
from adafruit_featherwing import rtc_featherwing
days = ("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday")
# Create the RTC instance:
rtc = rtc_featherwing.RTCFeatherWing()
# pylint: disable-msg=using-constant-test
if True: # Change this to True to set the date and time
rtc.set_time(13, 34) # Set the time (seconds are optional)
print(rtc.now)
rtc.set_date(16, 1, 2016) # Set the date
print(rtc.now)
rtc.year = 2019 # Set just the Year
print(rtc.now)
rtc.month = 2 # Set Just the Month
print(rtc.now)
rtc.hour = 16 # Set just the hour
print(rtc.now)
rtc.weekday = 6 # Set just the day of the week (Sunday = 0)
print(rtc.now)
rtc.unixtime = 1550335257 # Or set the date and time with a unix timestamp
# Main loop:
while True:
now = rtc.now
print(
"The date is {} {}/{}/{}".format(
days[now.weekday], now.day, now.month, now.year
)
)
print("The time is {}:{:02}:{:02}".format(now.hour, now.minute, now.second))
print("The UNIX timestamp is {}".format(rtc.unixtime))
print("The number of days in the current month is {}".format(rtc.get_month_days()))
if rtc.is_leap_year():
print("This year is a leap year")
else:
print("This year is not a leap year")
time.sleep(1) # wait a second
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 | # SPDX-FileCopyrightText: 2021 ladyada for Adafruit Industries
# SPDX-License-Identifier: MIT
"""
This example will connect to the GPS at the default 9600 baudrate and
update once per second. Initialization is automatically handled and there
are some additional features such as MPH and KPH calculations.
"""
import time
from adafruit_featherwing import gps_featherwing
# Create a GPS featherwing instance.
gps = gps_featherwing.GPSFeatherWing()
# Main loop runs forever printing the location, etc. every second.
last_print = time.monotonic()
while True:
# Make sure to call gps.update() every loop iteration and at least twice
# as fast as data comes from the GPS unit (usually every second).
# This returns a bool that's true if it parsed new data (you can ignore it
# though if you don't care and instead look at the has_fix property).
gps.update()
# Every second print out current location details if there's a fix.
current = time.monotonic()
if current - last_print >= 1.0:
last_print = current
if not gps.has_fix:
# Try again if we don't have a fix yet.
print("Waiting for fix...")
continue
# Print out details about the fix like location, date, etc.
print("=" * 40) # Print a separator line.
print(
"Fix timestamp: {}/{}/{} {:02}:{:02}:{:02}".format(
gps.timestamp.tm_mon, # Grab parts of the time from the
gps.timestamp.tm_mday, # struct_time object that holds
gps.timestamp.tm_year, # the fix time. Note you might
gps.timestamp.tm_hour, # not get all data like year, day,
gps.timestamp.tm_min, # month!
gps.timestamp.tm_sec,
)
)
print("Latitude: {0:.6f} degrees".format(gps.latitude))
print("Longitude: {0:.6f} degrees".format(gps.longitude))
print("Fix quality: {}".format(gps.fix_quality))
# Some attributes beyond latitude, longitude and timestamp are optional
# and might not be present. Check if they're None before trying to use!
if gps.satellites is not None:
print("# satellites: {}".format(gps.satellites))
if gps.altitude is not None:
print("Altitude: {} meters".format(gps.altitude))
if gps.speed_knots is not None:
print("Speed (Knots): {} knots".format(gps.speed_knots))
if gps.speed_mph is not None:
print("Speed (Miles Per Hour): {} MPH".format(gps.speed_mph))
if gps.speed_kph is not None:
print("Speed (KM Per Hour): {} KPH".format(gps.speed_kph))
if gps.track_angle is not None:
print("Track angle: {} degrees".format(gps.track_angle))
if gps.horizontal_dilution is not None:
print("Horizontal dilution: {}".format(gps.horizontal_dilution))
if gps.height_geoid is not None:
print("Height geo ID: {} meters".format(gps.height_geoid))
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 | # SPDX-FileCopyrightText: 2021 ladyada for Adafruit Industries
# SPDX-License-Identifier: MIT
"""
This example will demonstrate some graphic effects and then
draw a smiley face and shift it around the display
"""
import time
from adafruit_featherwing import matrix_featherwing
matrix = matrix_featherwing.MatrixFeatherWing()
# Create a Fade-in Effect
matrix.brightness = 0
matrix.fill(True)
for level in range(0, 16):
matrix.brightness = level
time.sleep(0.1)
# Show the different Blink Rates
for level in range(3, -1, -1):
matrix.blink_rate = level
time.sleep(4)
# Create a Fade-out Effect
for level in range(15, -1, -1):
matrix.brightness = level
time.sleep(0.1)
matrix.fill(False)
# Reset the brightness to full
matrix.brightness = 15
# Clear the Screen
matrix.fill(False)
# Draw a Smiley Face
for row in range(2, 6):
matrix[row, 0] = 1
matrix[row, 7] = 1
for column in range(2, 6):
matrix[0, column] = 1
matrix[7, column] = 1
matrix[1, 1] = 1
matrix[1, 6] = 1
matrix[6, 1] = 1
matrix[6, 6] = 1
matrix[2, 5] = 1
matrix[5, 5] = 1
matrix[2, 3] = 1
matrix[5, 3] = 1
matrix[3, 2] = 1
matrix[4, 2] = 1
# Move the Smiley Face Around
while True:
for frame in range(0, 8):
matrix.shift_right()
for frame in range(0, 8):
matrix.shift_down(True)
for frame in range(0, 8):
matrix.shift_left()
for frame in range(0, 8):
matrix.shift_up(True)
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | # SPDX-FileCopyrightText: 2021 ladyada for Adafruit Industries
# SPDX-License-Identifier: MIT
"""
This example display a CircuitPython console and
print which button that is being pressed if any
"""
import time
from adafruit_featherwing import minitft_featherwing
minitft = minitft_featherwing.MiniTFTFeatherWing()
while True:
buttons = minitft.buttons
if buttons.right:
print("Button RIGHT!")
if buttons.down:
print("Button DOWN!")
if buttons.left:
print("Button LEFT!")
if buttons.up:
print("Button UP!")
if buttons.select:
print("Button SELECT!")
if buttons.a:
print("Button A!")
if buttons.b:
print("Button B!")
time.sleep(0.001)
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | # SPDX-FileCopyrightText: 2021 ladyada for Adafruit Industries
# SPDX-License-Identifier: MIT
"""
This example will show the current temperature in the Serial Console
whenever the FeatherWing senses that it has been tapped
"""
import time
from adafruit_featherwing import tempmotion_featherwing
temp_motion = tempmotion_featherwing.TempMotionFeatherWing()
temp_motion.enable_tap_detection()
while True:
if temp_motion.events["tap"]:
print("The temperature is %f" % temp_motion.temperature)
time.sleep(1)
|
Other Examples¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 | # SPDX-FileCopyrightText: 2021 ladyada for Adafruit Industries
# SPDX-License-Identifier: MIT
"""
This creates a palette of colors, draws a pattern and
rotates through the palette creating a moving rainbow.
"""
from math import sqrt, cos, sin, radians
from adafruit_featherwing import dotstar_featherwing
dotstar = dotstar_featherwing.DotStarFeatherWing()
# Remap the calculated rotation to 0 - 255
def remap(vector):
return int(((255 * vector + 85) * 0.75) + 0.5)
# Calculate the Hue rotation starting with Red as 0 degrees
def rotate(degrees):
cosA = cos(radians(degrees))
sinA = sin(radians(degrees))
red = cosA + (1.0 - cosA) / 3.0
green = 1.0 / 3.0 * (1.0 - cosA) + sqrt(1.0 / 3.0) * sinA
blue = 1.0 / 3.0 * (1.0 - cosA) - sqrt(1.0 / 3.0) * sinA
return (remap(red), remap(green), remap(blue))
palette = []
pixels = []
# Generate a rainbow palette
for degree in range(0, 360):
color = rotate(degree)
palette.append(color[0] << 16 | color[1] << 8 | color[2])
# Create the Pattern
for y in range(0, dotstar.rows):
for x in range(0, dotstar.columns):
pixels.append(x * 30 + y * -30)
# Clear the screen
dotstar.fill()
# Start the Animation
dotstar.auto_write = False
while True:
for color in range(0, 360, 10):
for index in range(0, dotstar.rows * dotstar.columns):
palette_index = pixels[index] + color
if palette_index >= 360:
palette_index -= 360
elif palette_index < 0:
palette_index += 360
dotstar[index] = palette[palette_index]
dotstar.show()
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 | # SPDX-FileCopyrightText: 2021 ladyada for Adafruit Industries
# SPDX-License-Identifier: MIT
"""
This creates a palette of colors, draws a pattern and
rotates through the palette creating a moving rainbow.
"""
from math import sqrt, cos, sin, radians
from adafruit_featherwing import neopixel_featherwing
neopixel = neopixel_featherwing.NeoPixelFeatherWing()
# Remap the calculated rotation to 0 - 255
def remap(vector):
return int(((255 * vector + 85) * 0.75) + 0.5)
# Calculate the Hue rotation starting with Red as 0 degrees
def rotate(degrees):
cosA = cos(radians(degrees))
sinA = sin(radians(degrees))
red = cosA + (1.0 - cosA) / 3.0
green = 1.0 / 3.0 * (1.0 - cosA) + sqrt(1.0 / 3.0) * sinA
blue = 1.0 / 3.0 * (1.0 - cosA) - sqrt(1.0 / 3.0) * sinA
return (remap(red), remap(green), remap(blue))
palette = []
pixels = []
# Generate a rainbow palette
for degree in range(0, 360):
color = rotate(degree)
palette.append(color[0] << 16 | color[1] << 8 | color[2])
# Create the Pattern
for y in range(0, neopixel.rows):
for x in range(0, neopixel.columns):
pixels.append(x * 30 + y * -30)
# Clear the screen
neopixel.fill()
# Start the Animation
neopixel.auto_write = False
while True:
for color in range(0, 360, 10):
for index in range(0, neopixel.rows * neopixel.columns):
palette_index = pixels[index] + color
if palette_index >= 360:
palette_index -= 360
elif palette_index < 0:
palette_index += 360
neopixel[index] = palette[palette_index]
neopixel.show()
|