Space Ghost handske (3 / 5 steg)
Steg 3: programmering
Jag lånade koden från Adafruit (https://learn.adafruit.com/rgb-led-strips/example-... och (https://github.com/adafruit/Adafruit_NeoPixel/tree... och mosade dem tillsammans. Jag har gjort några ändringar och detta är resultatet:
färg virvel! ansluta en RGB LED till PWM stift som anges
i #defines
offentliga rummet, Njut!
#define REDPIN 5
#define GREENPIN 6
#define BLUEPIN 3
#define BUTTON_PIN 2
#define FADESPEED 5 / / gör detta högre för att bromsa
bool oldState = hög;
int showType = 0;
int r = 255;
int g = 255;
int b = 255;
int f = 0; räknare för blinkande lampor
void setup() {
pinMode (REDPIN, OUTPUT);
pinMode (GREENPIN, OUTPUT);
pinMode (BLUEPIN, OUTPUT);
pinMode (BUTTON_PIN, INPUT_PULLUP);
}
void loop() {
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 > 4)
showType = 0;
startShow(showType);
}
}
oldState = newState;
}
void startShow(int i) {
Switch(i) {
fall 0: digitalWrite (REDPIN, hög); Svart/av
digitalWrite (BLUEPIN, hög);
digitalWrite (GREENPIN, hög);
Delay(500);
för (f = 0; f < 4; r ++) {
digitalWrite (REDPIN, låg); Vit - blinka 3 gånger
digitalWrite (BLUEPIN, låg);
digitalWrite (GREENPIN, låg);
Delay(200);
digitalWrite (REDPIN, hög); Svart/av
digitalWrite (BLUEPIN, hög);
digitalWrite (GREENPIN, hög);
Delay(500);
}
bryta;
fall 1: digitalWrite (REDPIN, låg); Vit blekna till rött
digitalWrite (BLUEPIN, låg);
digitalWrite (GREENPIN, låg);
Delay(500);
analogWrite (REDPIN, 255); Röd
Delay(2000);
digitalWrite (REDPIN, hög); Svart/av
digitalWrite (BLUEPIN, hög);
digitalWrite (GREENPIN, hög);
bryta;
fall 2: digitalWrite (REDPIN, låg); Vit till grön
digitalWrite (BLUEPIN, låg);
digitalWrite (GREENPIN, låg);
Delay(500);
analogWrite (GREENPIN, 255); Grön
Delay(2000);
digitalWrite (REDPIN, hög); Svart/av
digitalWrite (BLUEPIN, hög);
digitalWrite (GREENPIN, hög);
bryta;
fall 3: digitalWrite (REDPIN, låg); Vit till blå
digitalWrite (BLUEPIN, låg);
digitalWrite (GREENPIN, låg);
Delay(500);
analogWrite (BLUEPIN, 255); Blå
Delay(2000);
digitalWrite (REDPIN, hög); Svart/av
digitalWrite (BLUEPIN, hög);
digitalWrite (GREENPIN, hög);
bryta;
fall 4: / / fade från blått till violett
för (r = 0; r < 256; r ++) {
analogWrite (REDPIN, r);
Delay(FADESPEED);
}
blekna från violett till rött
för (b = 255, b > 0, b--) {
analogWrite (BLUEPIN, b);
Delay(FADESPEED);
}
blekna från rött till gult
för (g = 0, g < 256, g ++) {
analogWrite (GREENPIN, g);
Delay(FADESPEED);
}
blekna från gult till grönt
för (r = 255, r > 0, r--) {
analogWrite (REDPIN, r);
Delay(FADESPEED);
}
blekna från grönt till mörkturkos
för (b = 0; b < 256; b ++) {
analogWrite (BLUEPIN, b);
Delay(FADESPEED);
}
försvinna ur kricka blå
för (g = 255, g > 0, g--) {
analogWrite (GREENPIN, g);
Delay(FADESPEED);
}
bryta;
}