Debbies ljus upp trapets byxor (4 / 8 steg)
Steg 4: Språket i partiet: kodning
Wow! Strukturen på dina trapets byxor är komplett! Det är häftigt! Du är nästan redo att lysa upp!
Varor:
1. dator
2. USB mini
3. allt som du har samlat till denna punkt :)
Viktig information om Gemma:
Jag använde Arduino (http://www.arduino.cc/) som programmering plattform för min Gemmas.
Det finns många varningar om med resistorer och kondensatorer med här många neopixels. Jag gjorde inte detta. Om du ändrar mängden neopixels eller med större batterier se upp.
Gemmas kan inte hantera den hastighet vid vilken de nya datorerna USB 3 exportera information. Om du har en USB 2 du är i god form. Annars köpa en omvandlare.
Handledning för Gemma: https://learn.adafruit.com/introducing-gemma/introduction
Handledning för Neopixels: https://learn.adafruit.com/adafruit-neopixel-uberguide/overview , https://learn.adafruit.com/adafruit-neopixel-uberguide/best-practices
Provning av Gemma och Neopixels:
a. koppla din Gemma till datorn med en USB mini kabel. För att ladda upp koden måste du trycka på den lilla svarta knappen på toppen av Gemma. När det börjar blinka, börja ladda upp.
Det kommer inte ladda upp någon kod om du inte trycker på knappen ***
b. testa Gemma genom att ladda upp test 'Blinka' koden nedan. Liten röd lampa på Gemma bör blinka. Om du har besök problem eller frågor Gemma handledning länken ovan.
KOD:
/*
Blink
Släcks på en LED på för en sekund, sedan för en sekund, upprepade gånger.
Denna exempelkod är offentlig.
Ladda upp till din Gemma eller prydnadssak:
1) Välj rätt styrelse från Verktyg -> styrelsen menyn
2) Välj USBtinyISP från Verktyg -> programmerare
3) Anslut Gemma/prydnadssak, se till att du ser den gröna lysdioden lyser
4) för windows, installera USBtiny drivrutiner
5) Tryck på knappen på Gemma/prydnadssak - kontrollera du se
den röda LED pulsen. Detta innebär att den är redo att ta emot data
6) Klicka på knappen Ladda upp ovanför inom 10 sekunder
*/
int ledde = 1; Blink "digital" stift 1 - AKA det inbyggda röda LED
Rutinen installationsprogrammet körs en gång när du trycker på reset:
void setup() {
initiera digital PIN-koden som en utgång.
pinMode ledde (, OUTPUT);
}
loop rutinen körs för evigt om och om igen:
void loop() {
digitalWrite (ledde, högt);
Delay(1000);
digitalWrite (ledde, låg);
Delay(1000);
}
c. testa neopixels genom att ladda upp "Neopixels Strand Test" koden nedan. Om du har några problem besök Neopixels handledning länken ovan.
KOD:
#include
#define PIN
Parametern 1 = antal pixlar i remsa
Parameter 2 = Arduino pin-kod (de flesta är giltig)
Parameter 3 = pixel typ flaggor, Lägg ihop efter behov:
NEO_KHZ800 800 KHz bitstream (de flesta NeoPixel produkter w/WS2812 lysdioder)
NEO_KHZ400 400 KHz (classic "v1" (inte v2) FLORA pixlar, WS2811 drivrutiner)
NEO_GRB pixlar är kopplat för GRB bitstream (de flesta NeoPixel produkter)
NEO_RGB pixlar är kopplat för RGB bitstream (v1 FLORA pixlar, inte v2)
Adafruit_NeoPixel strip = Adafruit_NeoPixel (60, PIN, NEO_GRB + NEO_KHZ800);
VIKTIGT: För att minska NeoPixel burnout risk, lägga till 1000 uF kondensator över
pixel power leads, lägga till 300-500 ohms motstånd på första pixel data ingång
och minimera avståndet mellan Arduino och första pixel. Undvika att ansluta
på en levande krets... om du måste, Anslut GND först.
void setup() {
Strip.BEGIN();
Strip.show(); Initiera alla pixlar till "off"
}
void loop() {
Några exempel förfaranden visar hur till pixlarna ska visas:
colorWipe (remsa. Color(255, 0, 0), 50); Röd
colorWipe (remsa. Color(0, 255, 0), 50); Grön
colorWipe (remsa. Color(0, 0, 255), 50); Blå
Skicka en teater pixel jakt i...
theaterChase (remsa. Color(127, 127, 127), 50); Vit
theaterChase (remsa. Color(127, 0, 0), 50); Röd
theaterChase (remsa. Färg (0, 0, 127), 50); Blå
Rainbow(20);
rainbowCycle(20);
theaterChaseRainbow(50);
}
Fylla prickar en efter den andra med en färg
void colorWipe (uint32_t c, uint8_t vänta) {
för (uint16_t jag = 0; jag strip.setPixelColor (i, c);
Strip.show();
Delay(Wait);
}
}
{Ogiltig rainbow (uint8_t vänta)
uint16_t i, j.
för (j = 0; j < 256; j ++) {
för (jag = 0; jag strip.setPixelColor (i, Wheel((i+j) & 255));
}
Strip.show();
Delay(Wait);
}
}
Något annorlunda, detta gör regnbågen jämnt fördelat i hela
void rainbowCycle (uint8_t vänta) {
uint16_t i, j.
för (j = 0; j < 256 * 5; j ++) {/ / 5 cykler av alla färger på hjul
för (jag = 0; jag < strip.numPixels(); i ++) {
strip.setPixelColor (i, hjulet (((i * 256/strip.numPixels()) + j) & 255));
}
Strip.show();
Delay(Wait);
}
}
Biosittning krypande lampor.
void theaterChase (uint32_t c, uint8_t vänta) {
för (int j = 0; j < 10; j ++) {//do 10 cykler för att jaga
för (int q = 0; d < 3; q ++) {
för (int jag = 0; jag < strip.numPixels(); i = i + 3) {
strip.setPixelColor (jag + q, c); aktivera varje tredje pixel
}
Strip.show();
Delay(Wait);
för (int jag = 0; jag < strip.numPixels(); i = i + 3) {
strip.setPixelColor (jag + q, 0); Inaktivera alla bildpunkter på tredje
}
}
}
}
Biosittning krypande lampor med regnbågseffekt
void theaterChaseRainbow (uint8_t vänta) {
för (int j = 0; j < 256; j ++) {/ / cykla alla 256 färger i hjulet
för (int q = 0; d < 3; q ++) {
för (int jag = 0; jag < strip.numPixels(); i = i + 3) {
strip.setPixelColor (i + q, rullar ((i + j) % 255)); aktivera varje tredje pixel
}
Strip.show();
Delay(Wait);
för (int jag = 0; jag < strip.numPixels(); i = i + 3) {
strip.setPixelColor (jag + q, 0); Inaktivera alla bildpunkter på tredje
}
}
}
}
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 (byte WheelPos) {
IF(WheelPos < 85) {
returnera strip. Färg (WheelPos * 3, 255 - WheelPos * 3, 0);
} annat if(WheelPos < 170) {
WheelPos-= 85.
returnera strip. Färg (255 - WheelPos * 3, 0, WheelPos * 3);
} annat {
WheelPos-= 170;
returnera strip. Färg (0, WheelPos * 3, 255 - WheelPos * 3);
}
}
d. slutligen ladda upp "Debbies byxor" koden nedan:
#include
CONST int PIN = 1;
CONST int ACCEL = 1;
CONST int NUMBER_O_PIXELS = 13.
CONST int min_accel = 350;
CONST int max_accel = 650;
int accelRead = 0;
Parametern 1 = antal pixlar i remsa
Parameter 2 = Arduino pin-kod (de flesta är giltig)
Parameter 3 = pixel typ flaggor, Lägg ihop efter behov:
NEO_KHZ800 800 KHz bitstream (de flesta NeoPixel produkter w/WS2812 lysdioder)
NEO_KHZ400 400 KHz (classic "v1" (inte v2) FLORA pixlar, WS2811 drivrutiner)
NEO_GRB pixlar är kopplat för GRB bitstream (de flesta NeoPixel produkter)
NEO_RGB pixlar är kopplat för RGB bitstream (v1 FLORA pixlar, inte v2)
Adafruit_NeoPixel strip = Adafruit_NeoPixel (NUMBER_O_PIXELS, stift, NEO_GRB + NEO_KHZ800);
VIKTIGT: För att minska NeoPixel burnout risk, lägga till 1000 uF kondensator över
pixel power leads, lägga till 300-500 ohms motstånd på första pixel data ingång
och minimera avståndet mellan Arduino och första pixel. Undvika att ansluta
på en levande krets... om du måste, Anslut GND först.
void setup() {
pinMode (PIN, OUTPUT);
pinMode (ACCEL, indata);
Strip.BEGIN();
Strip.show(); Initiera alla pixlar till "off"
}
void loop() {
Några exempel förfaranden visar hur till pixlarna ska visas:
accelRead = analogRead(ACCEL);
accelRead = karta (accelRead, min_accel, max_accel, 0, 255);
accelRead = begränsa (accelRead, 0, 255);
setStripColor (accelRead, (255-accelRead), 0);
Delay(5);
}
void setStripColor (int rött, grönt, int int blå) {
för (int jag = 0; jag strip.setPixelColor (i, röd, grön, blå);
}
Strip.show();
}
e. kan du ändra koden runt att passa :)