Arduino Interrupt Tutorial – Monotron Hack E07

In dieser Folge geht’s um sogenannte Interrupts – eine ganz wichtige Funktion am Arduino. Mit einem Interrupt lässt sich das laufende Programm jederzeit und an jeder Stelle im Loop unterbrechen, um kurz etwas anderes zu machen, ein anderes Stückchen Programmcode auszuführen, und danach dort wo man unterbrochen hat das Programm fortzusetzen. Die Besonderheit: Der Interrupt unterbricht dann, wenn ein externes Signal kommt – man braucht ihn nicht per digital.Read()-Befehl abfragen!

Und hier kommen der Beispiel-Code aus dieser Folge:

Alle vier Arduino-Sketche herunterladen (ZIP)

  • Demo 0 – Display-Demo & Encoder nach der alten Methode abfragen
  • Demo 1 – Aufbau Interrupt
  • Demo 2 – Interrupt abfragen und per Serial-Monitor ausgeben
  • Demo 4 – Display-Demo & Encoder mit Interrupt

Beteilige dich an der Unterhaltung

8 Kommentare

  1. Hey Götz,

    besten Dank für die Monotron Serie und überhaupt für deinen ganzen Blog. Bin gespannt wie du jetzt den MIDI-CV Teil implementieren wirst.

    Jetzt wo du den Teensy in dein Repertoire aufgenommen hast, kennst du bestimmt auch die Audio library die auf der Teensy Herstellerseite zu finden ist. Das wär doch bestimmt auch was für dich ? Versuche grad selbst damit einen digitalen Synthesizer samt Hardwareinterface zu bauen. In letzteren fließt ne Menge Knowhow aus deinem MIDI Controller ein.

    Mach weiter so und viele Grüße von der Schäl Sick!

  2. Hallo 🙂

    hab dein Code aus dem Video, in dem du Interrupts behandelst abgetippt. Leider funktioniert er, obwohl er wirklich exakt gleich ist, nicht. 🙁 Hat jemand ne Idee?

    LG Juls

  3. Der Code (aus Demo 2) hat bei mir leider auch nicht funktioniert.
    Erst als ich…
    attachInterrupt(2, encoderLesen, FALLING);
    …durch…
    attachInterrupt(digitalPinToInterrupt(2), encoderLesen, FALLING);
    …ersetzt habe.

  4. Demo 2 hat mit meinem UNO leider auch nicht funktioniert.
    Erst als ich…
    attachInterrupt(2, encoderLesen, FALLING);
    …durch…
    attachInterrupt(digitalPinToInterrupt(2), encoderLesen, FALLING);
    …ersetzt habe.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert