Ход работы
- Изучили материал
- Сделали схему и задали значения переменных, массивов и пинов
#include <LiquidCrystal.h> //библиотека lcd экрана
const int rs = 12, e = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2; //разъемы подключения lcd экрана
LiquidCrystal lcd(rs, e, d4, d5, d6, d7); //определение разъемов
//массивы типа данных byte содержат картинку
byte degree[8] = {0b01100, 0b10010, 0b10010, 0b01100, 0b00000, 0b00000, 0b00000, 0b00000};
byte sun[8] = {0b10000, 0b00110, 0b01111, 0b01111, 0b00110, 0b10000, 0b00101, 0b01001};
byte moon[8] = {0b00000, 0b00000, 0b01110, 0b11101, 0b11111, 0b01110, 0b00000, 0b00000};
byte C[8] = {0b01110, 0b10001, 0b10001, 0b10000, 0b10000, 0b10001, 0b10001, 0b01110};
byte up[8] = {0b00000,0b01110,0b10101,0b10101,0b10001,0b01110,0b00000,0b00000};
byte right[8] = {0b00000,0b01110,0b10001,0b10111,0b10001,0b01110,0b00000,0b00000};
byte down[8] = {0b00000,0b01110,0b10001,0b10101,0b10101,0b01110,0b00000,0b00000};
byte left[8] = {0b00000,0b01110,0b10001,0b11101,0b10001,0b01110,0b00000,0b00000};
//Потенциометр
int sensorValue = 2;
int Value_new;
//Свет
const int sensorPin = 1;
int lightLevel;
//Термодатчик
const int temperaturePin = 0;
float voltage;
int degreesC;
3. Задали значение каждого массива какому-то числу
void setup()
{
lcd.createChar(1, degree);
lcd.createChar(2, sun);
lcd.createChar(3, moon);
lcd.createChar(4, C);
//картинки для часов
lcd.createChar(5, up);
lcd.createChar(6, right);
lcd.createChar(7, down);
lcd.createChar(8, left);
}
4. Написали вспомогательные функции
float tmp_stat() //считает данные с термодатчика
{
voltage = getVoltage(temperaturePin); //получает вольтаж
degreesC = (voltage - 0.5) * 100.0; //по формуле считает градусы Цельсия
return voltage, degreesC; //возвращает градусы и вольтаж
}
float getVoltage(int pin) //получает вольтаж с термодатчика
{
return (analogRead(pin) * 0.004882814);
}
5. Далее все применялось и писалось в основном цикле
void loop()
{
lightLevel = analogRead(sensorPin); //считывает значение с фоторезистора
lightLevel = map(lightLevel, 300, 800, 0, 2); //переносит значения из одного диапозана в другой
lcd.begin(16, 2); //выставление размера экрана
tmp_stat();
//потенциометр
Value_new = analogRead(sensorValue); //считывает значение с потенциометра
Value_new = map(Value_new,0,1023,1,3); //переносит значения из одного диапозана в другой
//Основной код
if (Value_new == 1) //конструкция if. Если значение потенциометра равно 1, то
{
lcd.clear(); //lcd.clear() очищает экран
lcd.setCursor(5, 0); //lcd.setCursor() ставит курсор на позицию
lcd.print("Hello!"); //lcd.print() выводит на lcd экран текст/переменную
lcd.setCursor(11, 1);
lcd.print(voltage);
lcd.setCursor(15, 1);
lcd.print("V");
lcd.setCursor(0, 1);
lcd.print("24.05.22");
delay(1000);
}
else if(Value_new == 2)//иначе
{
lcd.clear();
if (degreesC > 100 || degreesC < 0)//если градусов меньше 100 или больше 0, то
{
lcd.setCursor(5,0);
}
else //иначе
{
lcd.setCursor(6,0);
}
lcd.print(degreesC);
lcd.setCursor(8,0);
lcd.write(4); //выводит картинку Цельсия
lcd.write(1); //выводит картинку градуса
lcd.setCursor(0,0);
lcd.print("Tue.");
if (lightLevel == 0) //если уровень света равен 0, то
{
lcd.setCursor(6, 1);
lcd.write(2); //выводит картинку солнца
lcd.print("Day");
delay(1000);
}
else if (lightLevel == 1) //иначе
{
lcd.setCursor(5, 1);
lcd.write(3); //выводит картинку луны
lcd.print("Night");
delay(1000);
}
delay(1000);
}
else if(Value_new == 3)
{
int timer = 8; //переменная "таймер"
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Timer:");
for (timer; timer != -1; timer--) //цикл обратного отсчета от 8 до 0
{
lcd.setCursor(7,0);
lcd.print(timer);
lcd.setCursor(7,1);
switch (timer) //конструкция switch case, которая берет значения из переменной timer и выполняет действия равное этому значению
{
case 8:
lcd.write(5);
break;
case 6:
lcd.write(6);
break;
case 4:
lcd.write(7);
break;
case 2:
lcd.write(8);
break;
case 0:
lcd.write(5);
break;
}
delay(1000);
}
lcd.clear();
lcd.setCursor(3,0);
lcd.print("Time out!!");
delay(1000);
lcd.clear();
}
}
Как работает информационный стенд
Собирается информация с датчиков
При значении потенциометра:
- Выводится “Hello!”, дата и вольтаж
- Выводится день недели, температура и в зависимости от уровня света “Day” + картинка солнца / “Night” + картинка луны
- Выводится надпись “Timer: ” и начинается обратный отсчет от 8 до 0. На 8 секунде стрелка часов вверх, на 6 вправо, на 4 вниз, на 2 влево, на 0 вверх
Ссылка на проект
https://www.tinkercad.com/things/01NX5n86A7l-edgarda-lcd-/editel?sharecode=zmy6fDQOFQizaFjcn5Jq_SsZTjg8BdG0DH4oyAfqUQI
Компоненты
- Фоторезистор – 1
- Резистор 220 Ом – 1
- Резистор 10 кОм – 1
- Термодатчик – 1
- Потенциометр – 1
- LCD 1602 – 1


Cхема подключения компонентов к плате

Возможности применения в жизни
LCD экран можно применить для:
- Вывода информации в игрушке, технике или на станке
