New Year's Eve LED glitter klänning (6 / 8 steg)
Steg 6: Kod för floran
Jag har använt en modifierad version av koden skriven för Adafruit Sparkle kjol projektet. Denna kod är väldokumenterad och kommenterad vilket gör det ganska enkelt att ändra. Jag har försökt att kommentera mina ändringar som inkluderar att lägga till favorit färger, ändra flash varaktighet och timing och extra slumpmässighet för flash mönster.
#include
#include
#include
Parametern 1 = antal pixlar i remsa
Parameter 2 = pin-kod (de flesta är giltig)
Parameter 3 = pixel typ flaggor, Lägg ihop efter behov:
NEO_RGB pixlar är kopplat för RGB bitstream
NEO_GRB pixlar är kopplat för GRB bitstream
NEO_KHZ400 400 KHz bitstream (e.g. FLORA pixlar)
NEO_KHZ800 800 KHz bitstream (t.ex. hög densitet LED strip)
Adafruit_NeoPixel strip = Adafruit_NeoPixel (12, 6, NEO_GRB + NEO_KHZ800);
Adafruit_LSM303 lsm;
Här är där du kan sätta i dina favoritfärger som visas!
Lägg bara till nya {nnn, nnn, nnn}, linjer. De kommer att plockas slumpmässigt
* Ändrade och La färger
R G B
uint8_t myFavoriteColors [] [5] = {{175, 0, 175}, / / lila
{0, 175, 175}, / / gul
{175, 175, 175}, / / vit
{0, 0, 175}, / / blå
{175, 75, 75}, / / rosa
};
inte redigera raden nedan
#define FAVCOLORS sizeof(myFavoriteColors) / 3
bråka med detta nummer för att justera TWINklitude :)
lägre antal = mer känslig
#define MOVE_THRESHOLD 125
void setup()
{
Serial.BEGIN(9600);
Försök att initiera och varna om vi inte kunde identifiera chip
om (! lsm.begin())
{
Serial.println ("Oops... kunde inte initiera en LSM303. Kontrollera ditt ledningar!");
samtidigt (1).
}
Strip.BEGIN();
Strip.show(); Initiera alla pixlar till "off"
}
void loop()
{
Ta en läsning av accellerometer data
LSM.Read();
Serial.Print ("Accel X:"); Serial.Print(LSM.accelData.x); Serial.Print("");
Serial.Print ("y"); Serial.Print(LSM.accelData.y); Serial.Print("");
Serial.Print ("Z:"); Serial.Print(LSM.accelData.z); Serial.Print("");
Få 3 axel vektor storlek (längd)
http://en.wikipedia.org/wiki/Euclidean_vector#length
Double storedVector = lsm.accelData.x*lsm.accelData.x;
storedVector += lsm.accelData.y*lsm.accelData.y;
storedVector += lsm.accelData.z*lsm.accelData.z;
storedVector = sqrt(storedVector);
Serial.Print ("Len:"); Serial.println(storedVector);
vänta lite
Delay(100);
få nya uppgifter!
LSM.Read();
Double newVector = lsm.accelData.x*lsm.accelData.x;
newVector += lsm.accelData.y*lsm.accelData.y;
newVector += lsm.accelData.z*lsm.accelData.z;
newVector = sqrt(newVector);
Serial.Print ("nya Len:"); Serial.println(newVector);
Vi ska flytta
om (abs (newVector - storedVector) > MOVE_THRESHOLD) {
Serial.println("twinkle!");
"twink" är "vänta" försening, kortare num == kortare twinkle
'numPix' är hur många neopixels att samtidigt lysa upp
Lagt till en enkel for-slinga med flera slumpvariabler att öka
variationen i flash mönster och samtidig pixlar
int numLoop = random (3) + 2;
för (int t = 0; t
void flashRandom (int vänta, uint8_t howmany) {
för (uint16_t jag = 0; jag = 0, x--) {
int r = röd * x; r = 5.
int g = grön * x; g = 5.
int b = blå * x; b = 5.
strip.setPixelColor (j, strip. Färg (r, g, b));
Strip.show();
Delay(Wait);
}
}
Lysdioder kommer att vara avstängd när gjort (de är bleka till 0)
}