Overview

The Adafruit Feather series gives you lots of options for a small, portable, rechargeable microcontroller board. Perfect for fitting into your next prop build! This FeatherWing will unlock the prop-maker inside all of us, with tons of stuff packed in to make sabers & swords, props, toys, cosplay pieces, and more.

We looked at hundreds of prop builds, and thought about what would make for a great low-cost (but well-designed) add-on for our Feather boards. Here's what we came up with:

  • Snap-in NeoPixel port - With a 3-pin JST connector, you can plug in one of our JST-wired NeoPixel strips directly, or use a 3-pin JST connector to wire up your favorite shape of addressable NeoPixel LEDs. This port provides high current drive from either the Feather Lipoly or USB port, whichever is higher. A level shifter gives you a clean voltage signal to reduce glitchiness no matter what chip you're using
  • 3W RGB LED drivers - 3 high current MOSFETs will let you connect a 3W RGB LED for powerful eye-blasting glory. For most Feathers, the 3 pins are PWM capable so you can generate any color you like. Available as pin breakouts plus strain-relief holes
  • Triple-Axis Accelerometer with Tap Detection - The LIS3DH is our favorite accelerometer, you can use this for detection motion, tilt or taps. Here's an example of a light saber that makes sounds when swung or hit. We have code for this chip in both Arduino and CircuitPython.
  • Class D Audio Amplifier - Drive a 8Ω 1Watt speaker or 4Ω 3W speaker for sound effects. Plug and play with our cute and slim oval speaker, or connect a picoblade cable for your favorite speaker. For use only with Feathers that have analog audio out such as the Feather M0 Express and M4 series.
  • Low power mode! The power system for the RGB LED, NeoPixels and speaker amplifier can be controlled by a pin to cut power to them, so you have lower power usage when the prop is in sleep or off mode (but can wake up fast by listening to the button press or accelerometer data). When the power pin is set low, the current draw for just the wing is under 1mA and no there's current draw from any attached NeoPixels - normally they're about 1mA even when not lit.
  • Breakouts plus strain-relief hole for the enable pin and ground (for a mechanical switch that will power down the whole board)
  • Breakouts plus strain-relief holes for an external switch pin and ground (for a mechanical mode button)

Please note: A few of the onboard hardware elements use PWM and analog output so we recommend the Feather M0 Express or Feather M4 series, they'll work best with this wing and let you make the most of it. For example:

  • Feather 32u4 and 328p do not have PWMs for all the RGB LED pins, and no analog audio output support
  • Feather nRF52, ESP32 ESP8266 do have PWMs on all the RGB LED pins but no analog audio output support
  • Feather M0 basic boards only have audio output support in Arduino, not CircuitPython.

That doesn't mean you can't use this 'wing with the Feather ESP8266 or nRF52832, just that you won't get any sound effects. You can still use the accelerometer, NeoPixels, RGB LED, etc.

As you can tell, the M0 Express and M4 series is what we recommend cause you'll get everything and with CircuitPython, its really easy to play audio directly off the built in flash chips!

Comes as an assembled wing with some headers. Some light soldering is required to attach to your Feather.

Pinouts

The Adafruit Prop-Maker FeatherWing is designed to unlock the prop-maker inside all of us, with tons of stuff packed in to make sabers & swords, props, toys, cosplay pieces, and more.

Let's take a tour of the board!

Logic Pins

These are the logic pins used by the FeatherWing.

We note the Feather M0 and M4 pin numbers these are connected but other Feather variants will have different pin numbers! Check your Feather silkscreen or documentation to check!

Bottom Row

  • A0 - This pin is true analog input to the audio amplifier on the FeatherWing. Matches A0 on the Feather M0's and M4's which is the DAC output. Other Feathers (like the ESP8266) don't have a DAC so you can leave this pin unused

Top Row

  • Blue - Blue pin for 3W RGB LED - connected through a MOSFET. Connected to D13 on Feather M0 or M4.
  • Green - Green pin for 3W RGB LED - connected through a MOSFET. Connected to D12 on Feather M0 or M4.
  • Red - Red pin for 3W RGB LED - connected through a MOSFET. Connected to D11 on Feather M0 or M4.
  • Power (PWR) - This pin is used to enable power to the NeoPixels, audio amplifier and RGB LED. By default it is pulled low so you must set high to turn on the NeoPixels/Audio/RGB. Connected to D10 on Feather M0 or M4.
  • Switch (SW) - This is connected to the Switch pin, for button or switch sensing. There's no pullup resistor so you'll have to Connected to D9 on Feather M0 or M4.
  • IRQ - Interrupt pin for LIS3DH accelerometer, used for tap or shake detection. Connected to D6 on Feather M0 or M4.
  • NeoPixel (NEO) - Data pin for NeoPixel connector. This pin is level shifted to 5V output. Connected to D5 on Feather M0 or M4.
  • SCL - I2C clock pin. Connected to SCL on the Feather. This pin is used to control the onboard I2C accelerometer
  • SDA - I2C data pin. Connected to SDA on the Feather. This pin is used to control the onboard I2C accelerometer

