Hey Leute,
für ein neues Projekt verwende ich einzelne NeoPixel. Dabei soll jeweils ein Pixel mit jeweils einem Taster verbunden sein. Beim Betätigen des Tasters, soll das Pixel dann für knapp eine Sekunde aufleuchten und dann wieder ausgehen.
Ich habe insgesamt 20 Taster und 20 Neopixel.
Mein Code sieht für ein Neopixel so aus:
#include <Adafruit_NeoPixel.h>
#define PIN 3
#define NUMPIXELS 1
const int schalter = 7;
int push;
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
void setup() {
pixels.begin(); //This initializes the NeoPixel library
pinMode(schalter, INPUT);
Serial.begin(9600);
}
void loop() {
push = digitalRead(schalter); //
Serial.println(push);
if (push == 1) //Verarbeitung: Wenn der taster gedrückt ist (Das Spannungssignal ist hoch)
{ //Programmabschnitt des IF-Befehls öffnen.
pixels.setPixelColor(0, pixels.Color(0, 100, 0)); //dann soll die LED leuchten
pixels.show();
delay (900); //und zwar für für 5 Sekunden (5000 Millisekunden).
pixels.setPixelColor(0, pixels.Color(0, 0, 0)); //danach soll die LED aus sein.
pixels.show();
} //Programmabschnitt des IF-Befehls schließen.
else //...ansonsten...
{ //Programmabschnitt des else-Befehls öffnen.
pixels.setPixelColor(0, pixels.Color(0, 0, 0)); //...soll die LED aus sein.
pixels.show();
} //Programmabschnitt des else-Befehls schließen.
}
Ich habe jetzt schon etwas herum probiert bin aber auf keine funktionierende Lösung gekommen wie ich nun die anderen Taster + NeoPixel zum laufen bekomme.
Das war mein Lösungsansatz:
#include <Adafruit_NeoPixel.h>
#define PIN 3
#define NUMPIXELS 1
#define PIN1 5
const int schalter = 7;
const int schalter1 = 8;
int push;
int push1;
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
void setup() {
pixels.begin(); //This initializes the NeoPixel library
pinMode(schalter, INPUT);
pinMode(schalter1, INPUT);
Serial.begin(9600);
}
void loop() {
push = digitalRead(schalter); //
Serial.println(push);
if (push == 1) //Verarbeitung: Wenn der taster gedrückt ist (Das Spannungssignal ist hoch)
{ //Programmabschnitt des IF-Befehls öffnen.
pixels.setPixelColor(0, pixels.Color(0, 100, 0)); //dann soll die LED leuchten
pixels.show();
delay (900); //und zwar für für 5 Sekunden (5000 Millisekunden).
pixels.setPixelColor(0, pixels.Color(0, 0, 0)); //danach soll die LED aus sein.
pixels.show();
} //Programmabschnitt des IF-Befehls schließen.
else //...ansonsten...
{ //Programmabschnitt des else-Befehls öffnen.
pixels.setPixelColor(0, pixels.Color(0, 0, 0)); //...soll die LED aus sein.
pixels.show();
} //Programmabschnitt des else-Befehls schließen.
push1 = digitalRead(schalter1); //
Serial.println(push1);
if (push1 == 1) //Verarbeitung: Wenn der taster gedrückt ist (Das Spannungssignal ist hoch)
{ //Programmabschnitt des IF-Befehls öffnen.
pixels.setPixelColor(0, pixels.Color(0, 100, 0)); //dann soll die LED leuchten
pixels.show();
delay (900); //und zwar für ca. 1 Sekunde
pixels.setPixelColor(0, pixels.Color(0, 0, 0)); //danach soll die LED aus sein.
pixels.show();
} //Programmabschnitt des IF-Befehls schließen.
else //...ansonsten...
{ //Programmabschnitt des else-Befehls öffnen.
pixels.setPixelColor(0, pixels.Color(0, 0, 0)); //...soll die LED aus sein.
pixels.show();
} //Programmabschnitt des else-Befehls schließen.
}
Habt ihr einen Lösungsansatz?
Vielen Dank schonmal im Vorraus.