Interrupt im Programmablaufplan?
Hey, ich muss gerade für NWT einen PAP zeichnen.in dem Programm kommt auch der interrupt- Befehl vor. Ich weiß aber nicht wie genau ich ihn in den PAP einbauen soll. Der Interrupt-Befehl kommt im setup vor fällt er dann also unter start, so wie die ganzen Deklaration zum Beispiel auch? Wie würdet ihr das machen? Wohin geht der Pfeil dann nieder zurück vom unterprogramm?
meine Idee war diese hier (grobe Skizze, Befehle sind noch nicht eingetragen):
Das Programm hierzu ist übrigens das:
int warteZeit = 500;
int versagtZeit = 0;
int tasterStatus;
int tasterPin = 2;
int Pin;
int Signal = 0;
int startZeit = 500;
int LED1 = 4;
int LED2 = 5;
int LED3 = 6;
int LED4 = 7;
int LED5 = 8;
int DurchgangsZaehler = 0;
void setup() {
pinMode(tasterPin, INPUT_PULLUP);
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
pinMode(LED3, OUTPUT);
pinMode(LED4, OUTPUT);
pinMode(LED5, OUTPUT);
Serial.begin(9600);
attachInterrupt(digitalPinToInterrupt(tasterPin), tempo, FALLING);
}
void loop() {
for ( Pin = LED1; Pin < LED5; Pin++) {
digitalWrite(Pin, HIGH);
delay(warteZeit);
digitalWrite(Pin, LOW);
if (Signal == 1) {
for (DurchgangsZaehler = 0; DurchgangsZaehler < 3; DurchgangsZaehler++) {
digitalWrite(LED1, HIGH);
digitalWrite(LED2, HIGH);
digitalWrite(LED3, HIGH);
digitalWrite(LED4, HIGH);
digitalWrite(LED5, HIGH);
delay(200);
digitalWrite(LED1, LOW);
digitalWrite(LED2, LOW);
digitalWrite(LED3, LOW);
digitalWrite(LED4, LOW);
digitalWrite(LED5, LOW);
delay(200);
}
Signal = 0;
warteZeit=startZeit;
}
}
for ( Pin = LED5; Pin > LED1; Pin--) {
digitalWrite(Pin,HIGH);
delay(warteZeit); digitalWrite(Pin, LOW);
if (Signal == 1) {
for (DurchgangsZaehler = 0; DurchgangsZaehler < 3; DurchgangsZaehler++) {
digitalWrite(LED1, HIGH);
digitalWrite(LED2, HIGH);
digitalWrite(LED3, HIGH);
digitalWrite(LED4, HIGH);
digitalWrite(LED5, HIGH);
delay(200);
digitalWrite(LED1, LOW);
digitalWrite(LED2, LOW);
digitalWrite(LED3, LOW);
digitalWrite(LED4, LOW);
digitalWrite(LED5, LOW);
delay(200);
}
Signal = 0;
warteZeit=startZeit;
}
}
Serial.print("Wartezeit=");
Serial.println(warteZeit);
}
void tempo() {
if (digitalRead(tasterPin) == 0 && Pin == 6) {
warteZeit = warteZeit - 50;
Serial.print("Richtig gedrückt, Wartezeit beträgt nun ");
Serial.print(warteZeit);
Serial.println(" Millisekunden");
}
else {
Signal = 1;
}
}
Danke schonmal, falls ihr trotz dieser langen Frage antwortet
