Flora Rainbow LED skjorta som är rörelse aktiverat (6 / 9 steg)
Steg 6: Kontroll och fastställande
Först och främst behandla dig själv för att få alla att sy gjort! Bra jobbat! :)
Nu måste du ladda ner den fil med titeln Light_Shirt_Code.ino Jag har bifogat för att testa att din Flora, Neopixels och Accellerometer alla fungerar. Du kan också bara kopiera koden nedan och klistra in den i programmet om du inte vill ladda ner det:
< br > #include #include
#includeParametern 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 (19, 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
R G B
uint8_t myFavoriteColors [] [8] = {{200, 0, 200}, / / lila
{200, 0, 0}, / / röd
{200, 200, 200}, / / vit
{0, 0, 200}, / / blå
{0, 200, 0}, / / grön
{255, 153, 0}, / / orange
{255, 255, 0}, / / gul
{255, 102, 255}, / / rosa
};
inte redigera raden nedan
#define FAVCOLORS sizeof(myFavoriteColors) / 8bråka med detta nummer för att justera TWINklitude :)
lägre antal = mer känslig
#define MOVE_THRESHOLD 45void 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!");
flashRandom (2, 10); första numret är "vänta" försening, kortare num == kortare twinkle
flashRandom (10, 5); andra siffran är hur många neopixels att samtidigt lysa upp
flashRandom (5, 15);
}
}
void flashRandom (int vänta, uint8_t howmany) {
för (uint16_t jag = 0; jag
få en slumpmässig pixel från listan
int j = random(strip.numPixels());
Serial.Print ("lysa upp"); Serial.println(j);
nu kommer att vi "tona" det i 5 steg
för (int x = 0, x < 5, x ++) {
int r = röd * (x + 1); r = 5.
int g = grön * (x + 1); g = 5.
int b = blå * (x + 1); b = 5.
strip.setPixelColor (j, strip. Färg (r, g, b));
Strip.show();
Delay(Wait);
}
& tona ut i 5 steg
för (int x = 5, x > = 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)
}
Se till att du hämta den här filen till mappen Arduino. Det bör i dokument > Arduino. Du kan behöva göra en ny mapp i mappen Arduino för den här filen. Titel mappen något igenkännlig som samma namn som filen.
* Tips * -om det jäkla Arduino storlek 10 teckensnittet är för litet för dig, kan du ändra det i dina inställningar genom att gå till Arduino > Inställningar. Jag sätta den till storlek 15. Efter denna förändring behöver du stänga programmet och öppna den innan ändringen ska träda i kraft igen.
Light kodning (lätt)
Om du använt 19 Neopixels som jag du har inte att ändra koden, men om du använde ett annat belopp här måste du gå till linje 11 i koden och ändrar 19 till oavsett antal Neopixels du använder. Om du har fler pixlar och du behöver inte ändra denna kod, har du bara 19 pixlar lysa upp och du kommer att avlysningen din huvud undrar varför anslutningarna är bra men lamporna inte kommer på. Det hände mig, låt det inte hända dig! Glöm inte att slå spara efter byte pixel beloppet.
- Nu, slå på Markera knappen för att se till att koden inte innehåller några fel. Om den gör det, kan du har kopierat det fel eller oavsiktligt raderade något, etc.
- När programmet berättar koden är bra, tryck på knappen bredvid knappen Markera som kommer att ladda upp här koden direkt till din Flora. Lite lampor på din Flora ska börja blinka ett visst sätt så att du vet den bearbetar koden.
- Om inget händer rätt bort, kom ihåg att det är rörelse aktiverat så du måste flytta den lite till få den till ljus.
- Titta på alla dina Neopixels att se till att var och en lyser upp. Koden väljer en Neopixel på måfå så det kan vara lite innan du ser varje enskild en ljus upp, men det kommer inte ta det alltför länge. Vet du ganska snabbt om du har några frågor.
Felsökning
- Ingenting är belysning - det faktiskt hände mig då jag först testade min tröja! Problemet var att min slipad anslutning från Flora till den första Neopixel inte var ansluter ordentligt. Skyldige var en knut jag gjort mellan växter och Neopixel. Jag sprang ut tråden innan jag kom till Neopixel och gjort en knut i tyget och fortsatte därifrån med en ny tråd. Denna Knut var inte hårt nog för att hålla anslutningen.
- Några lysa upp men inte alla - hade detta problem två gånger efter att jag fixade det första problemet! Än en gång någonstans ner på linjen jag gjorde samma sak. Jag sprang ut tråden innan jag fick till det Neopixel hålet och bundna av det i tyg och fortsatte därifrån.
Fastställande av ovanstående problem:
Det är här en multimeter kommer händig.
Aktivera din multimeter. Först prova att se till att det fungerar genom att vidröra båda metall stift tillsammans. De bör göra ett surrande ljud. Nu, börjar från en arbetande pixel eller från Flora touch marken för en enhet till marken av den andra. Om ingen av dina Neopixels tända upp skulle du exempelvis röra marken av Flora till marken av den första Neopixel. Om vidröra marken av din Flora och vidröra marken av den första Neopixel gör ett surrande ljud, hålla testa olika sökvägar för att hitta en som inte fungerar. Så nästa vill du flytta till data och sedan till makten om data fungerar. När du hittar problemet sökvägen, kan du sedan begränsa din sökning ytterligare. Säga din makt för den första Neopixel inte fungerade. Du skulle placera en multimeter pin på Floras makt, och peka sedan på den andra på ledande tråd. Hålla sig i rörelse ner ledande tråden med pin tills du träffar en punkt där det inte längre surrar. Detta är det område där du förlorade din anslutning. Du kan titta innanför skjortan och se om du kan hitta felet.
Även att veta den exakta platsen där du förlorat anslutningen kan hjälpa lära du av sina misstag, jag tycker att det är bäst att bara helt nytt sy den hela linjen mellan området du bud upp om du bud upp någonstans halvvägs mellan dina delar. Med vårt exempel igen av felaktiga anslutningen av Flora till den första Neopixel, är vad du skulle göra i detta fall bara sy nytt från Floras makten till den Neopixel makten. För detta jag får ut en söm ripper och används noggrant för att klippa tråden och dra ut. Jag skär inte emellertid den tråd som är bunden till öppningarna av områdena Flora och Neopixel makt. Denna tråd är bra att förvara där. Då bara måste man åter sy denna linje från en punkt till en annan utan knutar innan nästa punkt.