Moin,
ich habe eine funktionierende Wordclock (auch Dank der Hilfe dieses Forums) und hatte mir nun gedacht es wäre schön, wenn ich die Farbe per Button verstellen könnte.
Das gestaltet sich nicht so einfach, weswegen ich hier um Rat fragen möchte...
Ich habe ein Testsketch (button_test) der auch einwandfrei so funktioniert wie erwartet.
- digitaler Pin 7
- 10k Widerstand zwischen Pin 7 und GND
Der sketch hängt unten drin, aber hier zum schneller scrollen:
#include <Adafruit_NeoPixel.h>
int buttonPin = 7; // momentary push button on pin 0
int oldButtonVal = 0;
#define PIN 3 // Parameter 1 = number of pixels in strip
// Parameter 2 = 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)
Adafruit_NeoPixel strip = Adafruit_NeoPixel(2, PIN, NEO_GRB + NEO_KHZ800);
int nPatterns = 8;
int lightPattern = 2;
// the setup routine runs once when you press reset:
void setup() {
Serial.begin(19200);
strip.begin();
strip.show(); // initialize all pixels to 'off'
// initialize the BUTTON pin as an input
pinMode(buttonPin, INPUT);
digitalWrite(buttonPin, HIGH); // button pin is HIGH, so it drops to 0 if pressed
}
// Pattern 1 - White light, all LEDs in the strip are white
void pattern1() {
strip.setPixelColor(0, strip.Color(255, 255, 255)); // White
// strip.setPixelColor(0, strip.Color(255, 255, 255));
strip.show();
}
// Pattern 2 - Red light, all LEDs in the strip are red
void pattern2() {
strip.setPixelColor(0, strip.Color(255, 0, 0)); // Red
strip.setPixelColor(1, strip.Color(255, 0, 0));
strip.setPixelColor(2, strip.Color(255, 0, 0));
strip.setPixelColor(3, strip.Color(255, 0, 0));
strip.setPixelColor(4, strip.Color(255, 0, 0));
strip.show();
}
// Pattern 3 - Orange light, all LEDs in the strip are orange
void pattern3() {
strip.setPixelColor(0, strip.Color(255, 128, 0)); // Orange
strip.setPixelColor(1, strip.Color(255, 128, 0));
strip.setPixelColor(2, strip.Color(255, 128, 0));
strip.setPixelColor(3, strip.Color(255, 128, 0));
strip.setPixelColor(4, strip.Color(255, 128, 0));
strip.show();
}
// Pattern 4 - Yellow light, all LEDs in the strip are yellow
void pattern4() {
strip.setPixelColor(0, strip.Color(255, 255, 0)); // Yellow
strip.setPixelColor(1, strip.Color(255, 255, 0));
strip.setPixelColor(2, strip.Color(255, 255, 0));
strip.setPixelColor(3, strip.Color(255, 255, 0));
strip.setPixelColor(4, strip.Color(255, 255, 0));
strip.show();
}
// Pattern 5 - Green light, all LEDs in the strip are green
void pattern5() {
strip.setPixelColor(0, strip.Color(0, 255, 0)); // Green
strip.setPixelColor(1, strip.Color(0, 255, 0));
strip.setPixelColor(2, strip.Color(0, 255, 0));
strip.setPixelColor(3, strip.Color(0, 255, 0));
strip.setPixelColor(4, strip.Color(0, 255, 0));
strip.show();
}
// Pattern 6 - Blue light, all LEDs in the strip are blue
void pattern6() {
strip.setPixelColor(0, strip.Color(0, 0, 255)); // Blue
strip.setPixelColor(1, strip.Color(0, 0, 255));
strip.setPixelColor(2, strip.Color(0, 0, 255));
strip.setPixelColor(3, strip.Color(0, 0, 255));
strip.setPixelColor(4, strip.Color(0, 0, 255));
strip.show();
}
// Pattern 7 - Violet light, all LEDs in the strip are violet
void pattern7() {
strip.setPixelColor(0, strip.Color(127, 0, 255)); // Violet
strip.setPixelColor(1, strip.Color(127, 0, 255));
strip.setPixelColor(2, strip.Color(127, 0, 255));
strip.setPixelColor(3, strip.Color(127, 0, 255));
strip.setPixelColor(4, strip.Color(127, 0, 255));
strip.show();
}
// Pattern 8 - Rainbow light, all LEDs in the strip are different colors
void pattern8() {
strip.setPixelColor(0, strip.Color(255, 0, 255)); // Red
strip.setPixelColor(1, strip.Color(255, 255, 0)); // Yellow
strip.setPixelColor(2, strip.Color(0, 255, 0)); // Green
strip.setPixelColor(3, strip.Color(0, 0, 255)); // Blue
strip.setPixelColor(4, strip.Color(127, 0, 255)); // Violet
strip.show();
}
// the loop routine runs over and over again forever;
void loop() {
// read that state of the pushbutton value;
int buttonVal = digitalRead(buttonPin);
if (buttonVal == LOW && oldButtonVal == HIGH) {// button has just been pressed
lightPattern = lightPattern + 1;
}
if (lightPattern > nPatterns) lightPattern = 1;
oldButtonVal = buttonVal;
switch(lightPattern) {
case 1:
pattern1();
break;
case 2:
pattern2();
break;
case 3:
pattern3();
break;
case 4:
pattern4();
break;
case 5:
pattern5();
break;
case 6:
pattern6();
break;
case 7:
pattern7();
break;
case 8:
pattern8();
break;
}
}
Weiter gehts in meinem nächsten Post...
SCHNELLEDIT:
DIE Antwort findet sich im letzten Post von mir, zusammen mit dem sketch.
button_test.ino (4.94 KB)