Hallo zusammen,
ich bin an meinen ersten Arduino Projekten und möchte gerne einen sketch um ein paar funktionen erweitern, momentan funktioniert der Sketch so das ich wenn ich das erste mal den Taster drücke LED1 für eine bestimmte Zeit angeht, wenn ich ihn ein zweites mal drücke LED2 für eine bestimmte Zeit angeht.
jetzt soll der Sketch um folgendes erweitert werden:
Wenn Taster 1. mal gedrückt:
LED1 - für 1000MS an
LED3 - blinkt für 1000MS, soll nach 1000MS blinken auf HIGH bleiben
Wenn Taster 2. mal gedrückt
LED2 - für 2000MS an
LED3 - blinkt für 2000MS, danach soll sie auf LOW bleiben
ich hoffe es ist logisch was ich meine
anbei der Code den ich bis jetzt hab, er funktioniert auch, jedoch leuchtet/blinkt noch keine LED weil ich nicht weiß wie ich den Taster nochmal abfragen kann.
Würde mich über hilfe sehr freuen.
#include <Bounce2.h>
#define NUM_BUTTONS 4
// Pins in Array ablegen
const byte btnpin[] = {A0, A1, A2, A3};
const byte ledApin[] = {6, 8, 10, 12};
const byte ledBpin[] = {7, 9, 11, 13};
bool toggle[NUM_BUTTONS];
bool btnflag; // Flanke Taster gedrückt
// mehrere Instanzen von Bounce in einem Array anlegen
// siehe Beispiel aus der Lib
Bounce * button = new Bounce[NUM_BUTTONS];
void setup() {
// put your setup code here, to run once:
for (int i = 0; i < NUM_BUTTONS; i++) {
// pins einstellen
button[i].attach(btnpin[i], INPUT_PULLUP);
button[i].interval(20);
pinMode(ledApin[i], OUTPUT);
pinMode(ledBpin[i], OUTPUT);
}
Serial.begin(9600);
}
void loop() {
// put your main code here, to run repeatedly:
for (int i = 0; i < NUM_BUTTONS; i++) {
button[i].update();
btnflag = button[i].fell();
if (btnflag) {
toggle[i] = !toggle[i]; // Wert toggeln
//Serial.print(toggle[i]);Serial.println(i);
}
timer(i, btnflag, toggle[i]);
}
}
void timer(int gruppe, bool flag, bool tog) {
// Speicher für die Zeiten hier static damit sie nicht
// verloren gehen.
uint32_t static altzeitA[NUM_BUTTONS];
uint32_t static altzeitB[NUM_BUTTONS];
if (flag) { // starten
Serial.print("starten Gruppe "); Serial.print(gruppe);
if (tog) { // LED A
altzeitA[gruppe]=millis();
digitalWrite(ledApin[gruppe], HIGH);
Serial.println(" LED A");
}
else { // LED B
altzeitB[gruppe]=millis();
digitalWrite(ledBpin[gruppe], HIGH);
Serial.println(" LED B");
}
}
// Zeit abgelaufen LED A
if (millis() - altzeitA[gruppe] >= 1000){
digitalWrite(ledApin[gruppe],LOW);
}
// Zeit abgelaufen LED B
if (millis() - altzeitB[gruppe] >= 2000){
digitalWrite(ledBpin[gruppe],LOW);
}
}
das ganze soll dann natürlich für 4 LEDs funktioniern,
z.B. soll A0 - an pin2 die led ansteuern.
A1 - an pin3
& so weiter..