LCD 1602: свои символы и прогресс-бар

createChar рисует восемь собственных знаков — из них собирается плавная полоса.

Продвинутый уровень Arduino Uno C++
Схема подключения: LCD 1602: свои символы и прогресс-бар
Схема в симуляторе. Нажмите «Открыть в симуляторе», чтобы запустить её и поменять.

Что понадобится

Как подключить

ОткудаКуда
Arduino Uno5V→LCD 1602VDD
Arduino UnoGND→LCD 1602VSS
Arduino UnoGND→LCD 1602RW
Arduino UnoD12→LCD 1602RS
Arduino UnoD11→LCD 1602E
Arduino UnoD5→LCD 1602D4
Arduino UnoD4→LCD 1602D5
Arduino UnoD3→LCD 1602D6
Arduino UnoD2→LCD 1602D7

Скетч

#include <LiquidCrystal.h>

// У дисплея есть 8 своих знакомест: рисуем «столбики» шириной 1…5 точек
// и собираем из них прогресс-бар с шагом в пятую часть символа.
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

byte bar1[8] = { 0b10000, 0b10000, 0b10000, 0b10000, 0b10000, 0b10000, 0b10000, 0b10000 };
byte bar2[8] = { 0b11000, 0b11000, 0b11000, 0b11000, 0b11000, 0b11000, 0b11000, 0b11000 };
byte bar3[8] = { 0b11100, 0b11100, 0b11100, 0b11100, 0b11100, 0b11100, 0b11100, 0b11100 };
byte bar4[8] = { 0b11110, 0b11110, 0b11110, 0b11110, 0b11110, 0b11110, 0b11110, 0b11110 };
byte bar5[8] = { 0b11111, 0b11111, 0b11111, 0b11111, 0b11111, 0b11111, 0b11111, 0b11111 };

int percent = 0;

void setup() {
  lcd.begin(16, 2);
  lcd.createChar(1, bar1);
  lcd.createChar(2, bar2);
  lcd.createChar(3, bar3);
  lcd.createChar(4, bar4);
  lcd.createChar(5, bar5);
  lcd.print("Загрузка");
}

void drawBar(int pct) {
  int cells = pct * 16 / 100;          // сколько знакомест закрашено целиком
  int rest = (pct * 16 * 5 / 100) % 5; // и сколько столбиков в следующем
  lcd.setCursor(0, 1);
  for (int i = 0; i < 16; i++) {
    if (i < cells) lcd.write(byte(5));
    else if (i == cells && rest > 0) lcd.write(byte(rest));
    else lcd.print(" ");
  }
}

void loop() {
  drawBar(percent);
  lcd.setCursor(10, 0);
  lcd.print(percent);
  lcd.print("%  ");
  percent += 2;
  if (percent > 100) percent = 0;
  delay(200);
}

Коротко о детали: LCD 1602

Знакосинтезирующий дисплей: две строки по 16 символов. Данные передаются по шине D0–D7 (чаще используют только D4–D7) плюс линии RS и E. Контрастность задаётся напряжением на выводе V0 — обычно через подстроечный резистор.

Распиновка и все примеры →

Ещё примеры с деталью «LCD 1602»

Попробуйте сами

Симулятор работает прямо в браузере: схему можно менять, код — править, а результат видно сразу. Бесплатно, без установки и регистрации.

Открыть «LCD 1602: свои символы и прогресс-бар» в симуляторе