#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd1(0x27,20,4); // set the LCD address to 0x27 for a 16 chars and 2 line display
LiquidCrystal_I2C lcd2(0x28,20,4); // set the LCD address to 0x28 for a 16 chars and 2 line display
void setup() {
pinMode(2, OUTPUT); // пин 2 на выход
pinMode(3, OUTPUT); // пин 3 на выход
pinMode(4, OUTPUT); // пин 4 на выход
lcd1.init(); // initialize the lcd
lcd2.init(); // initialize the lcd
// Print a message to the LCD.
lcd1.backlight();
lcd2.backlight();
lcd1.setCursor(0,0);
lcd1.print("7.5.H/W Ko$tyLEV");
lcd1.setCursor(1,1);
lcd1.print("");
lcd1.setCursor(0,2);
lcd1.print("Arduino LCM IIC 2004");
lcd1.setCursor(2,3);
lcd1.print("Power By Ec-yuan!");
pinMode(A1, INPUT_PULLUP); // на вход А1
Serial.begin(115200); // speed port
}
void loop() {
int analogValue = analogRead(A1); //считываем значение с датчика, дальше алгоритм пересчета и преобразования в градусы по Цельсия:
const float BETA = 3950; // should match the Beta Coefficient of the thermistor
float celsius = 1 / (log(1 / (1023. / analogValue - 1)) / BETA + 1.0 / 298.15) - 273.15;
Serial.println("Temp " + analogRead(A1)); //считываем показания и выводим на терминал
lcd2.setCursor(2,0);
lcd2.print("Temperature:");
lcd2.setCursor(4,1);
lcd2.print(celsius);
lcd2.setCursor(10,1);
lcd2.print("*C");
delay(3000);
Serial.print("Temp: ");
Serial.print(celsius);
Serial.print(" ");
if (celsius >= 20) {
digitalWrite(2, LOW); // вЫключаем LED GREEN
digitalWrite(3, LOW); // вЫключаем LED YELLOW
digitalWrite(4, HIGH); // включаем LED RED
lcd1.setCursor(0,1); // вторая строчка lcd1
lcd1.print(" DANGER "); // выводим на lcd1 (2строка) сообщение с тревогой (пробелы от "____ до текста DANGER НУЖНЫ для перекрытия следующего сообщения и выравнивания по центру экрана)
Serial.println("DANGER"); // вывод сообщения о тревоге
delay(3000); // задержка
}
else if (celsius >=15) {
digitalWrite(2, LOW); // вЫключаем LED GREEN
digitalWrite(3, HIGH); // вкл led yellow
digitalWrite(4, LOW); // вЫключаем LED RED
lcd1.setCursor(0,1); // вторая строчка lcd1
lcd1.print(" Attention "); // выводим на lcd1 сообщение с предупреждением
Serial.println("Attention "); // вывод предупреждения
delay(3000);
}
else if (celsius <15 && celsius >=10) {
digitalWrite(2, HIGH); // вкл led green
digitalWrite(3, LOW); // вЫключаем LED YELLOW
digitalWrite(4, LOW); // вЫключаем LED RED
lcd1.setCursor(0,1); // вторая строчка lcd1
lcd1.print(" Normal "); // выводим на lcd1 сообщение о норме
Serial.println("Normal "); // вывод сообщения о нормальной температуре
delay(3000);
}
else {
digitalWrite(2, LOW); // вЫключаем LED GREEN
digitalWrite(3, LOW); // вЫключаем LED YELLOW
digitalWrite(4, LOW); // вЫключаем LED RED
lcd1.setCursor(0,1); // вторая строчка lcd1
lcd1.print(" "); // затираем надписи второй строки пока нет никаких сообщений
}
}
//в этот раз разобрался, как отключать светодиоды при пеерходе с одного диапазона в другой =)