mehrere Funktionen mit einem Taster ausführen?
Hallo
Ich möchte, dass ich wenn ich den Taster 1x drücke, die LEDs Weiss sind und wenn ich ihn 2x drücke, dass sie z.B. Blau sind. Wie kann ich so etwas machen?
Ich habe den Code, damit sie weiss sind schon einmal. Doch wie kann ich bei 2x drücken eine Funktion ausführen?
#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
#include <avr/power.h>
#endif
int tasterPin = 5; //taster an pin5
#define PIN 4 // An welchem Pin ist die LED angeschlossen
#define NUMPIXELS 60 // Anzahl LEDs
Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
#define DELAYVAL 30 // Definiert, dass die Variabel DELAYVAL 30millisekunden pause bedeutet
void setup() {
//
Serial.begin(115200);
Serial.println();
Serial.println("ESP gestartet");
pinMode(tasterPin, INPUT_PULLUP);
//
//einstellungen für LEDs
#if defined(__AVR_ATtiny85__) && (F_CPU == 16000000)
clock_prescale_set(clock_div_1);
#endif
// nur, falls man eine externe energiequelle hat
pixels.setBrightness(255); // Helligkeit auf 50 - höchster wert : 255
pixels.begin();
}
//einstellungen für LEDs ende
void loop() {
if (digitalRead(tasterPin) == LOW) {
Serial.println("Status: Taster Gedrückt");
Serial.println("Effekt wird abgespielt...");
delay(100);
pixels.clear(); // Schaltet alle Pixel auf "OFF"
for (int i = 0; i < NUMPIXELS; i++) { // Für jede LED...
//Das ist ein RGB LED streifen das R steht für ROT G = Grün und B = Blau
pixels.setPixelColor(i, pixels.Color(255, 255, 255));
pixels.show(); // Sendet die geänderten LED farben zum LED Streifen (neue Farbe)
delay(DELAYVAL); //pause
} //...
//
delay(30000); //30000 Millisekunden weiss (wartet 10000 Millisekunden)
//
for (int i = 0; i < NUMPIXELS; i++) { // Für jede LED...
pixels.setPixelColor(i, pixels.Color(0, 0, 0));
pixels.show();
delay(DELAYVAL); // Pause bevor es neu startet
}
} else {
Serial.println("Status: Taster nicht Gedrückt");
delay(100);
}
}//...
Danke für die Antworten :)
LG
1 Antwort
Hallo,
meinst du eine Stufenschaltung..z.B.:
1x drücken = LEDs weiss
erneut drücken = LEDs blau
erneut drücken LEDs rot
usw ??
Da nimmst du eine zusätzliche Variable wo du bei IF zusätzlich mitabfragst, wenn du den taster bereits gedrückt hattest und diese variable aktiv ist, bei erneutem drücken noch eine if-abfrage wo eine zweite funktion sich einschaltet.
oder meinst du 1x drücken LEDs weiss
2x schnell drücken ohne dass die leds weiss werden blau eingeschalten werden?
da musst du einen timer zusätzlich nutzen z.B. <1s wo nach dem timeout die gezählten drücke eine funktion stattfindet.
Ahhhhhh
Vielen Dank. Habe dazu etwas im Internet gefunden :)
Nun funktioniert es.