Benutzer-Werkzeuge

Webseiten-Werkzeuge


skript:interrupts

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
skript:interrupts [2018/10/02 19:34]
d.golovko
skript:interrupts [2021/01/27 19:02] (aktuell)
d.golovko [1. Interrupts in Arduino]
Zeile 10: Zeile 10:
 Manchmal muss ein Teil des Programms ausgeführt werden, sobald ein extermes (nicht vom Programm selbst gesteuertes) Erreignis passiert, z.B. wenn ein Knopf gedruckt wird.  Manchmal muss ein Teil des Programms ausgeführt werden, sobald ein extermes (nicht vom Programm selbst gesteuertes) Erreignis passiert, z.B. wenn ein Knopf gedruckt wird. 
  
-In Arduino gibt es für solche Fälle die Funktion [[https://​www.arduino.cc/​reference/​en/​language/​functions/​external-interrupts/​attachinterrupt/​|''​attachInterrupt()''​]]. Diese Funktion ​horscht ​auf ein Signal auf einem bestimmten Pin und, fallls ​das Signal detektiert wurde, ​führt ​den für diesen Fall vorgesehenen Code aus. Die Interrupts sind also eine der drei Möglichkeiten in Arduino, die Ausführung des Code in der Zeit zu steuern, neben [[https://​www.arduino.cc/​reference/​en/​language/​functions/​time/​delay/​|''​delay()''​]] und [[https://​www.arduino.cc/​reference/​en/​language/​functions/​time/​millis/​|''​millis()''​]]. ​ Der Vorteil von Interrupts ist, dass sie im Gegensatz zu ständigen Abfragen in ''​loop()''​ Resourcen sparen und vermeiden, dass das Signal verloren geht, wenn das Hauptprogramm in ''​loop()''​ gerade mit anderen Aufgaben beschäftigt ist. +In Arduino gibt es für solche Fälle die Funktion [[https://​www.arduino.cc/​reference/​en/​language/​functions/​external-interrupts/​attachinterrupt/​|''​attachInterrupt()''​]]. Diese Funktion ​horcht ​auf ein Signal auf einem bestimmten Pin und führtfalls das Signal detektiert wurde, den für diesen Fall vorgesehenen Code aus. Die Interrupts sind also eine der drei Möglichkeiten in Arduino, die Ausführung des Code in der Zeit zu steuern, neben [[https://​www.arduino.cc/​reference/​en/​language/​functions/​time/​delay/​|''​delay()''​]] und [[https://​www.arduino.cc/​reference/​en/​language/​functions/​time/​millis/​|''​millis()''​]]. ​ Der Vorteil von Interrupts ist, dass sie im Gegensatz zu ständigen Abfragen in ''​loop()''​ Resourcen sparen und vermeiden, dass das Signal verloren geht, wenn das Hauptprogramm in ''​loop()''​ gerade mit anderen Aufgaben beschäftigt ist. 
  
  
Zeile 69: Zeile 69:
 Schreibt ein Programm, welches auf Knopfdruck die eingebaute LED (''​LED_BUILTIN''​) anschaltet und nach 5 Sekunden wieder ausschaltet. Verwendet dabei Interrupts und ''​millis()''​. ​ Schreibt ein Programm, welches auf Knopfdruck die eingebaute LED (''​LED_BUILTIN''​) anschaltet und nach 5 Sekunden wieder ausschaltet. Verwendet dabei Interrupts und ''​millis()''​. ​
  
-<​hidden ​Eures Ergebnis könnt ihr mit dieser Musterlösung vergleichen.>​+<​hidden ​Euer Ergebnis könnt ihr mit dieser Musterlösung vergleichen.>​
 <code cpp> <code cpp>
 unsigned long timeButtonClick;​ // counts time since last button click unsigned long timeButtonClick;​ // counts time since last button click
Zeile 243: Zeile 243:
 ====2.4. Aussetzen von ''​draw()''​===== ====2.4. Aussetzen von ''​draw()''​=====
  
-Nun wollen wir dem Spieler klar machen, wenn das Spielziel erreicht ist. Wenn die “Katze” die “Maus” eingeholt hat, soll das Spiel anhalten und der Bildschirm rot werden. Dafür müssen wir ''​draw()''​ “ausschalten”. Das kann mit der Methode noLoop() gemacht werden.  ​+Nun wollen wir dem Spieler klar machen, wenn das Spielziel erreicht ist. Wenn die “Katze” die “Maus” eingeholt hat, soll das Spiel anhalten und der Bildschirm rot werden. Dafür müssen wir ''​draw()''​ “ausschalten”. Das kann mit der Methode ​''​noLoop()'' ​gemacht werden.  ​
  
 <figure label> <figure label>
skript/interrupts.1538501658.txt.gz · Zuletzt geändert: 2018/10/02 19:34 von d.golovko