Touch LED tabell (3 / 7 steg)
Steg 3: Steg 3: ardino kod och skärbräda
Jag började med följande kod och en tryckknapp med setup visas att driva lysdiodsrand.
KOD:
Detta är en demonstration om hur du använder en indataenhet för att utlösa förändringar på din neo pixlar.
Du bör tråd en momentan tryckknapp att ansluta från marken till en digital IO pin. När du
Tryck på knappen ändras den till en ny pixel animation. Observera att du behöver trycka på den
knappen en gång för att starta den första animationen!
#include
#define BUTTON_PIN 2 / / digitalt IO pin ansluten till knappen. Detta kommer att vara
drivs med en pull-up resistor så växeln bör
dra stiftet mot jord ögonblickligt. På en hög -> låg
övergången knapp tryck på logiken att köras.
#define PIXEL_PIN 6 / / digitalt IO pin ansluten till NeoPixels.
#define PIXEL_COUNT 30
Parametern 1 = antal pixlar i remsa, neopixel stick har 8
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, rätt för neopixel stick
NEO_KHZ400 400 KHz bitstream (e.g. FLORA pixlar)
NEO_KHZ800 800 KHz bitstream (t.ex. hög densitet LED strip), korrigera för neopixel stick
Adafruit_NeoPixel strip = Adafruit_NeoPixel (PIXEL_COUNT, PIXEL_PIN, NEO_GRB + NEO_KHZ800);
bool oldState = hög;
int showType = 0;
void setup() {
pinMode (BUTTON_PIN, INPUT_PULLUP);
Strip.BEGIN();
Strip.show(); Initiera alla pixlar till "off"
}
void loop() {
Få aktuella knappläge.
bool newState = digitalRead(BUTTON_PIN);
Kontrollera om tillstånd ändras från hög till låg (tryck på knapp).
om (newState == låg & & oldState == hög) {
Kort fördröjning till Dämpningstid knappen.
Delay(20);
Kontrollera att knappen är fortfarande låg efter debounce.
newState = digitalRead(BUTTON_PIN);
om (newState == låg) {
showType ++;
om (showType > 10)
showType = 0;
startShow(showType);
}
}
Ange den sista knappen den gamla staten.
oldState = newState;
}
void startShow(int i) {
Switch(i) {
fall 0: colorWipe (remsa. Color(0, 0, 0), 50); Svart/av
bryta;
fall 1: colorWipe (remsa. Color(255, 0, 0), 50); Röd
bryta;
fall 2: colorWipe (remsa. Color(255, 96, 0), 50); Orange
bryta;
fall 3: colorWipe (remsa. Color(255, 255, 0), 50); gul behöver hjälp
bryta;
fall 4: colorWipe (remsa. Color(0, 255, 0), 50); grön
bryta;
fall 5: colorWipe (remsa. Color(0, 0, 255), 50); blå
bryta;
mål 6: colorWipe (remsa. Color(38, 222, 220), 50); Teal
bryta;
fall 7: colorWipe (remsa. Color(75, 0, 13), 50); Lila
bryta;
mål 8: colorWipe (remsa. Color(255, 0, 255), 50); Rosa
bryta;
mål 9: colorWipe (remsa. Color(252, 253, 253), 50); vit
bryta;
}
}
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);
}
}
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) {
WheelPos = 255 - WheelPos;
IF(WheelPos < 85) {
returnera strip. Färg (255 - WheelPos * 3, 0, WheelPos * 3);
} annat if(WheelPos < 170) {
WheelPos-= 85.
returnera strip. Färg (0, WheelPos * 3, 255 - WheelPos * 3);
} annat {
WheelPos-= 170;
returnera strip. Färg (WheelPos * 3, 255 - WheelPos * 3, 0);
}
}