Hallo, ich arbeite mit dem Arduino Uno und der Arduino IDE. Ich möchte ganz einfach unter bestimmten Umständen (zb wenn ich einen Mausklick mache) den Loop unterbrechen und eine bestimmte Handlung einsetzen lassen. Das Ganze soll erst wieder beendet werden, wenn ich erneut einen Mausklick mache, dann soll der Loop wieder normal durchlaufen werden. Ich denke die einfachste Variante in dem Fall wäre ein normaler Interrupt, liege ich da richtig? Es wäre echt super wenn ihr mir nur mit Pseudocode ein bisserl auf die Sprünge helfen könntet, wie das Ganze genau ausschauen müsste. Danke schonmal für eure Hilfe!
:
Verschoben durch User
https://www.arduino.cc/en/Guide/HomePage ... und noch ein Stichwort: ISR. Später dann, aber besser gleichzeitig, https://www.mikrocontroller.net/articles/AVR-GCC-Tutorial.
:
Bearbeitet durch User
Warum unterbrechen? Die loop läuft doch eh dauernd durch, also kann man einfach beim nächsten Durchlauf auf den Mausklick reagieren. Bei "normalen" Schleifendurchlaufszeiten fällt die Verzögerung nicht auf, der Mensch ist langsamer... also
1 | void loop() { |
2 | |
3 | ... irgendwas anderes ... |
4 | ... nochwas anderes ... |
5 | if (mausklick_wartet_auf_reaktion) { |
6 | ... reagiere auf mausklick ... |
7 | }
|
8 | ... und noch was anderes, z.B. tastendruck bearbeiten ... |
9 | }
|
man muss sich halt "delay(xxx)" in der loop verkneifen, und Wartezeiten durch millis() realisieren.
Jetzt ahne ich, was mit dem in diesem Forum immer wieder mal auftauchenden Begriff: 'Generation Arduino' gemeint ist.
Hallo, Steven schrieb: > Ich möchte ganz einfach unter bestimmten Umständen (zb wenn ich einen > Mausklick mache) den Loop unterbrechen und eine bestimmte Handlung > einsetzen lassen. Das Ganze soll erst wieder beendet werden, wenn ich > erneut einen Mausklick mache, dann soll der Loop wieder normal > durchlaufen werden. mich verwirrt etwas: Du hast eine Maus am Arduino Uno oder wo willst Du womit klicken? Gruß aus Berlin Michael
Weisse Bescheid, Michael? So wie immer. Der TO will wahrscheinlich die "Weltsteuerungsmaschine" bauen und bestimmtes, automatisiertes Verhalten per Mausklick vom PC aus beeinflussen. Aber das sagt er uns viiiíel später.
Steven schrieb: > Ich möchte ganz einfach unter bestimmten Umständen (zb wenn ich einen > Mausklick mache) den Loop unterbrechen und eine bestimmte Handlung > einsetzen lassen. > ... > Ich denke die einfachste Variante in dem Fall wäre ein normaler > Interrupt, liege ich da richtig? Wenn du "einsetzen" gegen "zwischendurch ausführen" tauscht, könntest du Recht haben.
Walter K. schrieb: > Jetzt ahne ich, was mit dem in diesem Forum immer wieder mal > auftauchenden Begriff: 'Generation Arduino' gemeint ist. Genau so ist es ;). Zum Thema: Mausklick erzeugt ein Interrupt und toggelt ein _Bool. Wenn dieses _Bool gesetzt ist (weil es z.B. "bWarten") heißt, dann macht die main loop eben nix. Und das alles natürlich in C ohne Arduino IDE. Pseudeocode:
1 | volatile _Bool bWait = false; |
2 | |
3 | ISR(){ |
4 | bWait = not bWait; |
5 | } |
6 | |
7 | loop(){ |
8 | if(bWait == true){ |
9 | //mache nix |
10 | } |
11 | else{ |
12 | //normaler programmfluss |
13 | } |
14 | } |
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.