Arduino Tutorial #3 – Taster mit einem Interrupt einlesen

Arduino Kurs Teil 3
Hier wird der Taster per Interrupt eingelesen und die Interrupt Service Routine wird ausgeführt. Das Hauptprogramm muss also nicht ständig den Taster auslesen, sondern kann einfach durchlaufen. Der Tastendruck ruft sozusagen seine eigene Funktion auf.

Das Programm

// Ein Taster Interrupt schaltet die LED 13 ein und aus
// Beim Arduino Uno / Nano sind das Pin 2 oder Pin 3 für den Interrupt

int LED=13, taster=2, an=0;

void setup() {
  pinMode(taster,INPUT_PULLUP);
  attachInterrupt(digitalPinToInterrupt(taster), isrLedUmschalten, LOW);
}

void loop() {
  delay(1000);
}

void isrLedUmschalten() { 
  an=!an;
  digitalWrite(LED,an);
  while(!digitalRead(taster));
}

Das Programm mit der fallenden Flanke (FALLING)

// Ein Taster Interrupt schaltet die LED 13 ein und aus
// Beim Arduino Uno / Nano sind das Pin 2 oder Pin 3 für den Interrupt

int LED=13, taster=2, an=0;

void setup() {
  pinMode(taster,INPUT_PULLUP);
  attachInterrupt(digitalPinToInterrupt(taster), isrLedUmschalten, FALLING);
}

void loop() {
  delay(1000);
}

void isrLedUmschalten() { 
  an=!an;
  digitalWrite(LED,an);
}

Das Programm mit einem „Delay“ falls der Taster prellen sollte

// Ein Taster Interrupt schaltet die LED 13 ein und aus
// Beim Arduino Uno / Nano sind das Pin 2 oder Pin 3 für den Interrupt

int LED=13, taster=2, an=0;

void setup() {
  pinMode(taster,INPUT_PULLUP);
  attachInterrupt(digitalPinToInterrupt(taster), isrLedUmschalten, FALLING);
}

void loop() {
  delay(1000);
}

void isrLedUmschalten() { 
  an=!an;
  digitalWrite(LED,an);
  for(int i=0; i<40; i++) { // delay 40x500uSek=20mSek
    delayMicroseconds(500);
  }
}

von Matthias Busse

2 Gedanken zu „Arduino Tutorial #3 – Taster mit einem Interrupt einlesen

  1. Kirill Keller

    Vielen Dank funktioniert alles bestens, nur eins verstehe ich nicht. Der Sketch funktioniert so nur mit Pin 13, die anderen Pins muss ich zuerst im void setup als pinMode OUTPUT definieren.

    Antworten

Schreibe einen Kommentar

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

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.