The top row pins are labeled on the back of the board!

Power Pins

Top Row

  • VBAT - Connected to BAT power on the Feather.
  • Enable - Enable pin for switch that will power down entire board.
  • VBUS - Connected to USB power on Feather.
  • Power (PWR) - This pin is used to enable power to the NeoPixels, audio amplifier and RGB LED. By default it is pulled low so you must set high to turn on the NeoPixels/Audio/RGB. Connected to D10 on Feather M0 or M4.

Bottom Row

  • Reset pin - Tie to ground to reset the Feather
  • 3.3V pin- 3.3V output from the Feather's regulator

Left Side

  • RESET button - Resets the Feather and the FeatherWing.

The pins on the left above the RESET button are for a mechanical switch that will power down the whole board.

  • G - Ground pin for mechanical switch
  • EN - Enable pin, connected to the Enable pin on the Feather. Connect this pin to ground to completely turn off the Feather and FeatherWing (e.g. a power switch)

NeoPixel Connector

This is the Snap-In NeoPixel port! With a 3-pin JST connector, you can plug in one of our JST-wired NeoPixel strips directly, or use a 3-pin JST connector to wire up your favorite shape of addressable NeoPixel LEDs. This port provides high current drive from either the Feather Lipoly or USB port, whichever is higher. A level shifter gives you a clean voltage signal to reduce glitchiness no matter what chip you're using!

The pinout for the connector is labeled on the back of the board.

Note you must set the PWR pin high (D10 on M0 or M4 Feathers) to turn on the NeoPixel power pin!

Audio

The Prop-Maker FeatherWing includes a audio connector for a 8Ω 1Watt speaker or 4Ω 3Watt speaker for sound effects. Plug and play with our cute and slim oval speaker, or connect a picoblade cable for your favorite speaker.

The connector uses pin A0. There also volume control on the board between A0 and the speaker connector. Rotate it to increase or decrease the audio volume from the connected speaker!

Note you must set the PWR pin high (D10 on M0 or M4 Feathers) to turn on the audio amplifier power pin!

For use only with Feathers that have analog audio out such as the Feather M0 Express and M4 series.

3 Watt LED

3 high current MOSFETs will let you connect a 3W RGB LED for powerful eye-blasting glory. For most Feathers, the 3 pins are PWM capable so you can generate any color you like. Available as pin breakouts plus strain-relief holes. The pin labels are also on the back of the board.

  • B (Blue) - Connect to B pin on LED. Uses D13 on the Feather M0 or M4.
  • G (Green) - Connect to the G pin on LED. Uses D13 on the Feather M0 or M4.
  • R (Red) - Connect to the R pin on the LED. Uses D13 on the Feather M0 or M4.
  • + (V+) - Connect to the power (+) pin on the LED.

Note you must set the PWR pin high (D10 on M0 or M4 Feathers) to turn on the V+ power pin!

Switch Pins

External switch pins for a mechanical switch.

  • SW (Switch) - Connected to D9 on the Feather M0 or M4
  • - (Gnd) -

CircuitPython Code

The Prop-Maker FeatherWing is loaded with features to help with your next build. Here, we'll go over how to use each of the features in CircuitPython. We'll provide a simple example that you can expand on to include it in your project. Save the code to code.py on your board to run the example!

NeoPixels

CircuitPython makes it super simple to use the NeoPIxels connected via the snap-in NeoPixel connector on the Prop-Maker FeatherWing.

This example lights up a 30-pixel NeoPixel strip in a rainbow. Change NUM_PIXELS to match the number of NeoPixels you've connected to your FeatherWing.

"""Simple rainbow example for 30-pixel NeoPixel strip"""
import digitalio
import board
import neopixel

NUM_PIXELS = 30  # NeoPixel strip length (in pixels)

enable = digitalio.DigitalInOut(board.D10)
enable.direction = digitalio.Direction.OUTPUT
enable.value = True

