Erstellen Sie einen externen Interrupt in Arduino

Adruino hat verschiedene Arten von Interrupts. Interrupt ist ein Prozess, bei dem Arduino seine reguläre Task stoppt oder seine Schleife stoppt und zur Interrupt-Funktion wechselt, um seine gegebene Interrupt-Funktions-Task abzuschließen. Externer Interrupt wird extern erstellt. Es gibt nur zwei externe Interrupt-Pins in Arduino uno . Sie sind Digital Pin 2 und Digital Pin 3.

Nach der Initialisierung des externen Interrupts, wenn sich das Signal in diesem Pin ändert. Dann wird ein externer Interrupt erzeugt.

Schritt 1: Externe Interrupt-Pins

Arduino uno hat zwei externe Interrupt-Pins, Digital-Pin 2 und Digital-Pin 3.

Arduino Mega verfügt über 6 externe Interrupt-Pins, Digital-Pin 2, Digital-Pin 3, Digital-Pin 21, Digital-Pin 20, Digital-Pin 19 und Digital-Pin 18.

Schritt 2: Arduino AttachInterrupt () Funktion

Die Funktion attachInterrupt () wird zum Erstellen eines externen Interrupts verwendet.

Syntax
attachInterrupt (Interrupt, ISR, Modus)

attachInterrupt (Pin, ISR, Modus) (nur Arduino Due)

Parameter

Interrupt: Die Nummer des Interrupts (int)

Pin: die Pin-Nummer (nur Arduino Due)

ISR: Der ISR, der aufgerufen werden soll, wenn der Interrupt auftritt. Diese Funktion darf keine Parameter annehmen und nichts zurückgeben. Diese Funktion wird manchmal als Interrupt-Serviceroutine bezeichnet. Modus: Definiert, wann der Interrupt ausgelöst werden soll. Vier Kontanten sind als gültige Werte vordefiniert:

(1) LOW: um den Interrupt auszulösen, wenn der Pin niedrig ist,

(2) ÄNDERN: Zum Auslösen des Interrupts, wenn der Pin seinen Wert ändert

(3) RISING: um auszulösen, wenn der Pin von niedrig nach hoch wechselt,

(4) FALLEN: Wenn der Stift von hoch nach niedrig wechselt.

Das Due Board erlaubt auch:

HIGH, um den Interrupt auszulösen, wenn der Pin hoch ist. (Nur Arduino fällig)

Kehrt zurück:

keiner.

Sie können dies auch auf der Arduino-Seite sehen. Link: //www.arduino.cc/en/Reference/AttachInterrup ...

Schritt 3: Schreiben eines externen Interrupt-Codes (Schritt 1)

Ziel ist es: Wir werden unser Aruino initialisieren, um den externen Interrupt in digitalem Pin 2 zu erkennen. Durch diesen externen Interrupt möchten wir eine Aufgabe abschließen. Die Aufgabe besteht darin, die LED an Pin 13 umzuschalten. Dies ist der Fall, wenn die LED im 13-Pin ist Ein, dann ist nach Erhalt des externen Interrupts 13 Pin aus.

NB: In der Interruptfunktion funktioniert delay () und millis () nicht. Sie können jedoch nur delayMicroseconds () verwenden.

Machen wir das.......

Schritt 4: Schreiben eines externen Interrupt-Codes (Void Setup ()) (Schritt 2)

In void setup () müssen wir den digitalen 13-Pin als Ausgangs- und Interrupt-Funktion attatchInterrupt () initialisieren.

void setup ()

{

PinMode (13, OUTPUT);

attachInterrupt (0, blinken, FALLEN);

}}

Hier wird Pin 13 als Ausgang deklariert. In der Funktion attachInterrupt () ist der erste Parameter "0". Dies ist Null, da wir den digitalen Pin 2 als externen Interrupt verwenden. Hier ist "blink" eine Interrupt-Funktion. Sie können einen beliebigen Namen geben, wenn Es gibt vier Zustände im Modus: LOW, CHANGE, RISING, FALLING und einen zusätzlichen für Arduino aufgrund von HIGH. Wir verwenden FALLING. Arduino arbeitet im digitalen Signal. Im digitalen Signal gibt es vier Zustände. Sie sind in der Abbildung dargestellt Wir verwenden FALLING, dh wenn in Pin 2 ein Signal mit fallender Flanke erkannt wird, wird die Funktion unterbrochen. Und die Aufgabe wird abgeschlossen.

Schritt 5: Schreiben eines externen Interrupt-Codes (Void Loop ()) (Schritt 3)

Normalerweise machen wir in diesem Code nichts in der Schleife. Aber Sie können jede Art von Aufgabe über den Code hinzufügen. Also in meinem Fall:

void loop ()

{

// Füge deine Aufgabe hinzu

}}

Schritt 6: Schreiben eines externen Interrupt-Codes (Void Blink ()) (Schritt 4)

Jetzt schreiben wir die Interrupt "Blink" -Funktion. Da dies eine Interrupt-Funktion ist. In dieser Funktion können wir nicht delay () und millis () verwenden. Aber wir können nur delayMicroseconds () verwenden.

void blink ()

{

digitalWrite (13, ! digitalRead (13)); // LED an Pin 13 umschalten

}}

Schritt 7: Schreiben eines externen Interrupt-Codes (endgültiger Code) (Schritt 5)

void setup ()

{

PinMode (13, OUTPUT);

attachInterrupt (0, blinken, FALLEN);

}}

void loop ()
{

// Füge deine Aufgabe hinzu

}}

void blink ()

{

digitalWrite (13, ! digitalRead (13)); // LED an Pin 13 umschalten

}}

Ähnlicher Artikel