To use with CircuitPython, you need to first install a few libraries, into the lib folder on your CIRCUITPY drive. Then you need to update code.py with the example script.
Thankfully, we can do this in one go. In the example below, click the Download Project Bundle button below to download the .STL file, the necessary libraries, and the code.py file in a zip file. Extract the contents of the zip file, open the directory NeoPixel_Frankenstein/ and then click on the directory that matches the version of CircuitPython you're using and copy code.py and the lib/ directory to your CIRCUITPY drive.
CIRCUITPY
# SPDX-FileCopyrightText: 2020 Liz Clark for Adafruit Industries
#
# SPDX-License-Identifier: MIT
import time
import board
import touchio
import neopixel
from adafruit_led_animation.animation.pulse import Pulse
from adafruit_led_animation.color import (
RED,
YELLOW,
ORANGE,
GREEN,
TEAL,
CYAN,
BLUE,
PURPLE,
MAGENTA,
GOLD,
PINK,
AQUA,
JADE,
AMBER
)
# NeoPixel pin
pixel_pin = board.A3
# number of NeoPixels
pixel_num = 68
# NeoPixels setup
pixels = neopixel.NeoPixel(pixel_pin, pixel_num, brightness=0.5, auto_write=False)
# animation setup
pulse = Pulse(pixels, speed=0.1, color=RED, period=5)
# two cap touch pins
touch_left = board.A1
touch_right = board.A2
# cap touch setup
bolt_left = touchio.TouchIn(touch_left)
bolt_right = touchio.TouchIn(touch_right)
# NeoPixel colors for animation
colors = [RED, YELLOW, ORANGE, GREEN, TEAL, CYAN, BLUE,
PURPLE, MAGENTA, GOLD, PINK, AQUA, JADE, AMBER]
# variable for color array index
c = 0
# debounce states for cap touch
bolt_left_state = False
bolt_right_state = False
while True:
# run animation
pulse.animate()
# debounce for cap touch
if not bolt_left.value and not bolt_left_state:
bolt_left_state = True
if not bolt_right.value and not bolt_right_state:
bolt_right_state = True
# if the left bolt is touched...
if bolt_left.value and bolt_left_state:
print("Touched left bolt!")
# increase color array index by 1
c += 1
# reset debounce state
bolt_left_state = False
# if the right bolt is touched...
if bolt_right.value and bolt_right_state:
print("Touched right bolt!")
# decrease color array index by 1
c -= 1
# reset debounce state
bolt_right_state = False
# if the color array index is bigger than 13...
if c > 13:
# reset it to 0
c = 0
# if the color array index is smaller than 0...
if c < 0:
# reset it to 13
c = 13
# update animation color to current array index
pulse.color = colors[c]
time.sleep(0.01)
Page last edited January 19, 2025
Text editor powered by tinymce.