init pixie skirt code
and add a gitignore
This commit is contained in:
parent
d224d608f4
commit
5819611347
2 changed files with 159 additions and 0 deletions
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
*.py~
|
||||
*.ino~
|
||||
157
Fiber_Optic_Pixie_Skirt/pixieskirt.ino
Normal file
157
Fiber_Optic_Pixie_Skirt/pixieskirt.ino
Normal file
|
|
@ -0,0 +1,157 @@
|
|||
#include <Adafruit_Pixie.h>
|
||||
#include "SoftwareSerial.h"
|
||||
|
||||
#include <Wire.h>
|
||||
#include <Adafruit_Sensor.h>
|
||||
#include <Adafruit_LSM303_U.h>
|
||||
|
||||
int ledMode = 0; //FIRST ACTIVE MODE
|
||||
|
||||
#define NUMPIXIES 5 // Number of Pixies in the fiber optics
|
||||
#define PIXIEPIN 6
|
||||
|
||||
|
||||
SoftwareSerial pixieSerial(-1, PIXIEPIN);
|
||||
|
||||
Adafruit_Pixie strip = Adafruit_Pixie(NUMPIXIES, &pixieSerial);
|
||||
|
||||
Adafruit_LSM303_Accel_Unified accel = Adafruit_LSM303_Accel_Unified(54321);
|
||||
Adafruit_LSM303_Mag_Unified mag = Adafruit_LSM303_Mag_Unified(12345);
|
||||
|
||||
const float twirl = 7; // accelerometer threshold for toggling modes -- change this number to change sensitivity
|
||||
long twirlStart = 0;
|
||||
long twirlTime = 2000;
|
||||
|
||||
|
||||
// Set your colors for RandomFlash mode here.
|
||||
// just add new {nnn, nnn, nnn}, lines. They will be picked out randomly
|
||||
// R G B
|
||||
uint8_t myFavoriteColors[][3] = {{255, 0, 0}, // red
|
||||
{255, 150, 0}, // orange
|
||||
{251, 255, 0}, // yellow
|
||||
};
|
||||
// don't edit the line below
|
||||
#define FAVCOLORS sizeof(myFavoriteColors) / 3
|
||||
|
||||
void setup()
|
||||
{
|
||||
Serial.begin(9600);
|
||||
// Initialize the sensors
|
||||
accel.begin();
|
||||
mag.begin();
|
||||
|
||||
strip.begin();
|
||||
strip.show(); // Initialize all pixels to 'off
|
||||
}
|
||||
|
||||
|
||||
#define NUM_MODES 4 //change this if you add more modes
|
||||
|
||||
//------------------MAIN LOOP------------------
|
||||
void loop() {
|
||||
switch (ledMode) {
|
||||
case 0: colorWipe(strip.Color(200, 20, 20), 20); break; // red
|
||||
case 1: colorWipe(strip.Color(20, 200, 50), 20); break; // yellow
|
||||
case 2: colorWipe(strip.Color(200, 0, 200), 20); break; // purple
|
||||
case 3: rainbowfill(); break; //rainbow
|
||||
case 4: flashRandom(5, 4); break; // flash
|
||||
|
||||
}
|
||||
|
||||
// Now read the accelerometer to control the motion.
|
||||
sensors_event_t event;
|
||||
accel.getEvent(&event);
|
||||
|
||||
// Check for mode change commands
|
||||
CheckFortwirls(event);
|
||||
|
||||
}
|
||||
|
||||
// monitor orientation for mode-change 'gestures'
|
||||
void CheckFortwirls(sensors_event_t event)
|
||||
{
|
||||
if (event.acceleration.x > twirl)
|
||||
{
|
||||
if (millis() - twirlStart > twirlTime)
|
||||
{
|
||||
Serial.println("Twirl!");
|
||||
colorWipe(strip.Color(0, 0, 0), 10);
|
||||
ledMode++;
|
||||
if (ledMode > NUM_MODES){
|
||||
ledMode=0; }
|
||||
}
|
||||
}
|
||||
else if (event.acceleration.x < -(twirl + 1))
|
||||
{
|
||||
if (millis() - twirlStart > twirlTime)
|
||||
{
|
||||
Serial.println("Twirl Back!");
|
||||
colorWipe(strip.Color(0, 0, 0), 10);
|
||||
ledMode--;
|
||||
if (ledMode < 0){
|
||||
ledMode=NUM_MODES;
|
||||
}
|
||||
}
|
||||
else // no nods in progress
|
||||
{
|
||||
twirlStart = millis(); // reset timer
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void flashRandom(int wait, uint8_t howmany) {
|
||||
|
||||
for(uint16_t i=0; i<howmany; i++) {
|
||||
// pick a random favorite color!
|
||||
int c = random(FAVCOLORS);
|
||||
int red = myFavoriteColors[c][0];
|
||||
int green = myFavoriteColors[c][1];
|
||||
int blue = myFavoriteColors[c][2];
|
||||
|
||||
// get a random pixel from the list
|
||||
int j = random(strip.numPixels());
|
||||
//Serial.print("Lighting up "); Serial.println(j);
|
||||
|
||||
// now we will 'fade' it in 5 steps
|
||||
for (int x=0; x < 5; x++) {
|
||||
int r = red * (x+1); r /= 5;
|
||||
int g = green * (x+1); g /= 5;
|
||||
int b = blue * (x+1); b /= 5;
|
||||
|
||||
strip.setPixelColor(j, strip.Color(r, g, b));
|
||||
strip.show();
|
||||
delay(wait);
|
||||
}
|
||||
// & fade out in 5 steps
|
||||
for (int x=5; x >= 0; x--) {
|
||||
int r = red * x; r /= 5;
|
||||
int g = green * x; g /= 5;
|
||||
int b = blue * x; b /= 5;
|
||||
|
||||
strip.setPixelColor(j, strip.Color(r, g, b));
|
||||
strip.show();
|
||||
delay(wait);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// 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);
|
||||
}
|
||||
}
|
||||
|
||||
// Fill the dots one after the other with a color
|
||||
void rainbowfill() {
|
||||
strip.setPixelColor(0, strip.Color(255, 0, 0));
|
||||
strip.setPixelColor(1, strip.Color(200, 100, 0));
|
||||
strip.setPixelColor(2, strip.Color(0, 255, 0));
|
||||
strip.setPixelColor(3, strip.Color(50, 50, 200));
|
||||
strip.setPixelColor(4, strip.Color(255, 0, 255));
|
||||
strip.show();
|
||||
delay(100);
|
||||
}
|
||||
Loading…
Reference in a new issue