Ich möchte gern eine Servosequenz bei betätigen eines Tasters einleiten.
Wird der Taster nicht mehr betätigt, sollte die Seqenz bis zum Ende durchlaufen und Stoppen.
Könnt Ihr mit helfen den Taster in die Seqens einzubinden ?
HeWie:
Ich möchte gern eine Servosequenz bei betätigen eines Tasters einleiten.
Wird der Taster nicht mehr betätigt, sollte die Seqenz bis zum Ende durchlaufen und Stoppen.
Könnt Ihr mit helfen den Taster in die Seqens einzubinden ?
...
Aber warum sollten wir?
Nun gut - Dein Sketch steuert - egal was auch kommt - ein Servo an - mit jeder menge delay(9 drum herum.
Glücklicher Weise soll auch die ganze Ansteuerung abgefahren werden, wenn denn Mal ein Taster gedrückt wurde.
Also - Du musst doch nur am Anfang von loop() prüfen, ob besagter Taster 'gerade jetzt' gedrückt ist.
(Nebenbei: eine andere Zeit als 'gerade Jetzt' geht eh nicht)
Wenn der Taster gedrückt ist, beginnt der delay()-Spaß und kommt irgend wann vorne wieder an.
Dort wird erneut geprüft, ob der Taster gedrückt ist - wenn JA, geht's halt weiter.
Anders gefragt: Möchtest Du einen halbwegs ansehenswerten Sketch, oder ist diese Funktion Alles, was Du für Dein Glück brauchst?
Überlege weise - Letzteres könne dem geneigten Helfer suggerieren, daß Du gar kein Interesse an Arduino hast und somit die Hilfe 'spärlicher' ausfallen!
MfG
PS: Solltest Du die Tasterabfrage selber in den delay-Sketch rein bekommen: Du hast soeben was gelernt.
Wenn's gerne 'Mehr' sein darf - komme wieder und wir machen Deinen Sketch besser/erweiterbar!
Wenn am Ende der Sequenz (nachdem der Servo 5 sec in Stellung 60 war) der Taster gedrückt ist, egal ob immer noch oder inzwischen wieder, geht der ganze Spaß dann wieder von vorne los. Wenn während der ServoSequenz (also auch in den ersten 5 sec der Stop-Phase) der Taster erneut kurz gedrückt wird, passiert nichts.
Da nichts anderes explizit gefordert ist, kann man das als "Absicht" interpretieren und gut ist.
Die Aufgabenstellung
Ich möchte gern eine Servosequenz bei betätigen eines Tasters einleiten.
Wird der Taster nicht mehr betätigt, sollte die Seqenz bis zum Ende durchlaufen und Stoppen.
könnte man natürlich auch anders interpretieren.
Merkwürdig ist allerdings, dass der Servo am Anfang irgendwo steht, nach einer Sequenz mindestens 5 sec und dann beliebig lange in Stellung "60" bleibt. Woran man das "Stoppen" erkennen kann, ist mir nicht ganz klar.
Dann solltest du dich zwingend von deinen "delay()" komplett verabschieden.
Mit denen blockierst du alle weiteren Aktionen. Verwende dazu die Funktion millis().
Sieh dir das Beispiel BlinkWithoutDelay in der IDE an.