Arduino.ru
Есть китайский символьный дисплей 4х20, судя по отзывам полностью ардуино-совместимый.
При включении горит подсветка и все.
Как проверить исплавность?
- Войдите на сайт для отправки комментариев
Втр, 28/05/2013 — 07:12
Зарегистрирован: 18.02.2013
2004 не юзал. На 1602, подключаю подсветку через 200-500 Ом и контрастность через переменник. Подаю напряжение и регулирую контрастность пока не отоброзится первая лини в прямоугольниках. Это режим само тестирование. Как увидел их четко. Подключаю остальные контакты вывожу символы, опять подрегулирую по вкусу. У 2004 думаю тоже есть режим самотестирования.
P.S. Все подключения при отключеном питании.:)
- Войдите на сайт для отправки комментариев
Втр, 28/05/2013 — 11:53
Andrey_Y_Ostanovsky
Зарегистрирован: 03.12.2012
Дак наверняка те же грабли, что и с 1602: нужен подбор версий библиотеки LiquidCrystal. Хотя в самодиагностику (строчка прямоугольников) — должно включаться при подключении только питания и регулятора контрастности.
- Войдите на сайт для отправки комментариев
Втр, 28/05/2013 — 23:12
Зарегистрирован: 23.05.2012
Да всё так же, как и для 16х2, только в setup пишем lcd.begin(20, 4);
- Войдите на сайт для отправки комментариев
Втр, 03/12/2013 — 17:01
Зарегистрирован: 25.11.2012
Подключил к UNO Winstar WH2004L по стандартной схеме как в примере HelloWorld.ino
Питание 5В от Arduino, контраст от неё же через переменник 20К, питание подсветки от отдельного бп 4,5В напрямую без резистора (с резистором 75Ом почему то вообще не светился, хотя пишут надо 100-150).
Проинициализировались при включении 1 и 3 строчки, на запуск скетча вообще никакой реакции.
Дисплей был рабочий, с неисправного девайса, но буквы показывал. Контроллер в дисплее, судя по описанию HD44780 or equivalent. Куда еще можно посмотреть?
Andrey_Y_Ostanovsky пишет:
Дак наверняка те же грабли, что и с 1602: нужен подбор версий библиотеки LiquidCrystal. Хотя в самодиагностику (строчка прямоугольников) — должно включаться при подключении только питания и регулятора контрастности.
что значит подбор версий библиотеки?
upd: в общем всё заработало, похоже забыл землю на 5 контакт R/W подать
- Войдите на сайт для отправки комментариев
Втр, 03/12/2013 — 18:20
Зарегистрирован: 05.01.2012
Народ, а можно ли подключать экран 3.3 В в напрямую к Li-Ion банке, т. о. до 4.2 В максимум? Просто при разряде ниже 40% AMS1117-3.3 не хочет работать, а питать только экран — на управляющих проводах напряжение будет больше чем напряжение питания.
Можно ли для решения этой проблемы поменять AMS1117 на стабилитрон?
- Войдите на сайт для отправки комментариев
Втр, 03/12/2013 — 20:29

Зарегистрирован: 15.06.2013
Мучаю 2004 с i2c модулем — без модуля тоже тестировал — мой запустился на стандартной библиотеке по 4 битам. Основные грабли как я понял это инициализация 4 бит режима у дисплея, там функции несколько раз вызываются, но это не помогает — как решение вызывать инициализацию lcd.begin() дважды. Мои эксперименты показали что при одинаронм вызове — при ресете дисплей стартует через раз, а при двойном вызове сразу — после любого ресета контроллера хоть по питанию хоть кнопкой.
Проблема скорее всего вызвана внутренним временем на обработку процедур(зависит похоже от конкретного экземпляра). Вобщем невижу ничего страшного чтобы инитить дисплей 2 раза — да хоть 3 — главное чтобы потом он работал.
Данное решение конечно «костыль» — кто знает решение подскажите.
- Войдите на сайт для отправки комментариев
Тестер LCD дисплеев на базе контроллера HD44780


