Effekte für LED-Strip nacheinander ausführen
-
Hallo,
ich habe keine Ahnung vom programmieren und habe mir einen Code für 2 LED-Effekte zusammen kopiert.
Wenn ich den LED-Strip anschalte, erscheint nur der "rainbow"-Effekt.
Kommentiere ich //rainbow(wait); aus, wird auch der "updateLed"-Effekt angezeigt.Ich möchte aber erst den "updateLed"-Effekt sehen und danach den "rainbow"-Effekt.
Könnt ihr mir bitte helfen?Gruß
Conny
#include <Adafruit_NeoPixel.h>#define PIN 6
#define NUM_LED 60
#define SEG_LEN 1Adafruit_NeoPixel strip = Adafruit_NeoPixel(NUM_LED, PIN, NEO_GRB + NEO_KHZ800);
int wait = 110;
int wait2 = 10;int num_segments = NUM_LED / SEG_LEN;
int num_colors = 3;
int colors[3][3];int offset = 0;
offset = (offset+1)%NUM_LED;void setup() {
strip.begin();
strip.show();
}
void loop() {offset = (offset+1)%NUM_LED;
updateLed(offset,wait);
rainbow(wait);}
void updateLed(int offset,int wait){colors[0][0] = 0;
colors[0][1] = 0;
colors[0][2] = 255;int i;
for(i=0; i<num_segments; i++){
strip.setPixelColor((i*SEG_LEN+offset)%60,
strip.Color(colors[i%num_colors][0],
colors[i%num_colors][1],
colors[i%num_colors][2]));
}
strip.show();
delay(wait);
}
void rainbow(uint8_t wait) {
uint16_t i, j, d;
for(d=0; d < 20; d++){
for(j=0; j<256; j++) {
for(i=0; i<strip.numPixels(); i++) {
strip.setPixelColor(i, Wheel((i+j) & 255));
}
strip.show();
delay(wait2);
}
}
}
uint32_t Wheel(byte WheelPos) {
if(WheelPos < 85) {
return strip.Color(WheelPos * 3, 255 - WheelPos * 3, 0);
} else if(WheelPos < 170) {
WheelPos -= 85;
return strip.Color(255 - WheelPos * 3, 0, WheelPos * 3);
} else {
WheelPos -= 170;
return strip.Color(0, WheelPos * 3, 255 - WheelPos * 3);
}
}
-
1. code tags bitte:
[code="cpp"]hier dein c++ code[/code]
2. #define ist hier unnötig und unschön.
3. ich sehe hier keine main-funktion.
-
Der LED-Strip soll mit einem Arduino gesteuert werden.
Für Arduino wird keine "main" Funktion geschrieben, sondern eine "setup".
-
#include <Adafruit_NeoPixel.h> #define PIN 6 #define NUM_LED 60 #define SEG_LEN 1 Adafruit_NeoPixel strip = Adafruit_NeoPixel(NUM_LED, PIN, NEO_GRB + NEO_KHZ800); int wait = 110; int wait2 = 10; int num_segments = NUM_LED / SEG_LEN; int num_colors = 3; int colors[3][3]; int offset = 0; offset = (offset + 1) % NUM_LED; void setup() { strip.begin(); strip.show(); } void loop() { offset = (offset + 1) % NUM_LED; updateLed(offset, wait); rainbow(wait); } void updateLed(int offset, int wait){ colors[0][0] = 0; colors[0][1] = 0; colors[0][2] = 255; int i; for (i = 0; i < num_segments; i++){ strip.setPixelColor((i*SEG_LEN + offset) % 60, strip.Color(colors[i%num_colors][0], colors[i%num_colors][1], colors[i%num_colors][2])); } strip.show(); delay(wait); } void rainbow(uint8_t wait) { uint16_t i, j, d; for (d = 0; d < 20; d++){ for (j = 0; j < 256; j++) { for (i = 0; i < strip.numPixels(); i++) { strip.setPixelColor(i, Wheel((i + j) & 255)); } strip.show(); delay(wait2); } } } uint32_t Wheel(byte WheelPos) { if (WheelPos < 85) { return strip.Color(WheelPos * 3, 255 - WheelPos * 3, 0); } else if (WheelPos < 170) { WheelPos -= 85; return strip.Color(255 - WheelPos * 3, 0, WheelPos * 3); } else { WheelPos -= 170; return strip.Color(0, WheelPos * 3, 255 - WheelPos * 3); } }
Um mal automatisch formatierten Code zu sehen...
-
Processing != C++