Cykel tur indikator från ryggsäck täcka (3 / 5 steg)
Steg 3: kodning
När jag anslutit lysdioder till FLORAN för första gången jag ville testa säkerställa detta hela band för jag hade ett komplett utbud av färg och alla lampor fungerar korrekt. Så jag sprang följande kod som fanns med som ett exempel skiss när du hämtade LED biblioteket från Adafruit.
#include "SPI.h" < br > #include "Adafruit_WS2801.h"
/*****************************************************************************
Exemplet skiss för att köra Adafruit WS2801 pixlar!
Utformats speciellt för att arbeta med Adafruit RGB pixlar!
12mm kula form---> < en href = "https://www.adafruit.com/products/322" >< en href = "https://www.adafruit.com/products/322" >< en href = "https://www.adafruit.com/products/322" > https://www.adafruit.com/products/322
< /a >
< /a >
< /a >
12mm platt form---> < en href = "https://www.adafruit.com/products/738" >< en href = "https://www.adafruit.com/products/322" >< en href = "https://www.adafruit.com/products/322" > https://www.adafruit.com/products/322
< /a >
< /a >
< /a >
36mm kvadratisk form---> < en href = "https://www.adafruit.com/products/683" >< en href = "https://www.adafruit.com/products/322" >< en href = "https://www.adafruit.com/products/322" > https://www.adafruit.com/products/322
< /a >
< /a >
< /a >
Dessa pixlar för SPI att överföra färgdata, och har inbyggda
hög hastighet PWM drivrutiner för 24-bitars färg per pixel
2 stift är skyldiga att gränssnittet
Adafruit investerar tid och resurser att tillhandahålla detta öppen källkod,
Vänligen stödja Adafruit och öppen hårdvara genom att köpa
produkter från Adafruit!
Skrivet av Limor stekt/Ladyada för Adafruit industrier.
BSD-licensen, alla texten ovan måste inkluderas i en omfördelning
*****************************************************************************/
Välj vilket 2 stift du för utdata.
Kan vara någon giltig utgångsstift.
Färgerna på kablarna kan vara helt olika så
VAR SÄKER ATT KONTROLLERA DIN PIXLAR FÖR ATT SE VILKA KABLAR TILL ANVÄNDNING!
uint8_t dataPin = 2; Gul tråd på Adafruit pixlar
uint8_t clockPin = 3; Grön tråd på Adafruit pixlar
Glöm inte att ansluta en jordledning till Arduino marken,
och den + 5V tråd till en + 5V leverans
Den första variabeln inställd antalet pixlar. 25 = 25 pixlar i rad
Adafruit_WS2801 strip = Adafruit_WS2801 (25, dataPin, clockPin);
Tillval: lämna bort pin-koder att använda hårdvara SPI
(pinut sedan är specifik för varje bräda och kan inte ändras)
Adafruit_WS2801 strip = Adafruit_WS2801(25);
För 36mm LED pixlar: dessa pixlar internt representerar färgen i en
olika format. Någon av de ovanstående konstruktörerna kan acceptera en
valfri extra parameter: WS2801_RGB är "konventionella" RGB ordning
WS2801_GRB är den GRB ordning krävs av 36mm pixlar. Andra
än denna parameter behöver din kod inte göra något annorlunda.
biblioteket kommer att hantera formatändringen. Exempel:
Adafruit_WS2801 strip = Adafruit_WS2801 (25, dataPin, clockPin, WS2801_GRB);
Adafruit_WS2801 strip = Adafruit_WS2801 (25, WS2801_GRB);
void setup() {
Strip.BEGIN();
Uppdatera LED innehållet, för att starta de är alla "off"
Strip.show();
}
void loop() {
Några exempel procedurer visar hur du visar till pixlar
colorWipe (färg (255, 0, 0), 50);
colorWipe (färg (0, 255, 0), 50);
colorWipe (färg (0, 0, 255), 50);
Rainbow(20);
rainbowCycle(20);
}
{Ogiltig rainbow (uint8_t vänta)
int i, j.
för (j = 0; j < 256; j ++) {/ / 3 cykler av alla 256 färger i hjulet
för (jag = 0; jag < strip.numPixels(); i ++) {
strip.setPixelColor (i, hjulet ((i + j) % 255));
}
Strip.show(); skriva alla pixlar
Delay(Wait);
}
}
Något annorlunda, gör en regnbåge hjulet jämnt fördelat
i kedjan
void rainbowCycle (uint8_t vänta) {
int i, j.
för (j = 0; j < 256 * 5; j ++) {/ / 5 cykler av alla 25 färger i hjulet
för (jag = 0; jag < strip.numPixels(); i ++) {
knepigt matematik! Vi använder varje pixel som en bråkdel av hela 96-färghjulet
(det är jag / strip.numPixels() del)
Tillsätt sedan i j som gör färgerna gå runt per pixel
96% är att göra hjulet cykla runt
strip.setPixelColor (i, hjulet (((i * 256/strip.numPixels()) + j) % 256));
}
Strip.show(); skriva alla pixlar
Delay(Wait);
}
}
Fyll prickar en efter den andra med nämnda färg
bra för teständamål
void colorWipe (uint32_t c, uint8_t vänta) {
int i;
för (jag = 0; jag < strip.numPixels(); i ++) {
strip.setPixelColor (i, c);
Strip.show();
Delay(Wait);
}
}
/ * Hjälpare funktioner * /
Skapa ett 24-bitars färgvärde av R, G, B
uint32_t färg (byte r, byte g, byte b)
{
uint32_t c;
c = r;
c << = 8;
c | = g;
c << = 8;
c | = b;
returnera c;
}
Ange ett värde 0 till 255 att få ett färgvärde.
Färgerna är en övergång r - g -b - tillbaka till r
uint32_t hjul (WheelPos byte)
{
om (WheelPos < 85) {
returnera färg (WheelPos * 3, 255 - WheelPos * 3, 0);
} else om (WheelPos < 170) {
WheelPos-= 85.
returnera färg (255 - WheelPos * 3, 0, WheelPos * 3);
} annat {
WheelPos-= 170;
returnera färg (0, WheelPos * 3, 255 - WheelPos * 3);
}
}
Nu när vi vet LED strip är arbetar vi kan ladda upp den faktiska skiss som vi vill använda.
Skissen vi skapat under design sylt att demonstrera den arbetande begreppen.
/*
=================================================================
Kodade för hjul väl Design sylt på Kalifornien College of Arts
Genom
William Felker [www.williamfelker.com] &
Analicia Barros [analiciab.tumblr.com]
Projektet inspirerad av: FLORA Backpack
< en href = "http://learn.adafruit.com/flora-brakelight-backpack" > http://learn.adafruit.com/flora-brakelight-backpac...</a>
=================================================================
*/
#include "SPI.h" / /
#include "Adafruit_WS2801.h" / / import LED bibliotek
uint8_t dataPin = 10; Grön kabel på WS2801
uint8_t clockPin = 9; Gul kabel på WS2801
CONST int rightTurn = 12; antal rätt tryckknapp PIN-koden
CONST int leftTurn = 6; numret på den vänstra tryckknapp pin
int buttonRight = 0;
int buttonLeft = 0;
Adafruit_WS2801 strip = Adafruit_WS2801 ((uint16_t) 7, (uint16_t) 7, dataPin, clockPin);
void setup() {
Strip.BEGIN(); Ser till att alla lysdioder start "off"
Strip.show();
}
void loop() {
buttonRight = digitalRead(rightTurn);
om (buttonRight == låg) {/ / Detta kan enkelt göras om till en for-loop
Höger
Center(0,0,0,0);
Right(16,0,0,255);
Delay(100);
Center(0,0,0,0);
}
annat {
Inaktivera LED:
Center(0,0,0,0);
Delay(5000);
}
buttonLeft = digitalRead(leftTurn);
om (buttonLeft == låg) {/ / Detta kan enkelt göras om till en for-loop
VÄNSTER
Left(1,0,0,255);
Delay(100);
Center(0,0,0,0);
Left(1,0,0,255);
Delay(100);
Center(0,0,0,0);
}
annat {
Inaktivera LED:
Center(0,0,0,0);
Delay(5000);
}
/*
buttonLeft = digitalRead(leftTurn); < br > om (__ == __) {
Center
Center(0,0,0,0);
Center(0,255,255,0);
Delay(100);
Center(0,255,225,0);
Delay(100);
Center(0,0,0,0);
*/
}
void vänster (uint16_t n, uint8_t r, uint8_t g, uint8_t b) {
för (n = 0; n < 10; n ++) {/ / anger lysdioder intervallet 0-10
strip.setPixelColor (n, r, g, b);
Strip.show();
}
}
ogiltigförklara rätten (uint16_t n, uint8_t r, uint8_t g, uint8_t b) {
för (n = 16; n < 25; n ++) {/ / anger lysdioder rad 16-25
strip.setPixelColor (n, r, g, b);
Strip.show();
}
}
void center (uint16_t n, uint8_t r, uint8_t g, uint8_t b) {
för (n = 0; n < 25; n ++) {/ / anger lysdioder rad 0-25
strip.setPixelColor (n, r, g, b);
Strip.show();
}
}