#include <Arduino.h>
// Definition der Pins für Interrupts
#define INTERRUPT_PIN3 2
#define INTERRUPT_PIN4 3
#define INTERRUPT_PIN5 4
#define INTERRUPT_PIN6 5
// Interrupt-Flags
volatile bool interruptFlag3 = false;
volatile bool interruptFlag4 = false;
volatile bool interruptFlag5 = false;
volatile bool interruptFlag6 = false;
// ISR für Interrupt-Pin 3
void handleInterrupt3() {
interruptFlag3 = true;
}
// ISR für Interrupt-Pin 4
void handleInterrupt4() {
interruptFlag4 = true;
}
// ISR für Interrupt-Pin 5
void handleInterrupt5() {
interruptFlag5 = true;
}
// ISR für Interrupt-Pin 6
void handleInterrupt6() {
interruptFlag6 = true;
}
void setup() {
// Serielle Kommunikation starten
Serial.begin(9600);
// Pins als Eingang konfigurieren
pinMode(INTERRUPT_PIN3, INPUT);
pinMode(INTERRUPT_PIN4, INPUT);
pinMode(INTERRUPT_PIN5, INPUT);
pinMode(INTERRUPT_PIN6, INPUT);
// Interrupts konfigurieren
attachInterrupt(digitalPinToInterrupt(INTERRUPT_PIN3), handleInterrupt3, FALLING);
attachInterrupt(digitalPinToInterrupt(INTERRUPT_PIN4), handleInterrupt4, FALLING);
attachInterrupt(digitalPinToInterrupt(INTERRUPT_PIN5), handleInterrupt5, FALLING);
attachInterrupt(digitalPinToInterrupt(INTERRUPT_PIN6), handleInterrupt6, FALLING);
}
void loop() {
// Temporäre Flags kopieren, um Interrupts schnell zu verarbeiten
bool tempFlag3 = interruptFlag3;
bool tempFlag4 = interruptFlag4;
bool tempFlag5 = interruptFlag5;
bool tempFlag6 = interruptFlag6;
// Flags zurücksetzen, um Interrupts wieder zu erlauben
interruptFlag3 = false;
interruptFlag4 = false;
interruptFlag5 = false;
interruptFlag6 = false;
// Nachrichten für alle ausgelösten Interrupts senden
if (tempFlag3) {
Serial.println("Nachricht 1: Interrupt 3 ausgelöst!");
}
if (tempFlag4) {
Serial.println("Nachricht 2: Interrupt 4 ausgelöst!");
}
if (tempFlag5) {
Serial.println("Nachricht 3: Interrupt 5 ausgelöst!");
}
if (tempFlag6) {
Serial.println("Nachricht 4: Interrupt 6 ausgelöst!");
}
}
Loading
st-nucleo-l031k6
st-nucleo-l031k6