BLU - en bärbar sensor/status armband (4 / 5 steg)
Steg 4: Koden
Här är koden jag skrev för det. Det är ganska sundet framåt och enkel.
- Den använder följande Arduino biblioteket: https://github.com/adafruit/Adafruit_NeoPixel
- För en hel del tutorials och ytterligare tips på Neo-pixlar, denna sida är ganska bra: https://learn.adafruit.com/adafruit-neopixel-uberg...
----------------------------------
#include
kräver bibliotek från https://github.com/adafruit/Adafruit_NeoPixel
godtyckliga PIN för nu
#define stift 2
#define vänta 20 //milliseconds off tid mellan nästa färg
#define SEQLEN 5 //memory av array = hur många färger?
#define SEK 1000 //millis på en sekund
#define NUMPIXELS 10
#define PI 3.14159
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 ljus = Adafruit_NeoPixel (NUMPIXELS, stift, NEO_GRB + NEO_KHZ800);
färg sekvens
definiera varje element med hjälp av ljus. Color(R,G,B) funktion.
uint32_t vit = ljus. Color(255,255,255);
uint32_t röd = ljus. Color(255,0,0);
uint32_t GREEN = ljus. Färg (0, 255,0);
uint32_t blå = ljus. Color(0,0,255);
uint32_t gul = ljus. Color(255,215,0);
uint32_t färger [SEQLEN] = {
VIT, RÖD, GUL, GRÖN, BLÅ};
Hur länge varje färg.
uint32_t colortime [SEQLEN] = {
10 * SEK, 6 * SEK, 6 * SEK, 6 * SEK, 6 * SEK};
osignerade långa t0 = 0;
void setup() {
Serial.BEGIN(9600);
/ * färger [0] = vit;
färger [1] = röd;
färger [2] = gul;
färger [3] = grön,
färger [4] = blå;
*/
Light.BEGIN();
Light.show();
}
void loop() {
för (int glödlampa = 0; lampa < SEQLEN; ++ lampa) {
Serial.println ("inställningen ny glödlampa");
Serial.Print(Colors[Bulb]);
Serial.Print("\t");
Serial.println(colortime[Bulb]);
t0 = millis();
Delay(1);
osignerade långa t = millis ()-t0;
medan (colortime [glödlampa] - t * 1. > 0) {
light.setBrightness(int(255*sin(PI*t/colortime[bulb])));
för (int pixel = 0; pixel < NUMPIXELS; ++ pixel) {
light.setPixelColor (pixel, färger [glödlampa]).
}
Delay(10);
t = millis ()-t0;
Serial.println (colortime [glödlampa] - t * 1.);
Light.show();
}
Delay(colortime[Bulb]);
#if vänta
för (int pixel = 0; pixel < NUMPIXELS; ++ pixel) {
light.setPixelColor(0,0);
}
Light.show();
Delay(Wait);
#endif
}
}