====== Neopixel Multitasking ====== Der Code lässt einen einzelnen NeoPixel "pulsieren". Die Schleife wird alle 10 Millisekunden durchlaufen. In der Zwischenzeit können andere Schleifen ausgeführt werden. Mit anderen Worten: er macht den Arduino multitaskingfähig. #include #define PIN 6 // Parameter 1 = number of pixels in strip // Parameter 2 = Arduino pin number (most are valid) // Parameter 3 = pixel type flags, add together as needed: // NEO_KHZ800 800 KHz bitstream (most NeoPixel products w/WS2812 LEDs) // NEO_KHZ400 400 KHz (classic 'v1' (not v2) FLORA pixels, WS2811 drivers) // NEO_GRB Pixels are wired for GRB bitstream (most NeoPixel products) // NEO_RGB Pixels are wired for RGB bitstream (v1 FLORA pixels, not v2) // NEO_RGBW Pixels are wired for RGBW bitstream (NeoPixel RGBW products) Adafruit_NeoPixel strip = Adafruit_NeoPixel(1, PIN, NEO_RGBW + NEO_KHZ800); // IMPORTANT: To reduce NeoPixel burnout risk, add 1000 uF capacitor across // pixel power leads, add 300 - 500 Ohm resistor on first pixel's data input // and minimize distance between Arduino and first pixel. Avoid connecting // on a live circuit...if you must, connect GND first. unsigned long interval=10; // the time we need to wait unsigned long previousMillis=0; // millis() returns an unsigned long. int counter = 0; boolean sw = true; void setup() { Serial.begin(9600); strip.begin(); strip.show(); // Initialize all pixels to 'off' } void loop() { unsigned long currentMillis = millis(); // grab current time // check if "interval" time has passed (10 milliseconds) if ((unsigned long)(currentMillis - previousMillis) >= interval) { if(sw) { counter++; if(counter==255) sw = !sw; } if(!sw) { counter--; if(counter==0) sw = !sw; } // fade led mit counter Serial.println(counter); strip.setPixelColor(0, 0, counter, 0, 0); strip.show(); previousMillis = millis(); } } Der Code oben erhöht und verringert die Helligkeit der NeoPixel-LED linear. Das sieht schon ziemlich cool aus. Für meinen [[arduino:bewaesserungsautomat|Arduino Bewässerungsautomat]] wünsche ich mir aber ein "natürliches" Erscheinungsbild. Daher habe ich mich zunächst auf die Suche gemacht nach Funktionen, mit denen nichtlineare Fade-in-fade-out-Effekte umgesetzt wurden: * https://codebender.cc/sketch:136737#NeoPixel%20Breathe.ino * http://sean.voisen.org/blog/2011/10/breathing-led-with-arduino/ Tags: #Arduino #Code #NeoPixel