The attachInterrupt() interrupt command
FunduinoLast updated on
Den laufenden Programmablauf sofort auf einen Tastendruck reagieren lassen
Material
Was ein Interrupt ist
Aufbau
Der Befehl attachInterrupt()
Sketch: LED per Interrupt umschalten
#define LED 7
#define TASTER 2
/*
Je nach Zustand der Variablen LEDStatus ist die LED ein- oder ausgeschaltet.
Beim Start des Programms ist sie ausgeschaltet.
volatile sorgt dafuer, dass Hauptprogramm und Interrupt-Routine
immer denselben aktuellen Wert sehen.
*/
volatile bool LEDStatus = LOW;
void setup()
{
pinMode(LED, OUTPUT);
// Mit INPUT_PULLUP liegt der Taster im Ruhezustand auf HIGH
// und wird beim Druecken auf LOW gezogen.
pinMode(TASTER, INPUT_PULLUP);
/*
FALLING = der Interrupt wird genau dann ausgeloest,
wenn der Pegel von HIGH nach LOW wechselt, also beim Druecken.
Mit CHANGE wuerde er auch beim Loslassen ausloesen und
der Zustand der LED waere danach wieder derselbe.
*/
attachInterrupt(digitalPinToInterrupt(TASTER), LEDSchalten, FALLING);
}
void loop()
{
// LED entsprechend dem gespeicherten Zustand schalten
digitalWrite(LED, LEDStatus);
}
// Interrupt-Service-Routine: wird beim Tastendruck aufgerufen
void LEDSchalten()
{
// LEDStatus umdrehen: aus true wird false, aus false wird true
LEDStatus = !LEDStatus;
}Rate the instructions