Setting each gem's two LEDs to different hue and brightness values creates color gradients across the gem. The QT Py's CircuitPython code gradually changes the hues with time to display all colors in the spectrum. The code also brightens and fades each LED alternately which make the colors appear to slide from side to side.
Be sure to have the latest version of CircuitPython installed on your QT Py. The board ships with CircuitPython ready to go, so unless you've already coded it in some other language, the demo code below will run. If you need to update or re-install CircuitPython, follow these instructions.
The following CircuitPython libraries should be placed in the lib folder on the QT Py for the demo program to work - see this page for more on libraries for the QT Py:
- neopixel
- adafruit_pypixelbuf
- adafruit_bus_device
Save the program below by clicking the link for code.py. Copy the file onto the the QT Py CIRCUITPY drive. The code should run after copying - enjoy watching the colors blend!
# SPDX-FileCopyrightText: 2020 Anne Barela for Adafruit Industries # # SPDX-License-Identifier: MIT # Demo code to generate an alternating color-gradient effect in # the QT Py LED cuff bracelet LEDs. import time import board from rainbowio import colorwheel import neopixel # Total number of LEDs on both strips NUM_PIXELS = 14 pixels = neopixel.NeoPixel(board.MOSI, NUM_PIXELS, pixel_order=neopixel.GRB, auto_write=False, brightness = 0.4 ) # Scales a tuple by a fraction of 255 def scale(tup, frac): return tuple((x*frac)//255 for x in tup) # Sawtooth function with amplitude and period of 255 def sawtooth(x): return int(2*(127.5 - abs((x % 255) - 127.5))) # Hue value at the opposite side of the color colorwheel def oppositeHue(x): return ((x + 128) % 256) hueIndex = 0 # determines hue value (0->255) brightnessIndex = 0 # input to the sawtooth function for determining brightness (0->255) brightnessSpeed = 3 # bigger value = faster shifts in brightness while True: bright = sawtooth(brightnessIndex) # get RGB color from colorwheel function and scale it by the brightness mainColor = scale(colorwheel(hueIndex),bright) oppColor = scale(colorwheel(oppositeHue(hueIndex)), 255 - bright) # hue and brightness alternate along each strip for i in range(NUM_PIXELS//2): pixels[i*2] = mainColor pixels[i*2 + 1] = oppColor pixels.show() # increment hue and brightness hueIndex = (hueIndex + 1) % 255 brightnessIndex = (brightnessIndex + brightnessSpeed) % 255
For more information and additional LED code examples for the QT Py, check out the LED Animations with QT Py Haxpress Learn Guide
Page last edited January 22, 2025
Text editor powered by tinymce.