ich versuche eine LED dreimal blinken zu lassen. Dannach soll die LED ausgehen, jedoch komme ich beim Programm nicht weiter, könnte mir bitte jemand dabei helfen.
Über einen Taster soll die Funktion blinken im Loop aufegrufen werden. Die Funktion blinken soll nach den loslassen des Taster gestartet werden, also wenn die Variable Tasterstaus==HIGH ist. Dannach soll die LED dreimal blinken und wieder ausgehen.
Habe an zwei if-Abfragen gedacht eine zum einschalten der LED und eine zum ausschalten, jedoch weiß ich nicht, wie ich das blinken mit einbinden soll.
Der Sketch sieht im Moment so aus, dass wenn der Taster gedrückt wird die LED an geht und wenn der
Taster losgelasen wird diese LED wieder aus geht.
Es wäre sehr Nett, wenn mir jemand dabei helfen könnte und mir eine einfache Lösung vorschlagen würde.
int LEDblau=10;
int taster=3;
int tasterstatus=0;
void setup()
{
pinMode(LEDblau, OUTPUT);
pinMode(taster, INPUT);
}
void loop()
{
LEDan();
LEDaus();
blinken();
tasterstatus=digitalRead(taster);
}
void LEDan()
{
if (tasterstatus == HIGH)
{
digitalWrite(LEDblau, HIGH);
}
}
void LEDaus()
{
if (tasterstatus == LOW)
{
digitalWrite(LEDblau, LOW);
}
}
void blinken
{
//Code fürs Blinken mit millis()
}
du möchtest nur kurz den Taster drücken?
Dann darfst du natürlich den Low Pegel nicht verarbeiten, sonst überschreibt es den Pin der LED sofort wieder.
Wenn Taster high, startet die Funktion.
Wenn Taster high, status merken.
wenn status true, Blinken starten,
wenn blinken fertig, status zurücksetzen
Schreib erstmal die Blinksequence mit millis alleine, also das aller 1s die LED blinkt.
Dann erweiterste die Funktion das nur 3x geblinkt wird nach µC Reset. Da käme eine Zählvariable dazu.
Dann kommt der Taster dazu statt µC Reset.
Marvin97:
Es wäre sehr Nett, wenn mir jemand dabei helfen könnte und mir eine einfache Lösung vorschlagen würde.
Soll das ein Single-Task-Programm werden, das nur genau diese eine Sache machen soll, wie von Dir beschrieben, und sonst nichts?
Also kein Multitasking, mit noch einem zweiten oder dritten Button oder mehreren LEDs?
In dem Fall wäre die einfachste Lösung sowas in der Art:
und dazu zwei Funktionen schreiben
- bool buttonReleased() mitRückgabewert true beim Loslassen des Tasters;
- void dreimalBlinken() mit einer reimal zu durchlaufenden for-Schleife
Brauchst Du die zwei Funktionen auch noch, oder reicht die gepostete loop() Funktion, damit Du weiterkommst?
Das Programm soll später noch mehrer LED besitzen .
Nochmal zum Programm ich habe zwei Programme geschrieben z.B. Funktion1 und Funktion2 nun möchte ich, dass bei Betätigung des Tasters erst die Funktion1 dreimal druchläuft, dannach aufhört und die Funktion2 dreimal druchläuft.
Wenn die Funktion 2 dreimal druchgelaufen ist soll das Programm wieder mit der Funktion 1 starten und diese wieder dreimal durchlaufen.