Тестер LCD дисплеев.
— дисплеи на контроллере HD44780 или аналоге;
— число строк от 1 до 4;
— число знаков в строке — до 20;
— микроконтроллер ATMEGA8 .
Данный прибор предназначен для проверки символьных LCD типа 0802, 1601, 1602, 1604, 2002, 2004. С помощью него можно проверить состояние контактов между платой и стеклом, а так же посмотреть все «зашитые» в дисплей символы и их коды в ручном режиме и в режиме бегущей строки.
Для установки индикаторов с поверхностным расположением контактов используется обрезанный до нужной длины разъем от игровых приставок типа «Dendy», «Subor» и им подобных. Индикаторы с двухрядным разъемом сбоку подключаются к разъему IDC-16 с помощью шлейфа.
Питание прибора от батареи 6F22 (крона).
Управление прибором осуществляется двумя кнопками:
В исходном состоянии нажатие на любую кнопку включает прибор. Далее:
«+» — следующий символ;
«-» — предыдущий символ;
Одновременное нажатие кнопок «+» и «-» — вход в меню.
В меню можно выбрать параметры отображения информации на дисплее:
«Hand» — ручное переключение символов;
«Auto» — символы переключаются по порядку в виде бегущей строки;
«All» — засвечиваются все пиксели для проверки целостности токопроводящих «резинок».
При включении на экране засвечиваются все пиксели каждого знакоместа. Далее в первой строке отображаются символы, а во второй строке — соответствующий им HEX-код. (переключение между символами согласно режима, выбранного в меню).
Отключение прибора происходит автоматически. В режимах «Hand» и «All» — через 20 секунд после последнего нажатия на кнопки «+» или «-». В режиме «Auto» — через 5 секунд после отображения последнего символа.
Схема прибора построена на распространенном микроконтроллере ATmega8 в корпусе TQFP32:
Печатная плата выглядит так:
Фото собранного прибора:


Пара диодов припаяна со стороны печатных проводников. Во вложении уже откорректированная печатная плата с устранением этого недостатка.
Ну и вот так выглядит прибор в работе:

В архиве проект в Proteus, прошивка, печатная плата в формате Sprint-Layout и схема в формате sPlan.
Для вопросов и обсуждения на форуме создана отдельная тема.
Огромное спасибо Soir за программное обеспечение к данному прибору.
Авторські права 2024 © Схеми радіоаматорів. Усі права захищені.
Joomla! — безкоштовне програмне забезпечення, яке розповсюджується за ліцензією GNU Загальна публічна ліцензія.
2006-2021 © Українська локалізація Joomla! Україна.
Как проверить lcd 1602 дисплей на работоспособность


