Interrupt: Morsegerät

Lesezeit: 3 Minuten

Seite als PDF

Ein Taster löst mit Hil­fe eines Inter­rupts ein Ereig­nis aus: die LED leuchtet, solange der Taster gedrückt wird.

Der loop-Teil jedes Pro­gramms wird schrit­tweise abgear­beit­et. Es ist nicht möglich gle­ichzeit­ig einen anderen Befehl auszuführen.

Beispiel:

Jed­er delay()-Befehl stoppt den Pro­gram­ma­blauf für die angegebene Zeit. In dieser Zeit kann kein ander­er Befehl aus­ge­führt wer­den.

Den­noch gibt es dafür eine Lösung:

Ein Taster kann einem Inter­rupt zuge­ord­net wer­den (attach­In­ter­rupt). Wenn der Taster betätigt wird, löst er den Inter­rupt aus. Der nor­male Pro­gram­ma­blauf wird unter­brochen und die fest­gelegte Funk­tion (Inter­rupt-Ser­vice-Rou­tine) wird aus­ge­führt. Anschließend wird das Pro­gramm nor­mal fort­ge­set­zt.

attachInterrupt(digitalPinToInterrupt(TASTER), LED­Schal­ten, CHANGE);

Der Taster löst den Inter­rupt aus, die Inter­rupt-Ser­vice-Rou­tine LED­Schal­ten wird aufgerufen. Der Inter­rupt soll auf einen Wech­sel des Tasterzu­s­tands (LOW oder HIGH) reagieren.

Es gibt ver­schiedene Ereignisse, die den Inter­rupt aus­lösen kön­nen:

RISINGFALLINGCHANGE
der Inter­rupt wird aus­gelöst wenn sich der Sta­tus von LOW zu HIGH ändertder Inter­rupt wird aus­gelöst wenn sich der Sta­tus von HIGH zu LOW ändertder Inter­rupt wird aus­gelöst wenn sich der Sta­tus ändert

Am Arduino UNO und bei der Arduino Nano-Fam­i­lie muss der Taster zwin­gend am Pin 2 oder Pin 3 angeschlossen wer­den.
Der Arduino WiFi Rev 2 kann alle dig­i­tal­en Pins benutzen, die Arduino MKR-Boards ver­fü­gen über die Pins 0, 1, 4, 5, 6, 7, 8, 9 als Inter­rupt-Pins.

Zusätz­lich muss eine Varia­ble, die im Haupt­pro­gramm und in Inter­rupt-Funk­tio­nen ver­wen­det wird, als vola­ti­le defi­niert wer­den.
Varia­ble wer­den im RAM und tem­po­rär in inter­nen Reg­is­tern des Prozes­sors gespe­ichert, bear­bei­tet oder ver­än­dert. Es kann vor­kom­men, dass der Zus­tand der Varia­blen im ⇒SRAM durch eine neue Wert­zu­wei­sung für kur­ze Zeit nicht stimmt, da der let­zte Wert zunächst nur in Prozes­sor­reg­is­tern liegt. 

Das Schlüs­sel­wort vola­ti­le weist das Pro­gramm an, die Varia­ble immer aktuell im SRAM zu hal­ten. Damit wird garan­tiert, dass der jew­eils aktu­el­le Wert gela­den wird.

Außer­dem sind bei der Pro­gram­mierung ein­er Inter­rupt-Funk­tion einige Regeln zu beacht­en:

  • Der Pro­grammteil muss so kurz wie möglich sein.
  • Ver­wende kein delay().
  • Benutze auch kein Serial.print().

Benötigte Bauteile:

  • LED
  • Wider­stand 220 Ω
  • Taster
  • Leitungs­drähte

Beachte die ⇒Vor­wider­stände ver­schieden­er LEDs

Baue die Schal­tung auf.
(Fahre mit der Maus über das Bild, um die Beze­ich­nun­gen der Bauteile zu sehen)

Im Beispiel­pro­gramm ist die rote LED beim Start aus­geschal­tet.
Jed­er Druck auf den Taster löst den Inter­rupt aus und schal­tet die LED solange ein.

Beachte die Kom­mentare.


Startseite
Aufgaben A-Z
Suchen
Downloads
Fehlermeldungen
Seite als PDF

Verwandte Anleitungen:


    Letzte Aktualisierung: Nov. 13, 2025 @ 12:47