#include <LiquidCrystal_I2C.h>
/******************************************************************************
*************** ********************
*************** Bitte Werte / Pinbelegung anpassen ********************
*************** ********************
******************************************************************************/
// ***
#define CLK A5 //Pin Clock für Display ***
#define DIO A4 // Pin Data für Display ***
int M = 20; // Anzahl Messungen um Mittelwert zu berechnen ***
int button0 = 3; // Pin vom Taster ***
int valve0 = 4; // Pin für Ventil ***
int valve0time = 6000; // Entlüftungszeit in Millisekunden
int timer0wait = 10; // pumpzeit vom Lilian in sekunden
int diff = 50; // max Wert für druckverlust nach Messung
int time0wait= 5000; // warten nach pumpen ob druckverlust in millisekunden
float norm0[] = { 250, 350 }; // min + max für Messwert ***
float dif0 = 30; // warten bis messung beginnt (druckveränderung)
// ***
/******************************************************************************
*******************************************************************************
*******************************************************************************
******************************************************************************/
float pMittel = 0; // Variable um die Messungen "M" zusammenzurechnen
float pressure_hPa = 0; // Messwert vom Sensor
float pump = 10030.56; // Wert der Messung
float pumpDiff = 0; // Differenz des Messwert minus 0-Grundwert
float measurArray[] = {0,0,0,0,0 }; // Array um Messwerte zu Speichern
int menue = 2;
int measureZyc =0;
int t = timer0wait;
int min=norm0[0];
int max=norm0[1];
int display0menue=1;
int z=0;
int anders=0;
int zahlArray[2]{0,0};
String pass="";
String error0="";
bool button0read = false; // Variable für Taster drücken (false oder true)
bool button0on = false; // Variable für Taster AN / Aus(false oder true)
bool button0long = false; // Wenn Taster lange gedrückt wird TRUE
bool switch0 = false; // Variable für Relais (false oder true)
bool measureOn = false; // wenn Messung läuft true
bool measurWait = true; // warten das Lilian anfängt zu pumpen (true beim warten)
bool valve0ready = false; //
bool valve0on = false; // Entlüftung an
bool timer0loop=false; // hilfsvariable für timer
int temp0=0;
unsigned long button0millis = 0; // Taster entprellen millis auf 0
unsigned long measure0millis = 0; // Millis für den Messablauf
unsigned long valve0millis = 0; // Millis für Entlüften
unsigned long menue0millis = 0; // Millis für Entlüften
unsigned long zaehler0millis = 0; // Millis für Entlüften
int displayCase[2]={120,130};
long zahl=1;
//Adafruit_MPRLS mpr = Adafruit_MPRLS();
LiquidCrystal_I2C lcd(0x27, 20, 4);
void setup() {
lcd.init();
lcd.begin(0x27, 20, 4);
lcd.backlight();
pinMode(button0, INPUT_PULLUP); //Taster auf Pin "button0" mit Pullup Widerstand
pinMode(valve0, OUTPUT);
Serial.begin(9600);
menue0millis = millis();
}
void loop(){
displayCase[1]=display0menue;
anzeige();
Serial.println(
"menue:" + (String)display0menue+
" DC0:" + (String)displayCase[0] +
" DC1:" + (String)displayCase[1] +
" millis:" + (String)menue0millis +
" zahl:" + (String)zahl +
" Zahl-millis:" + (String)zaehler0millis +
" Z:" + (String)z +
" A:" + (String)anders +
" Z0:" + (String)zahlArray[0]+
" Z1:" + (String)zahlArray[1]
);
if(temp0=0){
menue0millis=millis();
temp0=1;
}
if (millis()-menue0millis>3000){
display0menue = display0menue +1;
menue0millis=millis();
if (display0menue > 5){
display0menue=1;
}
}
zaehler();
}
void anzeige(){
switch(display0menue){
case 1:
if(displayCase[0] != displayCase[1]){
lcd.setCursor(0,0);
lcd.print(" ");
lcd.setCursor(0,0);
lcd.print("********************");
lcd.setCursor(0,1);
lcd.print(" ");
lcd.setCursor(0,1);
lcd.print("** Lilian Labs **");
lcd.setCursor(0,2);
lcd.print(" ");
lcd.setCursor(0,2);
lcd.print("** Pumpentester **");
lcd.setCursor(0,3);
lcd.print(" ");
lcd.setCursor(0,3);
lcd.print("********************");
displayCase[0] = display0menue;
}
break;
case 2:
if(displayCase[0] != displayCase[1]){
lcd.setCursor(0,0);
lcd.print(" ");
lcd.setCursor(0,0);
lcd.print("");
lcd.setCursor(0,1);
lcd.print(" ");
lcd.setCursor(0,1);
lcd.print("Display 02");
lcd.setCursor(0,2);
lcd.print(" ");
lcd.setCursor(0,2);
lcd.print("");
lcd.setCursor(0,2);
lcd.print(" ");
lcd.setCursor(0,2);
lcd.print("");
lcd.setCursor(0,3);
lcd.print(" ");
lcd.setCursor(0,3);
lcd.print("");
displayCase[0] = display0menue;
}
break;
case 3:
if(displayCase[0] != displayCase[1]){
lcd.setCursor(0,0);
lcd.print(" ");
lcd.setCursor(0,0);
lcd.print("");
lcd.setCursor(0,1);
lcd.print(" ");
lcd.setCursor(0,1);
lcd.print("Display 03");
lcd.setCursor(0,2);
lcd.print(" ");
lcd.setCursor(0,2);
lcd.print("");
lcd.setCursor(0,3);
lcd.print(" ");
lcd.setCursor(0,3);
lcd.print("");
displayCase[0] = display0menue;
}
break;
case 4:
if(displayCase[0] != displayCase[1]){
lcd.setCursor(0,0);
lcd.print(" ");
lcd.setCursor(0,0);
lcd.print("");
lcd.setCursor(0,1);
lcd.print(" ");
lcd.setCursor(0,1);
lcd.print("Display 04");
lcd.setCursor(0,2);
lcd.print(" ");
lcd.setCursor(0,2);
lcd.print("");
lcd.setCursor(0,2);
lcd.print(" ");
lcd.setCursor(0,2);
lcd.print("");
lcd.setCursor(0,3);
lcd.print(" ");
lcd.setCursor(0,3);
lcd.print("");
displayCase[0] = display0menue;
}
break;
case 5:
if(displayCase[0] != displayCase[1]){
lcd.setCursor(0,0);
lcd.print(" ");
lcd.setCursor(0,0);
lcd.print("");
lcd.setCursor(0,1);
lcd.print(" ");
lcd.setCursor(0,1);
lcd.print("Display 05");
lcd.setCursor(0,2);
lcd.print(" ");
lcd.setCursor(0,2);
lcd.print("");
lcd.setCursor(0,2);
lcd.print(" ");
lcd.setCursor(0,2);
lcd.print("");
lcd.setCursor(0,3);
lcd.print(" ");
lcd.setCursor(0,3);
lcd.print("");
displayCase[0] = display0menue;
}
break;
case 6:
lcd.setCursor(0,0);
lcd.print(" ");
lcd.setCursor(0,0);
lcd.print("");
lcd.setCursor(0,1);
lcd.print(" ");
lcd.setCursor(0,1);
lcd.print("");
lcd.setCursor(0,2);
lcd.print(" ");
lcd.setCursor(0,2);
lcd.print("");
lcd.setCursor(0,2);
lcd.print(" ");
lcd.setCursor(0,2);
lcd.print("");
lcd.setCursor(0,3);
lcd.print(" ");
lcd.setCursor(0,3);
lcd.print("");
break;
case 7:
lcd.setCursor(0,0);
lcd.print(" ");
lcd.setCursor(0,0);
lcd.print("");
lcd.setCursor(0,1);
lcd.print(" ");
lcd.setCursor(0,1);
lcd.print("");
lcd.setCursor(0,2);
lcd.print(" ");
lcd.setCursor(0,2);
lcd.print("");
lcd.setCursor(0,3);
lcd.print(" ");
lcd.setCursor(0,3);
lcd.print("");
break;
case 8:
lcd.setCursor(0,0);
lcd.print(" ");
lcd.setCursor(0,0);
lcd.print("");
lcd.setCursor(0,1);
lcd.print(" ");
lcd.setCursor(0,1);
lcd.print("");
lcd.setCursor(0,2);
lcd.print(" ");
lcd.setCursor(0,2);
lcd.print("");
lcd.setCursor(0,3);
lcd.print(" ");
lcd.setCursor(0,3);
lcd.print("");
break;
case 9:
lcd.setCursor(0,0);
lcd.print(" ");
lcd.setCursor(0,0);
lcd.print("");
lcd.setCursor(0,1);
lcd.print(" ");
lcd.setCursor(0,1);
lcd.print("");
lcd.setCursor(0,2);
lcd.print(" ");
lcd.setCursor(0,2);
lcd.print("");
lcd.setCursor(0,3);
lcd.print(" ");
lcd.setCursor(0,3);
lcd.print("");
break;
case 10:
lcd.setCursor(0,0);
lcd.print(" ");
lcd.setCursor(0,0);
lcd.print("");
lcd.setCursor(0,1);
lcd.print(" ");
lcd.setCursor(0,1);
lcd.print("");
lcd.setCursor(0,2);
lcd.print(" ");
lcd.setCursor(0,2);
lcd.print("");
lcd.setCursor(0,3);
lcd.print(" ");
lcd.setCursor(0,3);
lcd.print("");
break;
case 11:
lcd.setCursor(0,0);
lcd.print(" ");
lcd.setCursor(0,0);
lcd.print("");
lcd.setCursor(0,1);
lcd.print(" ");
lcd.setCursor(0,1);
lcd.print("");
lcd.setCursor(0,2);
lcd.print(" ");
lcd.setCursor(0,2);
lcd.print("");
lcd.setCursor(0,3);
lcd.print(" ");
lcd.setCursor(0,3);
lcd.print("");
break;
case 12:
lcd.setCursor(0,0);
lcd.print(" ");
lcd.setCursor(0,0);
lcd.print("");
lcd.setCursor(0,1);
lcd.print(" ");
lcd.setCursor(0,1);
lcd.print("");
lcd.setCursor(0,2);
lcd.print(" ");
lcd.setCursor(0,2);
lcd.print("");
lcd.setCursor(0,3);
lcd.print(" ");
lcd.setCursor(0,3);
lcd.print("");
break;
}
}
void zaehler(){
if (z==0){
zaehler0millis = millis();
zahlArray[z]=zahl;
z=1;
}
if (millis()- zaehler0millis >1000){
zahl= zahl +1;
zahlArray[z]=zahl;
z=0;
if(zahl > 2000){
zahl = 1;
}
}
if(zahlArray[0]!=zahlArray[1]){
anders=1;
}else{anders=0;}
}