| Текущее время: Пн янв 08, 2024 21:20:28 |
Часовой пояс: UTC + 3 часа
Как проверить работоспособность дисплея?
| Страница 1 из 1 | [ Сообщений: 10 ] |
Заголовок сообщения: Как проверить работоспособность дисплея?
Добавлено: Пт сен 21, 2012 12:37:48
| Встал на лапы |
Дисплей DEM-16223SYH-PY, контроллер либо KS0070B или SPLC783A1.
Возникли непонятки с питанием, в одном даташите указано что 5в, в другом что 2.7-5.5 , есть еще пин для питания LCD.
Инициализирую по даташиту, пытаюсь что ни будь вывести на дисплей, но ничего не получается.
Можно ли как ни будь проверить дисплей на роаботоспособность путем подачи на него питания, безо всяких инициализаций
Заголовок сообщения: Re: Как проверить работоспособность дисплея?
Добавлено: Пт сен 21, 2012 21:27:00
| Открыл глаза |
zenek писал(а):
Возникли непонятки с питанием, в одном даташите указано что 5в, в другом что 2.7-5.5 , есть еще пин для питания LCD.
Инициализирую по даташиту, пытаюсь что ни будь вывести на дисплей, но ничего не получается.
Можно ли как ни будь проверить дисплей на роаботоспособность путем подачи на него питания, безо всяких инициализаций
Питание 5в. Проверка делается при подключении переменного резистора на 1,2,3 пины. Как и для других подобных дисплеев.
Вот документация на дисплей : http://www.elfa.spb.ru/uploads/tdpdf/htDEM16223SYHPY_EN.pdf
Заголовок сообщения: Re: Как проверить работоспособность дисплея?
Добавлено: Вс сен 23, 2012 17:14:50
| Грызет канифоль |
Без инициализации на дисплее слабо показывается первая строка(если крутить контраст на 2 выводе).
Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет
Заголовок сообщения: Re: Как проверить работоспособность дисплея?
Добавлено: Вс сен 23, 2012 17:24:33
| Открыл глаза |
Alexey123 писал(а):
Без инициализации на дисплее слабо показывается первая строка(если крутить контраст на 2 выводе).
При рабочем дисплее чётко видно прямоугольники в первой строке. Регулировка контраста на 3 ноге !
Вот рисунок для наглядности :
Комментарий к файлу: Пример подключения
wh1602.jpg [92.83 KiB]
Скачиваний: 4062
Качественное и безопасное устройство, работающее от аккумулятора, должно учитывать его физические и химические свойства, профили заряда и разряда, их изменение во времени и под влиянием различных условий, таких как температура и ток нагрузки. Мы расскажем о литий-ионных аккумуляторных батареях EVE и нескольких решениях от различных китайских компаний, рекомендуемых для разработок приложений с использованием этих АКБ. Представленные в статье китайские аналоги помогут заменить продукцию западных брендов с оптимизацией цены без потери качества.
Заголовок сообщения: Re: Как проверить работоспособность дисплея?
Добавлено: Сб окт 20, 2018 03:54:54
| Держит паяльник хвостом |
тоже возникла потребность в проверке 1602
у вас на картинке прямоугольники только в первой строке
а как вторую включить ?
на моей пины как у вашей платы
![]()
и есть программа на проверку вроде таких дисплеев через лпт порт http://www.labkit.ru/userfiles/file/doc . 128×64.rar
но как я не вертел их там у меня пины не совпадают
есть ли такая же программа тока под мою распиновку ?
Компания Компэл, официальный дистрибьютор EVE Energy, бренда №1 по производству химических источников тока (ХИТ) в мире, предлагает продукцию EVE как со склада, так и под заказ. Компания EVE широко известна в странах Европы, Америки и Юго-Восточной Азии уже более 20 лет. Недавно EVE была объявлена поставщиком новых аккумуляторных элементов круглого формата для электрических моделей «нового класса» компании BMW. Продукция EVE предназначена для самого широкого спектра применений – от бытового до промышленного.
Заголовок сообщения: Re: Как проверить работоспособность дисплея?
Добавлено: Сб окт 20, 2018 14:00:00
тут надо учесть еще вот што так можно проверит стандартные 16х1 дисплеи старых типоф новые и многострочные обчно ничео не выводяь есле шлей тактирования не подключен но это конечно апаратнозависимо просто такие дисплеи без такта закрывают сегментные ключи обесточивая матрицу
обнаружил это случайно проверяя кучку бу диспоф с разбора сначала хотел выкинуть те что не реагируют но подключиф шлей к плате от кассы[где паралелно 16×2стояли -вместо нарудного-покупателского цеплял индюки обнаружил что все выводится и на них
правда не все понимают кирилицу
_________________
Z Мудрость(Опыт и выдержка) приходит с годами.
Все Ваши беды и проблемы, от недостатка знаний.
Умный и у дурака научится, а дураку и ..
Алберт Ейнштейн не поможет и ВВП не спасет.и МЧС опаздает
Работа с символьными ЖК дисплеями 1602,2004.

Для работы с символьными графическими дисплеями предлагаем воспользоваться библиотекой LiquidCrystal которая входит в стандартный набор Arduino IDE и предназначена для работы по 8-битному (4-битному) параллельному интерфейсу. Если Ваш дисплей подключается к Arduino по аппаратной шине I2, то Вам нужно установить библиотеку LiquidCrystal_I2C (большинство функций которой повторяют функции первой библиотеки).
Поддерживаемые дисплеи:
| Дисплей | Подключение и инициализация |
|---|---|
| LCD1602 — символьный дисплей (16×02 символов), с параллельным интерфейсом (синий) |
#include LiquidCrystal lcd( 2 , 3 , 4 , 5 , 6 , 7 [ , 8 , 9 , 10 , 11 ] ); void setup()< lcd.begin( 16 , 2 ); > |
// Пояснение:
LiquidCrystal ОБЪЕКТ ( RS , E , D4 , D5 , D6 , D7 );
void setup()

// Пояснение:
LiquidCrystal ОБЪЕКТ ( RS , E , D4 , D5 , D6 , D7 );
void setup()

#1 Пример
Выводим надпись на дисплей LCD1602 подключённый по шине I2C. Для работы с дисплеем LCD2004 нужно изменить 3 строку на LiquidCrystal_I2C lcd(0x27,20,4);
#include // Подключаем библиотеку для работы с шиной I2C #include // Подключаем библиотеку для работы с LCD дисплеем по шине I2C LiquidCrystal_I2C lcd(0x27,16,2); // Объявляем объект библиотеки, указывая параметры дисплея (адрес I2C = 0x27, количество столбцов = 16, количество строк = 2) // Если надпись не появилась, замените адрес 0x27 на 0x3F void setup() < // lcd.init(); // Инициируем работу с LCD дисплеем lcd.backlight(); // Включаем подсветку LCD дисплея lcd.setCursor(0, 0); // Устанавливаем курсор в позицию (0 столбец, 0 строка) lcd.print("LCD"); // Выводим текст "LCD", начиная с установленной позиции курсора lcd.setCursor(0, 1); // Устанавливаем курсор в позицию (0 столбец, 1 строка) lcd.print("www.iarduino.ru"); // Выводим текст "www.iarduino.ru", начиная с установленной позиции курсора >// // void loop()<> // Код внутри функции loop выполняется постоянно. Но так как мы выводим статичный текст, нам достаточно его вывести 1 раз при старте, без использования кода loop
#2 Пример
Выводим надпись на дисплей LCD1602 подключённый по 4-битной параллельной шине. Для работы с дисплеем LCD2004 нужно изменить 5 строку на lcd.begin(20, 4);
#include // Подключаем библиотеку LiquidCrystal для работы с LCD дисплеем LiquidCrystal lcd(2,3,4,5,6,7); // Объявляем объект библиотеки, указывая выводы дисплея (RS,E,D4,D5,D6,D7) // Если используется 8 проводов шины данных, то указываем (RS,E,D0,D1,D2,D3,D4,D5,D6,D7) void setup() < // lcd.begin(16, 2); // Инициируем работу с LCD дисплеем, указывая количество (столбцов, строк) lcd.setCursor(0, 0); // Устанавливаем курсор в позицию (0 столбец, 0 строка) lcd.print("LCD2004"); // Выводим текст "LDC1602", начиная с установленной позиции курсора lcd.setCursor(0, 1); // Устанавливаем курсор в позицию (0 столбец, 1 строка) lcd.print("www.iarduino.ru"); // Выводим текст "www.iarduino.ru", начиная с установленной позиции курсора >// // void loop()<> // Код внутри функции loop выполняется постоянно. Но так как мы выводим статичный текст, нам достаточно его вывести 1 раз при старте, без использования кода loop
#3 Пример
Выводим надпись «Русский язык» на дисплей LCD1602 подключённый по шине I2C:
#include // Подключаем библиотеку для работы с шиной I2C #include // Подключаем библиотеку для работы с LCD дисплеем по шине I2C LiquidCrystal_I2C lcd(0x27,16,2); // Объявляем объект библиотеки, указывая параметры дисплея (адрес I2C = 0x27, количество столбцов = 16, количество строк = 2) // uint8_t symbol[6][8] = < // Объявляем массив из 6 собственных символов (к и й я з ы), каждый символ состоит из 8 байт < 0, 0,18,20,24,20,18, 0 >, // к < 0, 0,17,19,21,25,17, 0 >, // и , // й < 0, 0,15,17,15, 5, 9, 0 >, // я < 0, 0,14,17, 6,17,14, 0 >, // з < 0, 0,17,17,29,19,29, 0 >>; // ы // void setup() < // lcd.init(); // Инициируем работу с LCD дисплеем lcd.backlight(); // Включаем подсветку LCD дисплея lcd.createChar(1, symbol[0]); // Загружаем 1 символ "к" в ОЗУ дисплея lcd.createChar(2, symbol[1]); // Загружаем 2 символ "и" в ОЗУ дисплея lcd.createChar(3, symbol[2]); // Загружаем 3 символ "й" в ОЗУ дисплея lcd.createChar(4, symbol[3]); // Загружаем 4 символ "я" в ОЗУ дисплея lcd.createChar(5, symbol[4]); // Загружаем 5 символ "з" в ОЗУ дисплея lcd.createChar(6, symbol[5]); // Загружаем 6 символ "ы" в ОЗУ дисплея lcd.setCursor(0, 0); // Устанавливаем курсор в позицию (0 столбец, 0 строка) lcd.print("Pycc\1\2\3 \4\5\6\1"); // Выводим текст "Pycckий языk", где "Pycc" написано латиницей, а "kий языk" - символами из ОЗУ дисплея >// Если нужно вывести символ из ОЗУ дисплея, то пишем \ и номер символа // void loop()<> // Код внутри функции loop выполняется постоянно. Но так как мы выводим статичный текст, нам достаточно его вывести 1 раз при старте, без использования кода loop
#4 Пример
Выводим время прошедшее после старта на дисплей LCD1602 подключённый по шине I2C:
#include // Подключаем библиотеку для работы с шиной I2C #include // Подключаем библиотеку для работы с LCD дисплеем по шине I2C LiquidCrystal_I2C lcd(0x27,16,2); // Объявляем объект библиотеки, указывая параметры дисплея (адрес I2C = 0x27, количество столбцов = 16, количество строк = 2) // uint8_t tim_D, tim_H, tim_M, tim_S; // Объявляем переменные для хранения дней, часов, минут и секунд. uint32_t tim; // Объявляем переменную для хранения общего количества времени прошедшего после старта. // Если надпись не появилась, замените адрес 0x27 на 0x3F void setup() < // lcd.init(); // Инициируем работу с LCD дисплеем lcd.backlight(); // Включаем подсветку LCD дисплея >// // void loop() < // // Получаем время прошедшее после старта: // tim = millis() / 1000; // Получаем общее количество секунд (максимум 4'294'967 сек ≈ 49,7 дней). tim_S = tim % 60; // Получаем секунды: остаток от деления всех секунд на минуту (60 сек). tim = (tim-tim_S) / 60; // Получаем общее количество минут. tim_M = tim % 60; // Получаем минуты: остаток от деления всех минут на час (60 мин). tim = (tim-tim_M) / 60; // Получаем общее количество часов. tim_H = tim % 24; // Получаем часы: остаток от деления всех часов на день (24 час). tim_D = (tim-tim_H) / 24; // Получаем общее количество дней. // Выводим время прошедшее после старта: // if (millis()%1000<100)< // Условие выполняется в течении 100 первых миллисекунд каждой новой секунды. delay(100); lcd.setCursor(0, 0); // Устанавливаем курсор в позицию (0 столбец, 0 строка). lcd.print("Days: "); // Выводим текст. if(tim_D<10)// Выводим 0 перед количеством дней. lcd.print(tim_D ); // Выводим количество дней. lcd.setCursor(0, 1); // Устанавливаем курсор в позицию (0 столбец, 1 строка) lcd.print("Time: "); // Выводим текст. if(tim_H <10)// Выводим 0 перед количеством часов. lcd.print(tim_H ); // Выводим количество часов. lcd.print(':' ); // Выводим символ. if(tim_M <10)// Выводим 0 перед количеством минут. lcd.print(tim_M ); // Выводим количество минут. lcd.print(':' ); // Выводим символ. if(tim_S <10)// Выводим 0 перед количеством секунд. lcd.print(tim_S ); // Выводим количество секунд. > // > //
Функции, общие для библиотек LiquidCrystal и LiquidCrystal_I2C:
- begin(cols,rows,[char_size]); – Инициализация дисплея с указанием количества столбцов, строк и размера символа.
- clear(); – Очистка дисплея с установкой курсора в положение 0,0 (Занимает много времени!).
- home(); – Установка курсора в положение 0,0 (Занимает много времени!).
- display(); – Быстрое включение дисплея (без изменения данных в ОЗУ).
- noDisplay(); – Быстрое выключение дисплея (без изменения данных в ОЗУ).
- blink(); – Включение мигающего курсора (с частотой около 1 Гц).
- noBlink(); – Выключение мигающего курсора.
- cursor(); – Включение подчеркивания курсора.
- noCursor(); – Выключение подчеркивания курсора.
- scrollDisplayLeft(); – Прокрутка дисплея влево. Сдвиг координат дисплея на один столбец влево (без изменения ОЗУ).
- scrollDisplayRight(); – Прокрутка дисплея вправо. Сдвиг координат дисплея на один столбец вправо (без изменения ОЗУ).
- leftToRight(); – Указывает в дальнейшем сдвигать положение курсора, после вывода очередного символа, на один столбец вправо.
- rightToLeft(); – Указывает в дальнейшем сдвигать положение курсора, после вывода очередного символа, на один столбец влево.
- noAutoscroll(); – Указывает в дальнейшем выравнивать текст по левому краю от позиции курсора (как обычно).
- autoscroll(); – Указывает в дальнейшем выравнивать текст по правому краю от позиции курсора.
- createChar(num,array); – Запись пользовательского символа в CGRAM дисплея под указанным номером.
- setCursor(col,row); – Установка курсора в позицию указанную номером колонки и строки.
- print(data); – Вывод текста, символов или цифр на экран дисплея. Синтаксис схож с одноимённой функцией класса Serial.
Функции, реализованные только в библиотеке LiquidCrystal_I2C:
- init(); – Инициализация дисплея. Должна быть первой командой библиотеки LiquidCrystal_I2C после создания объекта. На самом деле данная функция есть и в библиотеке LiquidCrystal, но в той библиотеке она вызывается автоматически (по умолчанию) при создании объекта.
- backlight(); – Включение подсветки дисплея.
- noBacklight(); – Выключение подсветки дисплея.
- setBacklight(flag); – Управление подсветкой (true — включить / false — выключить), используется вместо функций noBacklight и backlight.
Подключение:
// Для шины I2C:
#include
#include
LiquidCrystal_I2C lcd( address , col , row );
void setup()lcd.init();
>
- address: Адрес дисплея на шине I2C — 0x27 или 0x3F
- col: количество столбцов реализованное у дисплея
- row: количество строк реализованное у дисплея
- RS: № вывода Arduino к которому подключён вывод RS
- E: № вывода Arduino к которому подключён вывод E
- D0. D3: № выводов Arduino к которым подключены выводы D0-D3
- D4. D7: № выводов Arduino к которым подключены выводы D4-D7
- col: количество столбцов реализованное у дисплея
- row: количество строк реализованное у дисплея
- col: количество столбцов реализованное у дисплея
- row: количество строк реализованное у дисплея
- size: размер символов, указывается константой:
LCD_5x8DOTS (по умолчанию), или LCD_5x10DOTS
/* Для шины I2C: */ #include // Подключаем библиотеку для работы с шиной I2C #include // Подключаем библиотеку для работы с LCD дисплеем по шине I2C LiquidCrystal_I2C lcd(0x3F,20,4); // Объявляем объект библиотеки, указывая параметры дисплея (адрес I2C = 0x3F, количество столбцов = 20, количество строк = 4) // void setup() < // lcd.init(); // Инициируем работу с LCD дисплеем lcd.backlight(); // Включаем подсветку LCD дисплея . // Выводим информацию, которая должна отображаться при старте >// // void loop()<> // . // Выводим информацию которая должна меняться по алгоритму Вашего кода > //
/* Для 4 проводной параллельной шины: */ #include // Подключаем библиотеку LiquidCrystal для работы с LCD дисплеем LiquidCrystal lcd(2,3,4,5,6,7); // Объявляем объект библиотеки, указывая выводы дисплея (RS,E,D4,D5,D6,D7) // Если используется 8 проводов шины данных, то указываем (RS,E,D0,D1,D2,D3,D4,D5,D6,D7) void setup() < // lcd.begin(16, 2); // Инициируем работу с LCD дисплеем, указывая количество (столбцов, строк) . // Выводим информацию, которая должна отображаться при старте >// // void loop()<> // . // Выводим информацию которая должна меняться по алгоритму Вашего кода > //
Функции управления дисплеем:
- flag: значение true — включает, а false — выключает подсветку.
/* Выводим надпись для наблюдения за функциями управления дисплеем: */ lcd.cursor(0,0); // Устанавливаем курсор в крайний верхний угол дисплея (0 столбец, 0 строка) lcd.print("iarduino.ru"); // Выводим текст "iarduino.ru" (первая буква "i" будет находиться в позиции "0,0", а последняя "u" в позиции "10,0", невидимый курсор в позиции "11,0") // lcd.noDisplay(); // Выключаем дисплей (надпись исчезнет с дисплея) lcd.display(); // Включаем дисплей (надпись появится на дисплее в том же месте) lcd.scrollDisplayLeft(); // Сдвигаем координаты столбцов влево (на дисплее будет отображаться "arduino.ru" без первой буквы "i", которая выйдет за пределы дисплея, но останется в его ОЗУ) lcd.scrollDisplayRight(); // Сдвигаем координаты столбцов вправо (на дисплее будет отображаться "iarduino.ru" на том же месте, где и была выведена изначально) lcd.clear(); // Чистим дисплей (надпись безвозвратно исчезнет с дисплея) lcd.noBacklight(); // Отключаем подсветку дисплея lcd.backlight(); // Включаем подсветку дисплея lcd.setBacklight(0); // Отключаем подсветку дисплея lcd.setBacklight(1); // Включаем подсветку дисплея
Функции управления курсором:
- col: номер столбца (начиная с 0).
- row: номер строки (начиная с 0)
lcd.setCursor( 0, 1); // Устанавливаем курсор на первый символ второй строки (нумерация строк и столбцов начинается с 0) lcd.home(); // Устанавливаем курсор на первый символ первой строки (как при вызове lcd.setCursor(0,0);) lcd.blink(); // Делаем курсор видимым (на месте курсора будет мигать прямоугольник) lcd.noBlink(); // Делаем курсор невидимым (убираем мигающий прямоугольник) lcd.cursor(); // Делаем курсор видимым (на месте курсора появится знак подчёркивания) lcd.noCursor(); // Делаем курсор невидимым (убираем знак подчёркивания) // Если курсор попадает на место где есть символ, то этот символ не исчезает
Функции указывающие направление и выравнивание:
| leftToRight(); Указывает, что после каждого нового символа, положение курсора должно сдвигаться на один столбец вправо. |
Примечание: Если вывести текст «abc» на дисплее отобразится «abc» и текст будет находиться правее от изначального положения курсора. (Как обычно) |
| rightToLeft(); Указывает, что после каждого нового символа, положение курсора должно сдвигаться на один столбец влево. |
Примечание: Если вывести текст «abc» на дисплее отобразится «cba» и текст будет находиться левее от изначального положения курсора. (Письменность справа налево) |
| noAutoscroll(); Указывает, что в дальнейшем, текст нужно выравнивать по левому краю от изначальной позиции курсора. |
Примечание: если установить курсор в позицию 10,0 и вывести текст, то в данной позиции будет находиться первый символ выведенного текста. (Как обычно) |
| autoscroll(); Указывает, что в дальнейшем, текст нужно выравнивать по правому краю от изначальной позиции курсора. |
Примечание: если установить курсор в позицию 10,0 и вывести текст, то в данной позиции будет находиться курсор. (Координаты дисплея будут сдвинуты влево, как будто Вы вызвали функцию scrollDisplayLeft столько раз, сколько букв в выведенном тексте) |
lcd.leftToRight(); // Указываем курсору сдвигаться вправо (Как обычно в европейской письменности) lcd.clear(); lcd.setCursor(5,0); lcd.print("ABC"); // На дисплее увидим: " ABC " (После "A" курсор сдвинулся вправо и вывелась "B", далее курсор сдвинулся вправо и вывелась "C") lcd.rightToLeft(); // Указываем курсору сдвигаться влево (Как в письменности справа налево) lcd.clear(); lcd.setCursor(5,0); lcd.print("ABC"); // На дисплее увидим: " CBA " (После "A" курсор сдвинулся влево и вывелась "B", далее курсор сдвинулся влево и вывелась "C") lcd.noAutoscroll(); // Устанавливаем выравнивание по левому краю (Как обычно) lcd.clear(); lcd.setCursor(5,0); lcd.print("ABC"); // На дисплее увидим: " ABC " (Как обычно) lcd.autoscroll(); // Устанавливаем выравнивание по правому краю (Координаты дисплея будут сдвинуты влево на количество выведенных символов) lcd.clear(); lcd.setCursor(5,0); lcd.print("ABC"); // На дисплее увидим: " ABC " (Координаты дисплея будут сдвинуты на 3 символа влево, так как после каждого символа совершается вызов функции scrollDisplayLeft)
Функции ввода текста и символов:
- num: номер под которым будет записан символ (от 1 до 7).
- array: массив представляющий записываемый символ.
- text: символ, число или строка для вывода на дисплей.
#include // Подключаем библиотеку для работы с шиной I2C #include // Подключаем библиотеку для работы с LCD дисплеем по шине I2C LiquidCrystal_I2C lcd(0x27,16,2); // Объявляем объект библиотеки, указывая параметры дисплея (адрес I2C = 0x27, количество столбцов = 16, количество строк = 2) // uint8_t symbol_d[8] = ; // 8 строка символа "д" Весь массив можно записать одной строкой: uint8_t symbol_d[8]=; // uint8_t symbol_i[8] = ; // 8 строка символа "и" Весь массив можно записать одной строкой: uint8_t symbol_i[8]=; void setup() < // lcd.init(); // Инициируем работу с LCD дисплеем lcd.backlight(); // Включаем подсветку LCD дисплея lcd.createChar(1,symbol_d); // Загружаем в память дисплея первый символ lcd.createChar(2,symbol_i); // Загружаем в память дисплея второй символ lcd.clear(); // Чистим экран lcd.setCursor(0,0); // Устанавливаем курсор в крайний верхний угол lcd.print("Pa\1\2o"); // Выводим текст "Paдиo" при этом символы 'P', 'a' , 'o' пишем латиницей, >// а символы 'д', 'и' выводим из памяти дисплея, указывая их номера // void loop() < // lcd.setCursor(0,1); lcd.print(" "); // стираем всю нижнюю строку lcd.setCursor(0,1); lcd.print("i"); lcd.print("arduino"); lcd.print(".ru"); // выводим текст "i" "arduino" ".ru" в нижней строке delay(2000); // ждём 2 секунды lcd.setCursor(0,1); lcd.print(" "); // стираем всю нижнюю строку lcd.setCursor(0,1); lcd.print(12.345); // выводим число 12.34 (выводится 2 знака после запятой) delay(2000); // ждём 2 секунды lcd.setCursor(0,1); lcd.print(" "); // стираем всю нижнюю строку lcd.setCursor(0,1); lcd.print(12, HEX); // выводим число 12 в виде шестнадцатиричного числа delay(2000); // ждём 2 секунды lcd.setCursor(0,1); lcd.print(" "); // стираем всю нижнюю строку lcd.setCursor(0,1); lcd.print(1); // выводим число 1 delay(2000); // ждём 2 секунды >