// Программа Два экрана с ЛСД
#include <LiquidCrystal_I2C.h> // подключаем библиотеку
#define LCD_I2C_ADDR 0x27 // параметры первого экрана
#define LCD_COLUMNS 16
#define LCD_LINES 2
#define LCD_ONE_I2C_ADDR 0x28 // параметры второго экрана
#define LCD_ONE_COLUMNS 16
#define LCD_ONE_LINES 2
#define MY_TEMP A0 // пин термодатчика
#define MY_BETA 3950 // коэффицент преобразования термодатчика
// создаем объект первого экрана
LiquidCrystal_I2C lcd(LCD_I2C_ADDR, LCD_COLUMNS, LCD_LINES);
// создаем объект втрого экрана
LiquidCrystal_I2C lcdOne(LCD_ONE_I2C_ADDR, LCD_ONE_COLUMNS, LCD_ONE_LINES);
void setup(){
lcd.init(); // настраиваем первый экран
lcd.backlight();
lcdOne.init(); // настраиваем второй экран
lcdOne.backlight();
lcd.setCursor(2, 0); // задаем положение курсора
lcd.print("HELLO WORLD!"); // выводим надпись "HELLO WORLD!"
// хулиганим: выведем надпись "Наш хер твёрд!";
// для этого в diagram.json включаем расширенный набор символов - А02
lcd.setCursor(1, 1); // задаем положение курсора
lcd.write(72); // выведем букву "Н" - английская "H"
lcd.write(97); // выведем букву "а" - английская "a"
lcd.write(139); // выведем букву "Ш" - русской строчной "ш" нет в наборе символов
lcd.write(32); // выведем пробел
lcd.write(88); // выведем букву "Х" - английская "X"
lcd.write(101); // выведем букву "е" - английская "e"
lcd.write(112); // выведем букву "р" - английская "p"
lcd.write(32); // выведем пробел
lcd.write(84); // выведем букву "Т" - английская "T"
lcd.write(66); // выведем букву "В" - английская "B", строчной "в" нет в наборе символов
lcd.write(235); // выведем букву "ё" - русская строчная "ё"
lcd.write(112); // выведем букву "р" - английская "p"
lcd.write(103); // выведем букву "g" - английская "g", больше похожа на строчную "д" русского алфавита
lcd.write(33); // выведем восклицательный знак
pinMode(MY_TEMP, INPUT); // задаем режим пина, к которому подключен термодатчик
// выводим надпись "ТЕМПЕРАТУРА:"
lcdOne.setCursor(0, 0); // задаем положение курсора
lcdOne.print("TEM"); // выводим первую часть слова английскими буквами
lcdOne.write(135); // выводим русскую "П"
lcdOne.print("EPAT"); // выводим вторую часть слова английскими буквами
lcdOne.write(136); // выводим русскую "У"
lcdOne.print("PA:"); // выводим оставшуюся часть слова английскими буквами
// выводим надпись "°С"
lcdOne.setCursor(8, 1); // задаем положение курсора после цифр вывода значения температуры
lcdOne.write(176); // выводим символ "градус"
lcdOne.print("C"); // выводим "С"
}
void loop(){
// получаем входной сигнал от термодатчика и преобразуем его в градусы Цельсия
float te = 1 / (log(1 / (1023. / analogRead(MY_TEMP) - 1)) / MY_BETA + 1.0 / 298.15) - 273.15;
// выводим показания температуры
lcdOne.setCursor(1, 1); // задаем положение курсора
lcdOne.print(String(te)); // выводим показания температуры
}