Jarny:
In deinem Code sehe ich folgendes Problem: Bei deiner Struktur wird das else immer ausgeführt wenn Bedingung digitalRead(prog5) == HIGH nicht zutrifft. Egal ob vorher schon andere Bedingungen gepasst haben. Whandall hats auch schon erklärt.
Ich vermute du willst das hier (Beachte die else ifs) . Nur wenn keiner der Fälle zutrifft wird der untere else-Block ausgeführt:
if (digitalRead(prog1) == HIGH) {
a = 60000;
p = 1180000;
}
else if (digitalRead(prog2) == HIGH) {
a = 120000;
p = 1160000;
}
else if (digitalRead(prog3) == HIGH) {
a = 60000;
p = 580000;
}
else if (digitalRead(prog4) == HIGH) {
a = 120000;
p = 560000;
}
else if (digitalRead(prog5) == HIGH) {
a = 30000;
p = 290000;
}
else { //Programm abbrechen
a = 0;
p = 0;
}
...
Danke für den Hinweis. Die If Abfrage funktioniert nun. Leider geht das Programm nach der If Abfrage nicht in die Schleife. Hast du mir hier noch ein Tipp?
unsigned long start;
unsigned long ende;
unsigned long p; //Pause
unsigned long a; //Arbeit
int pumpe = 12;
int led = 7;
int pin;
int pin1;
int pin2;
int pin3;
int pin4;
int pin5;
int i=0;
int j=0;
int button1 = 1;
int button2 = 2;
int button3 = 3;
int button4 = 4;
int button5 = 5; // Variable für Pin 8
int buttonStatus1;
int buttonStatus2;
int buttonStatus3;
int buttonStatus4;
int buttonStatus5; // in dieser Variable wird die Information
// abgespeichert ob der Taster gerade gerückt
// wird oder nicht
void setup() {
Serial.begin(9600);
while (!Serial) {
; // wait for serial port to connect. Needed for native USB port only
}
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(12, OUTPUT);
pinMode(pin1, INPUT);
pinMode(pin2, INPUT);
pinMode(pin3, INPUT);
pinMode(pin4, INPUT);
pinMode(pin5, INPUT);
pinMode(button1, INPUT); // definiere Pin 8 als Eingang
digitalWrite(button1, HIGH); // aktiviert den Pull- Up- Widerstand
pinMode(button2, INPUT);
digitalWrite(button2, HIGH);
pinMode(button3, INPUT);
digitalWrite(button3, HIGH);
pinMode(button4, INPUT);
digitalWrite(button4, HIGH);
pinMode(button5, INPUT);
digitalWrite(button5, HIGH);
digitalWrite(8, HIGH);
delay(250);
digitalWrite(8, LOW);
delay(250);
digitalWrite(9, HIGH);
delay(250);
digitalWrite(9, LOW);
delay(1000);
}
void loop() {
buttonStatus1 = digitalRead(1); // prüfe ob Taster gedrückt oder nicht und
buttonStatus2 = digitalRead(2); // speicher die Information in
buttonStatus3 = digitalRead(3);
buttonStatus4 = digitalRead(4);
buttonStatus5 = digitalRead(5);
Serial.print("pin1 :");
Serial.println(buttonStatus1);
Serial.print("pin2 :");
Serial.println(buttonStatus2);
Serial.print("pin3 :");
Serial.println(buttonStatus3);
Serial.print("pin4 :");
Serial.println(buttonStatus4);
Serial.print("pin5 :");
Serial.println(buttonStatus5);
Serial.println("______________________");
if (digitalRead(1) == LOW) {
a = 2000;
p = 6000;
//a = 60000;
//p = 1180000;
goto Programm;
Serial.println("Es wird das Programm 1 ausgeführt");
Serial.println("1min pumpen 1H Pause");
Serial.println("______________________");
}
else if (digitalRead(2) == LOW) {
a = 120000;
p = 1160000;
goto Programm;
Serial.println("Es wird das Programm 2 ausgeführt");
Serial.println("2min pumpen 1H Pause");
Serial.println("______________________");
}
else if (digitalRead(3) == LOW) {
a = 60000;
p = 580000;
goto Programm;
Serial.println("Es wird das Programm 3 ausgeführt");
Serial.println("1min pumpen 0.5H Pause");
Serial.println("______________________");
}
else if (digitalRead(4) == LOW) {
a = 30000;
p = 290000;
goto Programm;
Serial.println("Es wird das Programm 4 ausgeführt");
Serial.println("0.5min pumpen 0.25H Pause");
Serial.println("______________________");
}
else if (digitalRead(5) == LOW) {
a = 120000;
p = 28760000;
goto Programm;
Serial.println("Es wird das Programm 5 ausgeführt");
Serial.println("2min pumpen 24H Pause");
Serial.println("______________________");
}
else {
a = 0;
p = 0;
goto ProgrammEnde; //Programm abbrechen
Serial.println("Das Programm wird beendet.");
Serial.println("48H Pause");
Serial.println("______________________");
}
// Dieser Block wird ausgeführt
Programm:
Serial.print("Wert a: ");
Serial.print(a);
Serial.print("/ Wert b: ");
Serial.println(p);
digitalWrite(pumpe, HIGH);
Serial.println("Pumpe ein ");
delay(a);
digitalWrite(pumpe, LOW);
Serial.println("Pumpe aus ");
// Ab hier wird alles ausgelassen und zurück zum Anfang gesprungen
for (i = 0; i >= 3; i++) {
digitalWrite(led, HIGH);
Serial.print("Pin HIGH: ");
Serial.println(led);
delay(3000);
start = millis();
Serial.print("Start: ");
Serial.println(start);
for (j = 0; j >= p ; j = ende - start) {
digitalWrite(led, HIGH);
delay(1000);
digitalWrite(led, LOW);
delay(1500);
ende = millis();
Serial.print("Start: ");
Serial.print(start);
Serial.print(" / Ende: ");
Serial.print(ende);
Serial.print("/ j : ");
Serial.println(j);
}
led = led + 1;
Serial.print("LED Pin : ");
Serial.println(led);
Serial.print("i : ");
Serial.println(i);
}
ProgrammEnde:
delay(0);
}