Die Interrupt PINs werden zu jeder Zeit abgefragt, egal was der Arduino gerade macht. Egal ob gerade eine Delay Zeit abgewartet wird, ein analoger Eingang abgefragt wird oder eine Berechnung durchgeführt wird. Die Interrupt PINs werden permanent abgefragt. Es können aber nicht alle PINs als Interrupt Pin verwendet werden.
- Beim Arduino Uno sind das die PINs 2 und 3
- Beim Arduino Mega sind das die PINs 2,3,18,19,20 und 21
Interrupt PINs mit Ardublock
Der Block „Interrupt and do if“ wird nicht in das Hauptprogramm eingefügt. Es wird hier auch grafisch dargestellt, dass die Interrupt Rutinen nichts mit dem Hautprogram zu tun habe.
- In das „pin#“ Feld wird der digitale PIN eingetragen an dem der Interrupt verwendet werden soll.
- In dem Feld „event“ wird eingetragen auf was der Interrupt Block wartet. Also auf welches Ereignis (event) am PIN gewartet wartet wird.
- Change – löst aus wenn sich der Wert am PIN ändert
- Rising – löst aus wenn sich der PIN von LOW nach HIGH ändert.
- Falling - löst aus wenn sich der PIN von HIGH nach LOW ändert.
- HIGH – löst aus wenn der PIN HIGH wird.
- LOW – löst aus wenn der PIN LOW wird.
- In das Programm Feld darunter werden die Blöcke eingefügt, die das Programm im Falle eines Interrupt ausführen sol.
!!! In den Interrupt Block können zwar delay Zeiten eingefügt werden, diese werden aber nicht verarbeitet!!!
Es macht also keinen Sinn analoge Variablen usw. zu zählen. Da der Taster bzw. Eingang nicht entprellt ist!!! Etwas anders ist es zum Beispiel mit Encoder Motor oder ähnlichen ähnlichen entprellten Zählern, diese können sehr gut über die Interrupt PINs gezählt werden.
Was durch einen Interrupt PINs aber geändert werden kann ist eine digitale Variable, diese kennt nur zwei Zustände, somit ist das prellen des Tasters egal. Es können zudem digitale Ausgänge HIGH oder LOW geschaltet werden und vieles mehr.
Im Beispiel unten blinkt eine LED alle 5 Sekunden im Wechsel. Mit einem normalen Taster wäre es nicht möglich eine zweite LED in der delay Zeit zu schalten. Durch die Verwendung des Interrupt PINs lässt sich die LED aber unabhängig von der Delay Zeit einschalten. Die LED wird dann spätestens alle zwei Sekunden über das Programm wieder ausgeschaltet.
In diesem Beispiel wird über die beiden Interrupt PINs jeweils die digitale Variable von LOW nach HIGH umgeschaltet.
Interrupt PIN Bespiel mit „event“ HIGH
Interrupt PIN Bespiel mit „event“ LOW
Interrupt PINs mit Ardublock (letsgoink Vesion)
Den Block „Interrupt and do if“ gib es in dieser Version nicht. Um die Interrupt Funktion zu verwenden müssen die Unterprogramm Blöcke verwendet werden. Dazu werden sie einfach in interruptPIN + passende PIN Nummer umbenannt. Ansonsten funktioniert der Interrupt PIN genau wie in die originale Version. In die Klammer des ersten Blockes kommt dann das Programm das ausgeführt werden soll.