// Подключаем две библиотеки для работы с LCD и математических вычислений
#include <LiquidCrystal.h>
#include <math.h>
// Инициализируем объект-экран, передаём использованные
// для подключения контакты на Arduino в порядке:
// RS, E, D4, D5, D6, D7
LiquidCrystal lcd(12, 11, 10, 9, 8, 7);
void setup(void)
{
Serial.begin(9600);
lcd.begin(16, 2);
lcd.clear();
lcd.setCursor(0,0);
}
// Функция для перевода показаний датчика в градусы Цельсия
float Getterm(int RawADC)
{
float celsius = 1 / (log(1 / (1023. / RawADC - 1)) / 3950 + 1.0 / 298.15) - 273.15;
return celsius;
}
float get_min(float t1, float t2, float t3)
{
return min(min(t1, t2), t3);
}
float get_max(float t1, float t2, float t3)
{
return max(max(t1, t2), t3);
}
float get_avg(float t1, float t2, float t3)
{
return ( (t1 + t2 + t3) / 3 );
}
// Функция для вывода на экран показаний датчика
void printTemp(void)
{
float temp1 = Getterm(analogRead(A0)); // считываем показания датчика 1
float temp2 = Getterm(analogRead(A1)); // считываем показания датчика 1
float temp3 = Getterm(analogRead(A2)); // считываем показания датчика 1
float t_min = get_min(temp1, temp2, temp3);
float t_max = get_max(temp1, temp2, temp3);
float t_avg = get_avg(temp1, temp2, temp3);
Serial.print("MIN = ");
Serial.println(t_min);
Serial.print("MAX = ");
Serial.println(t_max);
Serial.print("AVG = ");
Serial.println(t_avg);
lcd.clear();
lcd.setCursor(0,0);
lcd.print(" MIN MAX AVG ");
// lcd.setCursor(0,1);
// lcd.print(temp);
// lcd.print(" C");
lcd.setCursor(0,1);
lcd.print(t_min);
lcd.setCursor(6,1);
lcd.print(t_min);
lcd.setCursor(11,1);
lcd.print(t_min);
}
void loop(void)
{
printTemp(); // вывод температуры на экран
delay(1000);
}