Hallo Leute eine Frage zu dem sketch
#include <LiquidCrystal.h>
#include <AnalogMatrixKeypad.h>
#include "DHT.h"
#define DHTPIN 13
#define DHTTYPE DHT22 //DHT11, DHT21, DHT22
#define analogPin 0
AnalogMatrixKeypad AnMatrixKeypad(analogPin);
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
const int relaisPin = 6;
byte digit =0;
int number = 0;
int tauchen = 10;
int trocknen = 10;
int fertig = 0;
DHT dht(DHTPIN, DHTTYPE);
void setup() {
pinMode(relaisPin, OUTPUT);
digitalWrite(relaisPin, LOW);
lcd.begin(16, 2);
lcd.print("Anzahl Pruef?");
Serial.begin(9600);
}
void loop() {
char Key = AnMatrixKeypad.readKey();
if(Key != KEY_NOT_PRESSED){
Serial.println(Key);
switch (digit){
case 0: // erste Ziffer (1er-Stelle) wird eingelesen
number = (Key - 48)*100; // char wird umgerechnet in int (nach ASCII-Tabelle)*100
lcd.clear();
lcd.setCursor (0,0);
lcd.print ("Anzahl Pruef?");
lcd.setCursor(0,1);
lcd.print(number);
digit++;
break;
case 1: // 2. Ziffer (10-er Stelle) wird eingelesen.
number = number + (Key - 48)*10; // Taste mit 10 multiplizieren und zu number addieren
lcd.setCursor(0,1);
lcd.print(number);
digit++;
break;
case 2: // 3. Stelle (100er) wird eingelesen
number = number + (Key - 48)*1; // mit 1 multiplizieren und addieren
lcd.setCursor(0,1);
lcd.print(number);
lcd.setCursor(0,0);
lcd.print("Anzahl Richtig?");
digit++;
break;
case 3: // "4.Stelle" muss 'A' sein zum Abschluss
if (Key == KEY_A){
Serial.print("Eingegebene Zahl: ");
Serial.println(number);
lcd.clear();
lcd.setCursor(0,0);
lcd.print ("Bestaetigt");
lcd.setCursor(0,1);
lcd.print(number);
while (number > 0){
lcd.clear();
while (tauchen>0){
digitalWrite(relaisPin, HIGH);
lcd.clear();
float h = dht.readHumidity(); //Luftfeuchte auslesen
float t = dht.readTemperature(); //Temperatur auslesen
lcd.setCursor(0,0);
lcd.print ("Temp.");
lcd.setCursor(7,0);
lcd.print (t);
lcd.setCursor(0,1);
lcd.print ("Luftfeuchte");
lcd.setCursor(12,1);
lcd.print (h);
delay (5000);
tauchen--;
lcd.clear();
lcd.setCursor(0,0);
lcd.print ("Noch Pruefungen");
lcd.setCursor(0,1);
lcd.print(number);
delay (5000);
tauchen--;
lcd.clear();
lcd.setCursor(0,0);
lcd.print ("Fertige Pruefungen");
lcd.setCursor(0,1);
lcd.print(fertig);
delay (5000);
tauchen--;
}
while (trocknen >0) {
digitalWrite(relaisPin, LOW);
lcd.clear();
float h = dht.readHumidity(); //Luftfeuchte auslesen
float t = dht.readTemperature(); //Temperatur auslesen
lcd.setCursor(0,0);
lcd.print ("Temp.");
lcd.setCursor(7,0);
lcd.print (t);
lcd.setCursor(0,1);
lcd.print ("Luftfeuchte");
lcd.setCursor(12,1);
lcd.print (h);
delay (5000);
trocknen--;
lcd.clear();
lcd.setCursor(0,0);
lcd.print ("Noch Pruefungen");
lcd.setCursor(0,1);
lcd.print(number);
delay (5000);
trocknen--;
lcd.clear();
lcd.setCursor(0,0);
lcd.print ("Fertige Pruefungen");
lcd.setCursor(0,1);
lcd.print(fertig);
delay (5000);
trocknen--;
}
fertig++;
tauchen = 10;
trocknen = 10;
number--;
}
}
digit = 0;
number = 0;
tauchen = 10;
trocknen = 10;
fertig = 0;
Key=KEY_NOT_PRESSED;
lcd.clear();
lcd.setCursor (0,0);
lcd.print ("Anzahl Pruef?");
break;
default:
Serial.println(" Eingabefehler ");
digit = 0;
number = 0;
break;
} // end switch
if(Key == KEY_B){
digit=0;
number=0;
Key=KEY_NOT_PRESSED;
lcd.clear();
lcd.setCursor (0,0);
lcd.print ("Anzahl Pruef?");
}
} // end if KEYPRESSED
} // end loop
Im case 3, gehe ich 3 while schleifen durch, wie kann ich denn in den while schleifen eine weitere Abbruch bedingung machen, ich versuchte es mit einer if-anweisung also
if(Key==KEY_B){…} aber das hat nicht funktioniert
hab ihr einen tipp?