Katse LCD ekraani kasutamine
Цель:
Научиться подключать LCD-дисплей 1602 к Arduino, выводить на него текст и рисовать движущиеся пользовательские символы с помощью функции lcd.createChar().
Использованные компоненты:
- 1 × Arduino UNO
- 1 × LCD-дисплей 1602
- 1 × Потенциометр (для настройки контрастности экрана)
- 1 × Резистор (220 Ω для подсветки дисплея)
- Провода
- Макетная плата (breadboard)
Схема подключения:

Код программы:
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
byte smiley[8] ={0b00000,0b00000,0b01010,0b00000,0b00000,0b10001,0b01110,0b00000};
byte armsDown[8] ={0b00100,0b01010,0b00100,0b00100,0b01110,0b10101,0b00100,0b01010};
byte armsUp[8] ={0b00100,0b01010,0b00100,0b10101,0b01110,0b00100,0b00100,0b01010};
byte kass[8] ={0b00000,0b00000,0b00000,0b10000,0b10011,0b11111,0b01110,0b01010};
byte tydruk[8] ={0b00100,0b01010,0b00100,0b11111,0b00100,0b00100,0b01110,0b11111};
byte v2ikesyda[8] ={0b00000,0b00000,0b00000,0b11011,0b11111,0b11111,0b01110,0b00100};
void setup() {
lcd.begin(16, 2);
lcd.createChar(1, smiley);
lcd.createChar(3, armsDown);
lcd.createChar(4, armsUp);
lcd.createChar(5, kass);
lcd.createChar(6, tydruk);
lcd.createChar(7, v2ikesyda);
}
void loop() {
lcd.setCursor(2, 0); lcd.write(5); lcd.write(6); // кот и девочка
lcd.setCursor(13, 1); lcd.write(3); // мальчик (руки опущены)
delay(400);
lcd.setCursor(4, 0);
for (int koht = 0; koht < 10; koht++) {
lcd.write(1); // смайлики
delay(400);
}
lcd.setCursor(13, 1); lcd.write(4); // мальчик (руки вверх)
for (int koht = 13; koht >= 4; koht--) {
lcd.setCursor(koht, 0);
lcd.write(7); // сердечки
delay(400);
}
delay(400);
Демонстрация работы:
Töö kestus milles() abil
Подходит для проектов:
- Часы, таймеры, отображение температуры, меню с кнопками и др.
- Простой способ визуализировать любую информацию с Arduino.
Что делает схема:
- LCD получает питание и управляющие сигналы от Arduino.
- Потенциометр регулирует контрастность текста на экране.
- Через пины D12, D11, D5, D4, D3, D2 передаются команды и данные.
Программный код:
unsigned long algusAeg; // Время старта
unsigned long kestus; // Прошедшее время
void setup() {
Serial.begin(9600);
algusAeg = millis(); // Запоминаем момент начала
Serial.println("Too algas!");
}
void loop() {
kestus = millis() - algusAeg;
unsigned long sekundid = kestus / 1000;
unsigned int tunnid = sekundid / 3600;
unsigned int minutid = (sekundid % 3600) / 60;
unsigned int sek = sekundid % 60;
Serial.print("Too kestus: ");
if (tunnid < 10) Serial.print('0');
Serial.print(tunnid);
Serial.print(':');
if (minutid < 10) Serial.print('0');
Serial.print(minutid);
Serial.print(':');
if (sek < 10) Serial.print('0');
Serial.println(sek);
delay(1000); // Обновление каждую секунду
}
Projektiülesanne: Ilmajaam LCD-ekraaniga
Цель:
Создание мини-метеостанции с ЖК-дисплеем, отображающей информацию о погодных условиях в реальном времени на основе данных от датчиков температуры и освещенности.
Используемые компоненты:
- Микроконтроллер: Arduino Uno
- Дисплей: ЖК-дисплей 16×2
- Датчик температуры: TMP36
- Датчик освещенности: Фоторезистор (LDR)
- Потенциометр: для регулировки контрастности дисплея
- Соединительные провода и макетная плата
Схема подключения:

Программный код:
#include <LiquidCrystal.h>
// LCD RS, E, D4–D7
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
// Пины
const int TMP_PIN = A1;
const int LDR_PIN = A0;
unsigned long lastUpdate = 0;
int displayIndex = 0;
char* ilmTekstid[] = {
"Paev selge ja soe",
"Pime ja vihmane",
"Udu piirab nakke",
"Riietu soojalt!",
"Naudi suvepaeva"
};
char* reklaam[] = {
"Naerata! :)",
"Joo teed",
"Roheline maailm",
"Paikseenergia!",
"Ilus ilm!"
};
// Иконки
byte sun[8] = {
0b00100, 0b10101, 0b01110, 0b11111,
0b01110, 0b10101, 0b00100, 0b00000
};
byte rain[8] = {
0b00100, 0b01110, 0b10101, 0b00100,
0b01010, 0b10001, 0b00000, 0b00000
};
byte snow[8] = {
0b10101, 0b01110, 0b11111, 0b01110,
0b10101, 0b00000, 0b10101, 0b00000
};
byte fog[8] = {
0b00000, 0b11011, 0b00100, 0b11011,
0b00000, 0b10101, 0b00000, 0b00000
};
byte clockicon[8] = {
0b01110, 0b10001, 0b10111, 0b10101,
0b10001, 0b01110, 0b00000, 0b00000
};
void setup() {
lcd.begin(16, 2);
lcd.createChar(0, sun);
lcd.createChar(1, rain);
lcd.createChar(2, snow);
lcd.createChar(3, fog);
lcd.createChar(4, clockicon);
lcd.setCursor(0, 0);
lcd.print("Ilmajaam: PaiksePesa");
lcd.setCursor(0, 1);
lcd.print("Laen andmeid...");
delay(3000);
lcd.clear();
}
void loop() {
unsigned long currentMillis = millis();
if (currentMillis - lastUpdate > 5000) {
lastUpdate = currentMillis;
showWeather(displayIndex);
displayIndex = (displayIndex + 1) % 5;
}
}
void showWeather(int i) {
int light = analogRead(LDR_PIN);
int tempRaw = analogRead(TMP_PIN);
float voltage = tempRaw * 5.0 / 1023;
float temperature = (voltage - 0.5) * 100;
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(ilmTekstid[i]);
// Иконка: на основе температуры и освещения
lcd.setCursor(15, 0);
if (temperature < 5)
lcd.write(byte(2)); // ❄️
else if (light > 800)
lcd.write(byte(0)); // ☀️
else if (light > 500)
lcd.write(byte(3)); // 🌫️
else
lcd.write(byte(1)); // 🌧️
// Время и температура
lcd.setCursor(0, 1);
lcd.write(byte(4)); // часы
lcd.print(" ");
lcd.print((millis() / 1000 / 60) % 24);
lcd.print(":");
int mins = (millis() / 1000) % 60;
if (mins < 10) lcd.print("0");
lcd.print(mins);
// Реклама (первая буква)
lcd.setCursor(12, 1);
lcd.print("*");
lcd.print(reklaam[random(0, 5)][0]);
}
Демонстрация проекта:
🔗 Видео по ссылке + запись из tinkercad ⤵️
✅ Выводы
Во время этого задания я научилась подключать LCD-экран 1602 к Arduino и выводить на него текст. Также я попробовала создавать свои символы, например, смайлики и другие картинки, используя lcd.createChar(). Это было интересно, потому что дало возможность сделать экран более «живым».
С помощью потенциометра я смогла регулировать контрастность текста — это важно, чтобы всё хорошо видно. Ещё я узнала, как использовать millis(), чтобы посчитать, сколько времени работает программа.
Это задание дало мне полезные навыки, которые можно использовать в будущих проектах — например, сделать часы, меню или просто информативный экран для разных устройств.