#include <LiquidCrystal.h>
#include <math.h>
// Инициализируем объект-экран, передаём использованные
// для подключения контакты на Arduino в порядке:
// RS, E, D4, D5, D6, D7
LiquidCrystal lcd(12, 11, 10, 9, 8, 7);
const int temp1 = A0;
const int temp2 = A1;
const int temp3 = A2;
int maxTemp, minTemp, averageTemp;
float averageTemp1, averageTemp2, averageTemp3;
// Функция для перевода показаний датчика в градусы Цельсия
float Getterm(int RawADC)
{
float celsius = 1 / (log(1 / (1023. / RawADC - 1)) / 3950 + 1.0 / 298.15) - 273.15;
return celsius;
}
// Функция для вывода на экран показаний датчика
void printTemp(void)
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Max:");
lcd.print(maxTemp);
lcd.print("C Min:");
lcd.print(minTemp);
lcd.print("C");
lcd.setCursor(0,1);
lcd.print("Average:");
lcd.print(averageTemp);
lcd.print("C");
}
int averageNum(float temp, int pin){
for(int i = 0; i < 10; i++){
temp+=Getterm(analogRead(pin));
}
temp = temp/10;
return temp;
}
void setup(void)
{
lcd.begin(16, 2);
lcd.clear();
lcd.setCursor(0,0);
}
void loop(void)
{
averageTemp1 = averageNum(averageTemp1, temp1);
averageTemp2 = averageNum(averageTemp1, temp2);
averageTemp3 = averageNum(averageTemp1, temp3);
//max
if((averageTemp1 > averageTemp2)&&(averageTemp1 > averageTemp3)){
maxTemp = averageTemp1;
} else if(averageTemp2 > averageTemp3){
maxTemp = averageTemp2;
} else {
maxTemp = averageTemp3;
}
// min
if((averageTemp1 < averageTemp2)&&(averageTemp1 < averageTemp3)){
minTemp = averageTemp1;
} else if(averageTemp2 < averageTemp3){
minTemp = averageTemp2;
} else {
minTemp = averageTemp3;
}
averageTemp = (averageTemp1 + averageTemp2 + averageTemp3)/3;
printTemp(); // вывод температуры на экран
delay(100);
}