Stap 3: programmeren
Ik leende code van Adafruit (https://learn.adafruit.com/rgb-led-strips/example-... en (... https://github.com/adafruit/Adafruit_NeoPixel/tree en puree van hen samen. Ik maakte een paar veranderingen en dit is het resultaat:
Colour swirl! een RGB-LED verbinden met de pinnen van de PWM zoals aangegeven
in de #defines
publieke domein, genieten!
#define REDPIN 5
#define GREENPIN 6
#define BLUEPIN 3
#define BUTTON_PIN 2
#define FADESPEED 5 / / maken dit hoger te vertragen
BOOL oldState = hoog;
int showType = 0;
int r = 255;
int g = 255;
int b = 255;
int f = 0; teller voor knipperende lichten
VOID Setup {}
pinMode (REDPIN, uitvoer);
pinMode (GREENPIN, uitvoer);
pinMode (BLUEPIN, uitvoer);
pinMode (BUTTON_PIN, INPUT_PULLUP);
}
void loop {}
BOOL newState = digitalRead(BUTTON_PIN);
Controleer als de status gewijzigd van hoog naar laag (druk op de knop).
Als (newState == LOW & & oldState == HIGH) {}
Korte vertraging aan de debounce knop.
vertraging(20);
Controleer of de knop na ontdendering nog steeds laag is.
newState = digitalRead(BUTTON_PIN);
Als (newState == LOW) {}
showType ++;
Als (showType > 4)
showType = 0;
startShow(showType);
}
}
oldState = newState;
}
VOID startShow(int i) {}
switch(i) {}
geval van 0: digitalWrite (REDPIN, hoge); Zwart/off
digitalWrite (BLUEPIN, hoge);
digitalWrite (GREENPIN, hoge);
delay(500);
voor (f = 0; f < 4; r ++) {}
digitalWrite (REDPIN, laag); White - knipperen 3 keer
digitalWrite (BLUEPIN, laag);
digitalWrite (GREENPIN, laag);
delay(200);
digitalWrite (REDPIN, hoge); Zwart/off
digitalWrite (BLUEPIN, hoge);
digitalWrite (GREENPIN, hoge);
delay(500);
}
breken;
geval 1: digitalWrite (REDPIN, laag); Wit fade naar rood
digitalWrite (BLUEPIN, laag);
digitalWrite (GREENPIN, laag);
delay(500);
analogWrite (REDPIN, 255); Rood
delay(2000);
digitalWrite (REDPIN, hoge); Zwart/off
digitalWrite (BLUEPIN, hoge);
digitalWrite (GREENPIN, hoge);
breken;
geval 2: digitalWrite (REDPIN, laag); Wit groen
digitalWrite (BLUEPIN, laag);
digitalWrite (GREENPIN, laag);
delay(500);
analogWrite (GREENPIN, 255); Groen
delay(2000);
digitalWrite (REDPIN, hoge); Zwart/off
digitalWrite (BLUEPIN, hoge);
digitalWrite (GREENPIN, hoge);
breken;
Case 3: digitalWrite (REDPIN, laag); Wit blauw
digitalWrite (BLUEPIN, laag);
digitalWrite (GREENPIN, laag);
delay(500);
analogWrite (BLUEPIN, 255); Blauw
delay(2000);
digitalWrite (REDPIN, hoge); Zwart/off
digitalWrite (BLUEPIN, hoge);
digitalWrite (GREENPIN, hoge);
breken;
geval 4: / / vervagen van blauw naar violet
voor (r = 0; r < 256; r ++) {}
analogWrite (REDPIN, r);
delay(FADESPEED);
}
vervagen van violet tot rood
voor (b = 255, b > 0; b--) {}
analogWrite (BLUEPIN, b);
delay(FADESPEED);
}
verkleuren van rood naar geel
voor (g = 0 g < 256; g ++) {}
analogWrite (GREENPIN, g);
delay(FADESPEED);
}
vervagen van geel tot groen
voor (r = 255; r > 0; r--) {}
analogWrite (REDPIN, r);
delay(FADESPEED);
}
vervagen van groen naar blauwgroen
voor (b = 0; b < 256; b ++) {}
analogWrite (BLUEPIN, b);
delay(FADESPEED);
}
vervagen van blauwgroen naar blauw
voor (g = 255, g > 0; g--) {}
analogWrite (GREENPIN, g);
delay(FADESPEED);
}
breken;
}