Cirkit Designer LogoCirkit DesignerYour all-in-one circuit design IDE Launch Cirkit Designer App

Battery-Powered Adafruit Flora RGB NeoPixel Light Show

View and Edit Project In Cirkit DesignerImage of Battery-Powered Adafruit Flora RGB NeoPixel Light Show

Circuit Documentation

Summary

This circuit consists of an Adafruit Flora v3 microcontroller, a Breadboard-friendly RGB Smart NeoPixel, and a 3xAAA Battery Pack with Switch and JST. The circuit is designed to power and control the NeoPixel using the Flora v3, with the battery pack providing the necessary power. The Flora v3 runs a program to control the NeoPixel, displaying various colors and patterns.

Component List

Adafruit Flora v3

Breadboard-friendly RGB Smart NeoPixel

3xAAA Battery Pack with Switch and JST

Wiring Details

Adafruit Flora v3

Breadboard-friendly RGB Smart NeoPixel

3xAAA Battery Pack with Switch and JST

Code Documentation

Code Overview

The code for the Adafruit Flora v3 initializes the NeoPixel and runs a loop to display various colors and patterns. The code includes functions to wipe the NeoPixel with a color and to display a rainbow cycle.

Code Listing

#include <Adafruit_NeoPixel.h>

#define PIN 6

// Neopixel Configuration (only 1 Neopixel on the Flora v3)
Adafruit_NeoPixel strip = Adafruit_NeoPixel(1, PIN, NEO_GRB + NEO_KHZ800);

void setup() {
  Serial.begin(9600); // Serial port connection
  strip.begin();
  strip.setBrightness(25);
  strip.show(); // Initialize all pixels to 'off'
}

void loop() {
  // Some example procedures showing how to display to the pixels:
  Serial.println(28); // added by Guntmar 23-11-2024 - just to test connection to TouchDesigner

  colorWipe(strip.Color(255, 0, 0), 500); // Red
  colorWipe(strip.Color(0, 255, 0), 500); // Green
  colorWipe(strip.Color(0, 0, 255), 500); // Blue
  rainbowCycle(20);
}

// Fill the dots one after the other with a color
void colorWipe(uint32_t c, uint8_t wait) {
  for(uint16_t i=0; i<strip.numPixels(); i++) {
      strip.setPixelColor(i, c);
      strip.show();
      delay(wait);
  }
}

// Slightly different, this makes the rainbow equally distributed throughout
void rainbowCycle(uint8_t wait) {
  uint16_t i, j;

  for(j=0; j<256*5; j++) { // 5 cycles of all colors on wheel
    for(i=0; i< strip.numPixels(); i++) {
      strip.setPixelColor(i, Wheel(((i * 256 / strip.numPixels()) + j) & 255));
    }
    strip.show();
    delay(wait);
  }
}

// Input a value 0 to 255 to get a color value.
// The colours are a transition r - g - b - back to r.
uint32_t Wheel(byte WheelPos) {
  WheelPos = 255 - WheelPos;
  if(WheelPos < 85) {
   return strip.Color(255 - WheelPos * 3, 0, WheelPos * 3);
  } else if(WheelPos < 170) {
    WheelPos -= 85;
   return strip.Color(0, WheelPos * 3, 255 - WheelPos * 3);
  } else {
   WheelPos -= 170;
   return strip.Color(WheelPos * 3, 255 - WheelPos * 3, 0);
  }
}

Code Explanation