// https://wokwi.com/projects/430756529999670273
// Dummy-Code für wokwi, damit die Lspotentielle Lösung nicht
// schon direkt da steht oder abgekupfert werden kann:
#include <LiquidCrystal.h>
LiquidCrystal lcd(3, 2, 4, 5, 6, 7); // RS, E, D4, D5, D6, D7
const byte Kanaele[] = { A0,
A1,
A2,
A3,
A4,
A5,
20,
21 };
String Sensors[] = { "Ex.0-5V",
"Slider ",
"Poti ",
"TMP36 ",
"LM35 ",
"HIH4030",
"NTC KT8",
"PT9000 " };
String Groessen[] = { "U /V =",
"Laenge/%=",
"Winkel/.=",
"Temp/.C =",
"Temp/.C =",
"Feucht/%=",
"Temp/.C =",
"Temp/.C =" };
#define SP Serial.print
byte Bytes[6][8] = { { 0,0,0,0, 0,0,0,0 },
{ 16,16,16,16,16,16,16,16 },
{ 24,24,24,24,24,24,24,24 },
{ 28,28,28,28,28,28,28,28 },
{ 30,30,30,30,30,30,30,30 },
{ 31,31,31,31,31,31,31,31 } };
void setup() { // routine runs once after reset
// initialize the digital pin as an output.
lcd.begin(20,4);
lcd.print("kleiner Test"); lcd.clear();
for( byte i = 0; i < 6; i++ ) // #0 = leer, #5 = voll
lcd.createChar( i, Bytes[i] ); // Balkenanzeige
Serial.begin(9600) ;
for( byte i = 14 ; i <= 21 ; i++ ) pinMode( i, INPUT);
}
void Ausgabe ( byte kanal, int Umin, int Umax, String Text1,
String Text2="", int PGmin=0, int PGmax=0 );
void NTC( byte kanal ) ;
void PTx( byte kanal ) ;
void LCD( byte kanal ) ;
void RechnungOut( int U, byte index ) ;
float out = 0;
#define SPln Serial.println
#define lp lcd.print
void loop() { // runs over and over again
unsigned int adw, U ; byte kanal;
while(1){ // ... to be corrected by you / Bitte verbessern:
adw = analogRead(A2);
LCD(map(adw, 0,1023,0,7));
delay(2000);
}
}
void Ausgabe ( byte kanal, int Umin=0, int Umax=0, String Text1="",
String Text2="", int PGmin=0, int PGmax=0 ){
int adw = analogRead(Kanaele[kanal]);
float U = adw/1028*5;
SPln(adw);
SPln(U);
switch (kanal){
case 0:
out =
SP(Groessen[kanal]);
SPln(out);
break;
case 1:
out = adw/10.24;
SP(Groessen[kanal]);
SPln(out);
break;
case 2:
out = map(adw, 0, 1023, 0, 359);
SP(Groessen[kanal]);
SPln(out);
break;
case 3:
out = map(adw, 20, 358, -40, 125);
SP(Groessen[kanal]);
SPln(out);
break;
case 4:
out = map(adw, 0, 307, 0, 150);
SP(Groessen[kanal]);
SPln(out);
break;
case 5:
out = map(adw, 164, 778, 0, 100);
SP(Groessen[kanal]);
SPln(out);
break;
case 6:
NTC(kanal);
SP(Groessen[kanal]);
SPln(out);
break;
case 7:
PTx(kanal);
SP(Groessen[kanal]);
SPln(out);
break;
}
}
void NTC( byte kanal ){
int adw = analogRead(Kanaele[kanal]);
float celsius = 1 / (log(1 / (1023. / adw - 1))/ 3950.0 + 1.0 / 298.15) - 273.15;
out = celsius;
}
void PTx( byte kanal ){
int adw = analogRead(Kanaele[kanal]);
float celsius = (1 / (1023.0 / adw - 1) - 1 ) / 0.0039083 ;
out = celsius;
}
void LCD( byte kanal ){
int adw = analogRead(Kanaele[kanal]);
lcd.clear();
lcd.setCursor(0,0); lp(Sensors[kanal]);
lcd.setCursor(0,1); lp("ADW:"); lp(adw);
lcd.setCursor(0,2); lp("U/mV = "); lp(float(adw)/1023.0*5);
lcd.setCursor(0,3); lp(Groessen[kanal]); Ausgabe(kanal); lp(out);
int Balk = map(adw,0,1023,0,60);
for(int Balk, Balk > 0, Balk--){
if ( )
}
}