LCD ekraan

5.1 Katse LCD ekraani kasutamine

Используемые компоненты:

  • Arudiono Uno 1 шт
  • Плата 1 шт
  • Резистор 220 Om
  • Потенциометр 1 шт
  • Провода 14 шт
  • LCD экран 1 шт

Схема соединения:

Код:

// lisame LiquidCrystal library

#include <LiquidCrystal.h>

// määrame, milliste digitaalpesadega ekraan ühendatud on

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

// loome erisümbolid

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() {

// algväärtustatakse LDC ekraani read ja veerud

lcd.begin(16, 2);

// defineerime erisümbolid

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() {

// koht kuhu hakkame joonistama - 3. veerg, esimene rida

lcd.setCursor(2, 0);

// joonistame kassi

lcd.write(5);

// ja tüdruku

lcd.write(6);

//muudame kursori asukohta: 2. rida 14. veerg

lcd.setCursor(13, 1);

// joonistame poisi

lcd.write(3);

delay(400);

//muudame kursori asukohta: 1. rida 5. veerg

lcd.setCursor(4, 0);

//joonistame for tsükli abil väikese pausiga 10 smaili

for (int koht = 0; koht < 10; koht++) {

lcd.write(1);

delay(400);

}

lcd.setCursor(13, 1);

lcd.write(4);

//loobime südameid

for (int koht = 13; koht >= 4; koht--) {

lcd.setCursor(koht, 0);

lcd.write(7);

delay(400);

  }

delay(400);

}

Пояснение кода:

Ülesanne 5 – Interaktiivne infoekraan “Ilmajaam”

Описание работы:

Создать интерактивную метеостанцию на базе Arduino, отображающую погодные условия, полезные советы и другую информацию на LCD-дисплее, используя сенсоры и ручное управление с помощью потенциометра.

Используемые компоненты:

  • Arudiono Uno 1 шт
  • Плата 1 шт
  • Температурный датчик 1 шт
  • Фоторезистор 1 шт
  • Резистор 220 Om 2 шт
  • Резистор 10 кOm 2 шт
  • Потенциометр 10 кОм 1 шт
  • Провода 23 шт
  • LCD экран 1 шт

Схема соединения:

Код:

#include &lt;LiquidCrystal.h>

// Подключение LCD: RS, E, D4, D5, D6, D7
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

// Пины датчиков
const int tempPin = A0;   // TMP36
const int ldrPin = A1;    // LDR
const int potPin = A5;    // Потенциометр

// Иконки: солнце, дождь, снег
byte sun[8] = {
  0b00100, 0b10101, 0b01110,
  0b11111, 0b01110, 0b10101,
  0b00100, 0b00000
};

byte rain[8] = {
  0b00100, 0b01110, 0b11111,
  0b01110, 0b00100, 0b01010,
  0b10101, 0b00000
};

byte snow[8] = {
  0b01010, 0b00100, 0b11111,
  0b00100, 0b01010, 0b00000,
  0b00000, 0b00000
};

// Фразы
char* ilmTekstid[] = {
  "Tana on selge paev",
  "Valmistu vihmaks",
  "Udu piirab nakke",
  "Soojad riided selga!",
  "Naudi suveilma!"
};

void setup() {
  lcd.begin(16, 2);
  lcd.createChar(0, sun);
  lcd.createChar(1, rain);
  lcd.createChar(2, snow);

  lcd.setCursor(0, 0);
  lcd.print("PaiksePesa");
  lcd.setCursor(0, 1);
  lcd.print("Laen andmeid...");
  delay(2000);
  lcd.clear();
}

int previousZone = -1; // глобально

void loop() {
  int potValue = analogRead(potPin);
  float voltage = analogRead(tempPin) * 5.0 / 1023.0;
  float tempC = (voltage - 0.5) * 100.0;
  int light = analogRead(ldrPin);

  int currentZone = potValue / 200; // 0–5

  if (currentZone != previousZone) {
    lcd.clear();
    previousZone = currentZone;

    switch (currentZone) {
      case 0: // Режим 1 — погода
        lcd.setCursor(0, 0);
        if (tempC &lt; 5) {
          lcd.print("Vaga kylm! ");
          lcd.write(byte(2));
        } else if (tempC > 20 &amp;&amp; light > 800) {
          lcd.print("Soe ja m6nus ");
          lcd.write(byte(0));
        } else {
          lcd.print("Vihmane ilm ");
          lcd.write(byte(1));
        }
        lcd.setCursor(0, 1);
        lcd.print("Temp: ");
        lcd.print(tempC, 1);
        lcd.print(" C");
        break;

      case 1: // Режим 2 — фраза
        lcd.setCursor(0, 0);
        lcd.print("Ilmajaam ytleb:");
        lcd.setCursor(0, 1);
        lcd.print(ilmTekstid[random(0, 5)]);
        break;

      case 2: // Режим 3 — совет
        lcd.setCursor(0, 0);
        lcd.print("Soovitus:");
        lcd.setCursor(0, 1);
        lcd.print("Joo teed ja naudi!");
        break;

      case 3: // Режим 4 — данные
        lcd.setCursor(0, 0);
        lcd.print("Temp: ");
        lcd.print(tempC, 1);
        lcd.print(" C");
        lcd.setCursor(0, 1);
        lcd.print("Valgus: ");
        lcd.print(light);
        break;

      case 4: // Режим 5 — сводка
        lcd.setCursor(0, 0);
        lcd.print("Temp ");
        lcd.print(tempC, 0);
        lcd.print("C L:");
        lcd.print(light);
        lcd.setCursor(0, 1);
        lcd.print("PaiksePesa &lt;3");
        break;

      default:
        lcd.setCursor(0, 0);
        lcd.print("V2ljaspool vaadet");
        break;
    }
  }


  delay(1000); // плавная смена при вращении
}

Процесс работы:

Инициализация оборудования

  • Подключается дисплей с помощью библиотеки LiquidCrystal.
  • Загружаются пользовательские символы: солнце, дождь, снег.
  • На экране отображается заставка: PäiksePesa и сообщение «Laen andmeid…».

Считывание данных

  • Измеряется температура с TMP36, преобразуемая из напряжения
  • читывается уровень освещённости с LDR.
  • С потенциометра считывается значение от 0 до 1023, далее оно делится на 200 для получения “зоны” (режима отображения).

Переключение режимов
В зависимости от положения потенциометра, выбирается один из режимов (switch-case):

РежимЗначение potValueОписание
00–199Погода: иконка и температура
1200–399Случайная фраза
2400–599Совет: «Joo teed ja naudi!»
3600–799Отображение температуры и света
4800–1023Мини-сводка «Temp XXC L:YYY» и подпись
defaultСообщение об ошибке диапазона

Примеры отображения:

  • Температура < 5°C → «Väga külm!»
  • Температура > 20°C и яркий свет → «Soe ja mõnus»
  • В остальных случаях → «Vihmane ilm»
  • Фраза: случайная из массива "Ilmajaam ytleb: ..."
  • Совет: всегда «Joo teed ja naudi!»
  • Сводка: «Temp 24C L:682» + подпись «PäiksePesa <3»

Улучшение UX

  • Значение режима сохраняется в previousZone, и обновление экрана происходит только при изменении положения ручки. Это предотвращает ненужное мерцание дисплея.
  • Задержка в 1000 мс делает интерфейс плавным и отзывчивым.

Видео:

Применение LCD экрана в разных проектах:

Учебные и хобби-проекты

  • Погодная станция — отображает температуру, влажность, время и даже иконки солнца или дождя.
  • Таймер обратного отсчёта — отображает, сколько времени осталось, например, до старта ракеты.
  • Меню настроек Arduino — выбор режимов, управление кнопками или энкодером.
  • Простой калькулятор — показывает ввод и результат.
  • Секундомер или часы — отсчёт времени с отображением на экране.

Умный дом

  • Панель управления климатом — показывает температуру, режим обогрева/охлаждения.
  • Дисплей состояния системы — «дверь открыта», «окно закрыто», «охрана активирована».
  • Умный холодильник DIY — отображение температуры камер и напоминаний о продуктах.
  • Система автоматического полива — вывод текущей влажности почвы и расписания полива.

Автомобильные проекты

  • Бортовой компьютер — скорость, температура двигателя, напряжение аккумулятора.
  • Сигнализация с дисплеем — выводит статус «дверь открыта», «движение обнаружено».
  • GPS-навигация на Arduino — текущие координаты и направление.
  • Система парковки — отображение расстояния до препятствия.

Робототехника и мехатроника

  • Экран состояния робота — пишет “Зарядка”, “Атака!”, “Сплю…”.
  • Диагностика датчиков — показывает данные с ультразвука, гироскопа и т.п.
  • Настройка режимов работы — выбор поведения или маршрута.
  • Робот-курьер — показывает маршрут или сообщение получателю.

Арт и инсталляции

  • Цитатник на экране — каждый день новая фраза или шутка.
  • Интерактивные стихи — реагируют на датчики движения или освещённости.
  • Сенсорные эмоции — «LCD-лицо» показывает эмоции в зависимости от ситуации.
  • Музейная этикетка 2.0 — краткая информация о предмете при приближении посетителя.

Научные и лабораторные приборы

  • Измеритель температуры/влажности/рН — результат сразу на экране.
  • Логгер данных — отображение текущих измерений до сохранения.
  • Счётчик радиоактивности (Geiger) — показывает число импульсов в минуту.
  • Мультиметр своими руками — измерения напряжения, сопротивления и прочего.