//Dieses Programm zeigt die Temperatur des Mikrocontrollers an,
//die alle 250 Millisekunden aktualisiert wird.
//NTC-temperature sensor erzeugt eine Spannung, die von der Temperatur abhängt.
//Einmal Click auf dem Grüne Pfeile und dann auf dem Sensor und die Temperatur ändern
#include <LiquidCrystal_I2C.h>
#define BETA 3950
#define Cols 20
#define Rows 4
char deg[4] = {' ', 'C', 'F', 'K'};
LiquidCrystal_I2C lcd(0x27, Cols, Rows);
float toDegree(const unsigned int analogValue, const char degree = deg[0])
{
const float celsius = 1 / (log(1 / (1023. / analogValue - 1)) / BETA + 1.0 / 298.15) - 273.15;
switch(degree)
{
case 'C': return celsius; break;
case 'F': return celsius * 9/5 + 32; break;
case 'K': return celsius + 274.15; break;
default: return analogValue; break;
}
}
void setup()
{
lcd.begin(Cols, Rows);
lcd.backlight();
}
void loop()
{
float t = analogRead(A0);
for(unsigned int i = 0; i < 4; i++)
{
lcd.setCursor(0, i);
String result = String(toDegree(t, deg[i])) + " " + deg[i];
lcd.print(result);
for(unsigned int j = 0; j < Cols - result.length(); j++)
lcd.print(' ');
}
delay(250);
}