strip = neopixel.NeoPixel(board.D5, NUM_PIXELS, brightness=1)


def wheel(pos):
    # Input a value 0 to 255 to get a color value.
    # The colours are a transition r - g - b - back to r.
    if pos < 0 or pos > 255:
        return (0, 0, 0)
    if pos < 85:
        return (255 - pos * 3, pos * 3, 0)
    if pos < 170:
        pos -= 85
        return (0, 255 - pos * 3, pos * 3)
    pos -= 170
    return (pos * 3, 0, 255 - pos * 3)


while True:
    for i in range(255):
        strip.fill((wheel(i)))

For more information, check out the Adafruit NeoPixel Überguide!

Audio

The speaker connector on the Prop-Maker FeatherWing makes it easy to attach a speaker to playback audio for your project.

This example only works on Feathers that have analog audio out, such as the Feather M0 Express or Feather M4.

This example plays once through a wave file called "StreetChicken.wav". Click the button below to download the file and copy it to your board. You can also add any compatible wave file and change the code to match the name of your file.

"""Simple example to play a wave file"""
# This example only works on Feathers that have analog audio out!
import digitalio
import board
import audioio

WAV_FILE_NAME = "StreetChicken.wav"  # Change to the name of your wav file!

enable = digitalio.DigitalInOut(board.D10)
enable.direction = digitalio.Direction.OUTPUT
enable.value = True

with audioio.AudioOut(board.A0) as audio:  # Speaker connector
    wave_file = open(WAV_FILE_NAME, "rb")
    wave = audioio.WaveFile(wave_file)

    audio.play(wave)
    while audio.playing:
        pass

For more information, check out Audio Out in the CircuitPython Essentials Guide!

Accelerometer

You can easily access the acceleration data from the LIS3DH accelerometer in the center of the Prop-Maker FeatherWing using CircuitPython.

This example prints the acceleration data to the serial console. Move the board around to see the values change.

"""Simple example to print acceleration data to console"""
import time
import digitalio
import board
import busio
import adafruit_lis3dh

# Set up accelerometer on I2C bus, 4G range:
i2c = busio.I2C(board.SCL, board.SDA)
int1 = digitalio.DigitalInOut(board.D5)
accel = adafruit_lis3dh.LIS3DH_I2C(i2c, int1=int1)
accel.range = adafruit_lis3dh.RANGE_4_G
accel.set_tap(1, 100)

while True:
    x, y, z = accel.acceleration
    print(x, y, z)
    time.sleep(0.1)
    if accel.tapped:
        print("Tapped!")

For more information, check out the LIS3DH guide!

3 Watt LED

You can control the colors and brightness of a 3 Watt RGB LED using CircuitPython.

This example uses PWM to light up the LED with a rainbow swirl.

"""Simple rainbow swirl example for 3W LED"""
import pulseio
import board
import digitalio

enable = digitalio.DigitalInOut(board.D10)
enable.direction = digitalio.Direction.OUTPUT
enable.value = True

red = pulseio.PWMOut(board.D11, duty_cycle=0, frequency=20000)
green = pulseio.PWMOut(board.D12, duty_cycle=0, frequency=20000)
blue = pulseio.PWMOut(board.D13, duty_cycle=0, frequency=20000)


def wheel(pos):
    # Input a value 0 to 255 to get a color value.
    # The colours are a transition r - g - b - back to r.
    if pos < 0 or pos > 255:
        return (0, 0, 0)
    if pos < 85:
        return (255 - pos * 3, pos * 3, 0)
    if pos < 170:
        pos -= 85
        return (0, 255 - pos * 3, pos * 3)
    pos -= 170
    return (pos * 3, 0, 255 - pos * 3)


while True:
    for i in range(255):
        r, g, b = wheel(i)
        red.duty_cycle = int(r * 65536 / 256)
        green.duty_cycle = int(g * 65536 / 256)
        blue.duty_cycle = int(b * 65536 / 256)

For more information, check out PWM in the CircuitPython Essentials Guide!

Switch

You can easily use the mechanical switch on the Switch pin with CircuitPython.

The following example prints to the serial console when the switch is closed.

"""Simple example to print when switch is pressed"""
import time
import digitalio
import board

switch = digitalio.DigitalInOut(board.D9)
switch.switch_to_input(pull=digitalio.Pull.UP)

while True:
    if not switch.value:
        print("Switch pressed!")
    time.sleep(0.1)

Downloads

This guide was first published on Jan 23, 2019. It was last updated on Jan 23, 2019.