Андрей Смирнов
Время чтения: ~19 мин.
Просмотров: 54

Подключаем экран nokia 5110 к ардуино

3Библиотека «Wire» для работы с IIC

Для облегчения обмена данными с устройствами по шине I2C для Arduino написана стандартная библиотека Wire. Она имеет следующие функции:

Функция Назначение
begin(address) инициализация библиотеки и подключение к шине I2C; если не указан адрес, то присоединённое устройство считается ведущим; используется 7-битная адресация;
requestFrom() используется ведущим устройством для запроса определённого количества байтов от ведомого;
beginTransmission(address) начало передачи данных к ведомому устройству по определённому адресу;
endTransmission() прекращение передачи данных ведомому;
write() запись данных от ведомого в ответ на запрос;
available() возвращает количество байт информации, доступных для приёма от ведомого;
read() чтение байта, переданного от ведомого ведущему или от ведущего ведомому;
onReceive() указывает на функцию, которая должна быть вызвана, когда ведомое устройство получит передачу от ведущего;
onRequest() указывает на функцию, которая должна быть вызвана, когда ведущее устройство получит передачу от ведомого.

Контакты и схема подключения

Каждый выход экрана имеет свое функциональное назначение. Все имеющиеся у модуля LCD 1602 контакты по порядку приведены в списке ниже, в скобках указано название соответствующего порта Arduino, к которому может осуществляться подключение:

  1. VSS, земля (GND);
  2. VDD, питание 5В (5V);
  3. V0, управление контрастностью и напряжением дисплея (GND, через резистор);
  4. RS, регистр (пин 0);
  5. RW, запись и чтение данных (GND);
  6. E, Enable, строб по спаду (пин 1);
  7. DB0 (не подключается);
  8. DB1 (не подключается);
  9. DB2 (не подключается);
  10. DB3 (не подключается);
  11. DB4 (пин 2);
  12. DB5 (пин 3);
  13. DB6 (пин 4);
  14. DB7 (пин 5);
  15. А, плюс подстветки (5V, через резистор);
  16. К, минус подсветки (GND).

Контакты с 7-го до 14-го являются линиями данных (4 младших и 4 старших бита). Для различных модификаций LCD 1602 расположение выходов может быть немного другим.

Процесс сборки

Первый шаг – припаять 16-контактные штыревые разъемы на Аrduino display. Затем вы можете использовать либо 16-контактный разъем для подключения к Ардуино, либо просто использовать разъем «женщина-женщина». Если вы впервые подключаетесь к микроконтроллеру, проще всего использовать макет.


Исходные соединения для светодиодного экрана и Arduino

Первое, что вам нужно сделать, прежде чем работать с жидкокристаллическим дисплеем, – проверить его. Для этого выполните соединения, как показано на диаграмме выше.

  • Подключите контакт 15 на мониторе к контакту 5V от Arduino 128х64 lcd spi.
  • Затем подключите вывод 16 на устройстве к выходу GND.

Эти контакты используются для питания подсветки ЖК-дисплея. Затем вам нужно настроить логические операции для устройства.

  • Для этого подключите вывод 1 на мониторе к выходу GND Arduino. Затем подключите контакт 2 на экране к выходу 5V Ардуино.
  • Затем вам нужно настроить потенциометр регулировки контрастности.

Возьмите потенциометр 10K и подключите первую клемму к выходу 5V Arduino, а второй – к контакту 3 и третьему терминалу к выходу GND.

Затем включите микропроцессор. Вы заметите, что подсветка на ЖК-дисплее включена. Кроме того, когда вы поворачиваете ручку на потенциометре, блоки символов на ЖК-дисплее становятся яркими/тусклыми. Посмотрите картинку ниже, чтобы узнать, о чем я говорю. Если монитор отображает то, что показано на фотографии ниже, это означает, что ваш экран настроен правильно! Если вы не смогли этого достичь, проверьте свои соединения и потенциометр.


Регулировка контрастности на устройстве

Теперь нам нужно подключить линии передачи данных и другие контакты, которые работают с экраном. Ознакомьтесь с приведенной ниже схемой подключения.


Конечные соединения между Arduino, потенциометром и устройством

Начнем с подключения контрольных проводов для ЖК-дисплея. Подключите контакт 5 (RW) монитора к контакту GND от Arduino. Этот контакт не используется и служит для чтения/записи. Затем подключите контакт 4 (RS) экрана к цифровому выходу 7 Arduino. Штырек RS используется для указания на ЖК-дисплее, отправляем ли мы данные или команды (чтобы изменить положение курсора).

Затем подключите контакт 6 (EN) ЖК-дисплея к цифровому выходу Arduino 8. EN – это контактное гнездо на устройстве, оно используется, чтобы сообщить монитору, что данные готовы для чтения.

Затем мы должны подключить четыре вывода данных на устройстве. Подсоедините контакт 14 (DB7) экрана к цифровому выступу 12 Arduino. Затем подключите контакт 13 (DB6) монитора к цифровому выходу 11 Arduino. Затем вывод 12 на мониторе (DB5) на цифровой вывод 10, затем Вывод LCD № 11 (DB4) на цифровой вывод 9.

Вот и все, вы закончили подключать ЖК-дисплей к Arduino. Вы заметите, что между управляющими выводами и выводами данных на ЖК-дисплее есть четыре несвязанных контакта, как показано ниже.


Паяные 16-контактные разъемы

Описание протокола I2C

Прежде чем обсуждать подключение дисплея к ардуино через i2c-переходник, давайте вкратце поговорим о самом протоколе i2C.

I2C / IIC(Inter-Integrated Circuit) – это протокол, изначально создававшийся для связи интегральных микросхем внутри электронного устройства. Разработка принадлежит фирме Philips. В основе i2c  протокола является использование 8-битной шины, которая нужна для связи блоков в управляющей электронике, и системе адресации, благодаря которой можно общаться по одним и тем же проводам с несколькими устройствами. Мы просто передаем данные то одному, то другому устройству, добавляя к пакетам данных идентификатор нужного элемента.

Самая простая схема I2C может содержать одно ведущее устройство (чаще всего это микроконтроллер Ардуино) и несколько ведомых (например, дисплей LCD). Каждое устройство имеет адрес в диапазоне от 7 до 127. Двух устройств с одинаковым адресом в одной схеме быть не должно.

Плата Arduino поддерживает i2c на аппаратном уровне. Вы можете использовать пины A4 и A5 для подключения устройств по данному протоколу.

В работе I2C можно выделить несколько преимуществ:

  • Для работы требуется всего 2 линии – SDA (линия данных) и SCL (линия синхронизации).
  • Подключение большого количества ведущих приборов.
  • Уменьшение времени разработки.
  • Для управления всем набором устройств требуется только один микроконтроллер.
  • Возможное число подключаемых микросхем к одной шине ограничивается только предельной емкостью.
  • Высокая степень сохранности данных из-за специального фильтра подавляющего всплески, встроенного в схемы.
  • Простая процедура диагностики возникающих сбоев, быстрая отладка неисправностей.
  • Шина уже интегрирована в саму Arduino, поэтому не нужно разрабатывать дополнительно шинный интерфейс.

Недостатки:

  • Существует емкостное ограничение на линии – 400 пФ.
  • Трудное программирование контроллера I2C, если на шине имеется несколько различных устройств.
  • При большом количестве устройств возникает трудности локализации сбоя, если одно из них ошибочно устанавливает состояние низкого уровня.

5Создание собственных символов для ЖК дисплея

Немного подробнее рассмотрим вопрос создания собственных символов для ЖК экранов. Каждый символ на экране состоит из 35-ти точек: 5 в ширину и 7 в высоту (+1 резервная строка для подчёркивания). В строке 6 приведённого скетча мы задаём массив из 7-ми чисел: {0x0, 0xa, 0x1f, 0x1f, 0xe, 0x4, 0x0}. Преобразуем 16-ричные числа в бинарные: {00000, 01010, 11111, 11111, 01110, 00100, 00000}. Эти числа – не что иное, как битовые маски для каждой из 7-ми строк символа, где «0» обозначают светлую точку, а «1» – тёмную. Например, символ сердца, заданный в виде битовой маски, будет выглядеть на экране так, как показано на рисунке.

Создание собственного символа для LCD экрана

2Библиотека для работы с LCD дисплеем Nokia 5110

Для работы с этим LCD экраном написано много библиотек. Предлагаю воспользоваться вот этой библиотекой. Скачаем и разархивируем скачанный файл в директорию Arduino IDE/libraries/.

Библиотека поддерживает следующие возможности.

Функция Назначение
LCD5110(SCK, MOSI, DC, RST, CS) объявление ЖК экрана с указанием соответствия пинам Arduino;
InitLCD() инициализация дисплея 5110 с опциональным указанием контрастности (0-127), по умолчанию используется значение 70;
setContrast(contrast) задаёт контрастность (0-127);
enableSleep() переводит экран в спящий режим;
disableSleep() выводит экран из спящего режима;
clrScr() очищает экран;
clrRow(row, , ) очистка выбранной строки номер row, от позиции start до end;
invert(true), invert(false) включение и выключение инверсии содержимого LCD экрана;
print(string, x, y) выводит строку символов с заданными координатами; вместо x-координаты можно использовать LEFT, CENTER и RIGHT; высота стандартного шрифта 8 точек, поэтому строки должны идти с интервалами через 8;
printNumI(num, x, y, , ) вывести целое число на экран на заданной позиции (x, y); length – желаемая длина числа; filler – символ для заполнения «пустот», если число меньше желаемой длины; по умолчанию это пустой пробел » «;
printNumF(num, dec, x, y, , , ) вывести число с плавающей запятой; dec – число знаков после запятой; divider – знак десятичного разделителя, по умолчанию точка «.»;
setFont(name) выбрать шрифт; встроенные шрифты называются SmallFont и TinyFont; вы можете определить свои шрифты в скетче;
invertText(true), invertText(false) инверсия текста вкл./выкл.;
drawBitmap(x, y, data, sx, sy) вывести картинку на экран по координатам x и y; data – массив, содержащий картинку; sx и sy – ширина и высота рисунка.

Подключение LCD keypad shield к Arduino

Необходимые детали:
► Arduino UNO R3 x 1 шт.
► LCD модуль keypad (LCD1602, 2×16, 5V)
► Кабель USB 2.0 A-B x 1 шт.

Подключение
Установите модуль на плату Arduino UNO, подключите кабель и закрущите данный скетч.

/*
Тестирование производилось на Arduino IDE 1.6.12
Дата тестирования 06.12.2016г.
*/

#include <LiquidCrystal.h> // Подключяем библиотеку
LiquidCrystal lcd( 8, 9, 4, 5, 6, 7 ); // Указываем порты

void setup()
{
lcd.begin(16, 2); // Инициализируем LCD 16×2
lcd.setCursor(0,0); // Установить курсор на первую строку
lcd.print(«LCD1602»); // Вывести текст
lcd.setCursor(0,1); // Установить курсор на вторую строку
lcd.print(«www.robotchip.ru»); // Вывести текст
Serial.begin(9600); // Включаем последовательный порт
}

void loop() {
int x; // Создаем переменную x
x = analogRead (0); // Задаем номер порта с которого производим считывание
lcd.setCursor(10,1); // Установить курсор на вторую строку
if (x < 100) { // Если x меньше 100 перейти на следующею строк
lcd.print («Right «); // Вывести текст
Serial.print(«Value A0 ‘Right’ is :»); // Вывести текст
Serial.println(x,DEC); // Вывести значение переменной x
}
else if (x < 200) { // Если х меньше 200 перейти на следующию строку
lcd.print («Up «); // Вывести текст
Serial.print(«Value A0 ‘UP’ is :»); // Вывести текст
Serial.println(x,DEC); // Вывести значение переменной x
}
else if (x < 400){ // Если х меньше 400 перейти на следующию строку
lcd.print («Down «); // Вывести текст
Serial.print(«Value A0 ‘Down’ is :»); // Вывести текст
Serial.println(x,DEC); // Вывести значение переменной x
}
else if (x < 600){ // Если х меньше 600 перейти на следующию строку
lcd.print («Left «); // Вывести текст
Serial.print(«Value A0 ‘Left’ is :»); // Вывести текст
Serial.println(x,DEC); // Вывести значение переменной x
}
else if (x < 800){ // Если х меньше 800 перейти на следующию строку
lcd.print («Select»); // Вывести текст
Serial.print(«Value A0 ‘Select’ is :»);// Вывести текст
Serial.println(x,DEC); // Вывести значение переменной x
}
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48

/*
  Тестирование производилось на Arduino IDE 1.6.12
  Дата тестирования 06.12.2016г.

*/

 
#include <LiquidCrystal.h>                // Подключяем библиотеку

LiquidCrystal lcd(8,9,4,5,6,7);// Указываем порты        

voidsetup()

{

lcd.begin(16,2);// Инициализируем LCD 16×2  

lcd.setCursor(,);// Установить курсор на первую строку  

lcd.print(«LCD1602»);// Вывести текст

lcd.setCursor(,1);// Установить курсор на вторую строку

lcd.print(«www.robotchip.ru»);// Вывести текст

Serial.begin(9600);// Включаем последовательный порт

}
 

voidloop(){

intx;// Создаем переменную x

x=analogRead();// Задаем номер порта с которого производим считывание

lcd.setCursor(10,1);// Установить курсор на вторую строку

if(x<100){// Если x меньше 100 перейти на следующею строк

lcd.print(«Right «);// Вывести текст

Serial.print(«Value A0 ‘Right’ is  :»);// Вывести текст

Serial.println(x,DEC);// Вывести значение переменной x

}

elseif(x<200){// Если х меньше 200 перейти на следующию строку

lcd.print(«Up    «);// Вывести текст

Serial.print(«Value A0 ‘UP’ is  :»);// Вывести текст

Serial.println(x,DEC);// Вывести значение переменной x

}

elseif(x<400){// Если х меньше 400 перейти на следующию строку

lcd.print(«Down  «);// Вывести текст

Serial.print(«Value A0 ‘Down’ is  :»);// Вывести текст

Serial.println(x,DEC);// Вывести значение переменной x

}

elseif(x<600){// Если х меньше 600 перейти на следующию строку

lcd.print(«Left  «);// Вывести текст

Serial.print(«Value A0 ‘Left’ is  :»);// Вывести текст

Serial.println(x,DEC);// Вывести значение переменной x

}

elseif(x<800){// Если х меньше 800 перейти на следующию строку

lcd.print(«Select»);// Вывести текст

Serial.print(«Value A0 ‘Select’ is  :»);// Вывести текст

Serial.println(x,DEC);// Вывести значение переменной x

}
}

После загрузки прошивки, плата перегрузится и отобразится надпись, нажмите любую кнопку и информация о нажатой кнопке отобразится на дисплеи и в мониторинге порта.

Ссылки  Документация к LCD1602A  Документация к LCD ZYMC1602  Документация к HD44780U

Купить на Aliexpress  Контроллер Arduino UNO R3  LCD модуля keypad (LCD1602, 2×16, 5V)

Купить в Самаре и области  Купить контроллер Arduino UNO R3  Купить LCD модуля keypad (LCD1602, 2×16, 5V)

Дисплеи и платы

Взаимодействие символьного Ардуино дисплея добавляет приятный элемент читаемости в проект. Многие из лучших проектов по всему миру демонстрируют спортивные дисплеи.

Эти ЖК-дисплеи используются для отображения информации от микроконтроллера или любого подключенного к нему датчика. Например, можно создать систему контроля температуры, которая отображает данный показатель на Arduino. Можно сконструировать собственный спидометр, который отображает скорость на экране.

Вам точно пригодится: Генератор Символов LCD

В этом учебном пособии по Ардуино LCD вы найдете интерфейс с символами Arduino LCD i2c. Вы можете использовать информацию из этого текста для создания собственных проектов на основе ЖК-монитора.

Как подключить ультразвуковой датчик к Ардуино

Для занятия нам понадобятся следующие детали:

  • плата Arduino Uno / Arduino Nano / Arduino Mega;
  • макетная плата;
  • УЗ дальномер HC-SR04;
  • 1 светодиод и резистор 220 Ом;
  • провода «папа-папа» и «папа-мама».


Схема подключения ультразвукового датчика к Arduino Uno

Схема подключения указана на рисунке выше. Отметим, что ультразвуковой дальномер HC-SR04 имеет диапазон измерения от 2 см до 400 см, работает при температурах от 0° до 60° С. Точность измерения составляет ± 1 см, рабочее напряжение датчика до 5,5 В. Для начала мы используем простой скетч, без использования библиотеки Ultrasonic. После подключения к Arduino дальномера HC-SR04 загрузите следующий скетч:

Скетч для подключения датчика hc-sr04 к Arduino

int trigPin = 8; // назначаем имя для Pin8
int echoPin = 9; // назначаем имя для Pin9
 
void setup() { 
  Serial.begin (9600); // подключаем монитор порта
  pinMode(trigPin, OUTPUT); // назначаем trigPin (Pin8), как выход
  pinMode(echoPin, INPUT); // назначаем echoPin (Pin9), как вход
} 
 
void loop() { 
  int duration, cm; // назначаем переменную "cm" и "duration" для показаний датчика
  digitalWrite(trigPin, LOW); // изначально датчик не посылает сигнал
  delayMicroseconds(2); // ставим задержку в 2 ммикросекунд

  digitalWrite(trigPin, HIGH); // посылаем сигнал
  delayMicroseconds(10); // ставим задержку в 10 микросекунд
  digitalWrite(trigPin, LOW); // выключаем сигнал

  duration = pulseIn(echoPin, HIGH); // включаем прием сигнала

  cm = duration / 58; // вычисляем расстояние в сантиметрах

  Serial.print(cm); // выводим расстояние в сантиметрах
  Serial.println(" cm");

  delay(1000); // ставим паузу в 1 секунду
}

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

  1. для подключения выходов Trig и Echo на датчике можно использовать любые цифровые входы на Ардуино;
  2. чтобы получить значение датчика в миллиметрах следует использовать следующую формулу для расчета: .

Подключение дисплея к плате ардуино

Стандартный способ

При подключении LCD 1602 по стандартной схеме в 4-битном режиме его необходимо установить на макетной плате, а затем в следующей последовательности соединить все контакты:

  • подать питание на плату, подключив пины 5V и GND Arduino к дорожкам «+» и «-» соответственно;
  • подключить экран к питанию, соединив пин VSS c дорожкой «-«, а VDD — c дорожкой «+»;
  • подключить подсветку дисплея, соединив порт K c дорожкой «-«, а порт А — с дорожкой «+»;
  • подключить проект Arduino к компьютеру, после чего LCD 1602 начнет светиться;
  • подключить потенциометр или подстроечный резистор на 10 или 40 кОм, установив его на макетной плате и соединив его крайние порты с «-» и «+», а средний — с выходом V0 дисплея, после чего на мониторе выведется линия закрашенных прямоугольников, как и при самотестировании;
  • соединить RS-выход экрана с контактом 7 Arduino желтого цвета, RW-выход — к одному из портов GND (земля), E-порт — к порту 8 на плате «Ардуино», а выходы 11, 12, 13 и 14 дисплея (DB4 — DB7) — к пинам 2, 3, 4 и 5 платы соответственно, что обеспечит обмен данными.

Если все выполнено верно, LCD 1602 выведет предусмотренные проектом символы в рабочем режиме. Проводить 8-битное подключение нецелесообразно, т.к. при этом лишь увеличится энергопотребление.

Нестандартный способ

Стандартный способ может вызывать большие трудности, если необходимые пины на плате Arduino используются для других целей. Вместо того, чтобы полностью перестраивать проект, можно инициализировать новые, неиспользуемые порты интерфейса. Для этого в строке «LiquidCrystal lcd (12, 11, 6, 5, 4, 3, 2)» в скетче в скобках нужно заменить имеющиеся числа на номера новых, свободных выходов, соблюдая соответствие назначению позиции.

Подключение по протоколу i2c

I2C (или IIC, от англ. Inter-Integrated Circuit) — это двухпроводная 8-битная шина, которая служит для последовательного соединения схем в электронных приборах. Так как при стандартном подключении LCD 1602 к Arduino занятыми оказываются, как минимум, 6 портов, использование этого дисплея без переходника неудобно, особенно с картами «Уно» или «Нано». Протокол I2C позволяет сократить количество используемых пинов до 2 -х и поэтому имеет большое значение для сложных проектов.

При подключении используются выходы SDA (линия данных) и SCL (линия синхронизации) и 4 провода, 2 из которых служат для питания. К этим линиям может быть подсоединено более 2 ведомых устройств, что позволяет включить в систему не только экран, но и часы, термометр или прочие периферийные объекты. Строки скетча при этом остаются неизменными.

При подключении по протоколу IIC рекомендовано использовать специальные библиотеки.

Возможные проблемы с подключением

Чаще всего за проблемы с подключением принимают неотрегулированную контрастность. Если она слишком низкая, дисплей будет казаться пустым, а если слишком высокая, то вместо символов выведутся темные прямоугольники.

Если настройка контрастности не помогает, а соответствие схемы и наличие питания (в т.ч. питания подсветки) уже проверены, проблема может быть связана с качеством спайки контактов. В этом случае необходимо проверить работу дисплея в режиме самотестирования и при подключении по стандартной 4-битной схеме без переходника.

Иногда при использовании шины i2c ошибка может возникать из-за ее неверного адреса. Адрес можно изменить в скетче. Для чипа PCF8574 подбор проводится от 0x20 до 0x27, а для PCF8574 — от 0x38 до 0x3F. Правильный вариант зависит от производителя.

Версии Arduino выше 1,8 имеют сложности при работе с библиотекой LiquidCrystal_I2C. В случае возникновения ошибок ее можно заменить на LCD_1602_RUS или LiquidCrystal_PCF8574.

1Описание интерфейса I2C

Последовательный протокол обмена данными IIC (также называемый I2C – Inter-Integrated Circuits, межмикросхемное соединение) использует для передачи данных две двунаправленные линии связи, которые называются шина последовательных данных SDA (Serial Data) и шина тактирования SCL (Serial Clock). Также имеются две линии для питания. Шины SDA и SCL подтягиваются к шине питания через резисторы.

В сети есть хотя бы одно ведущее устройство (Master), которое инициализирует передачу данных и генерирует сигналы синхронизации. В сети также есть ведомые устройства (Slave), которые передают данные по запросу ведущего. У каждого ведомого устройства есть уникальный адрес, по которому ведущий и обращается к нему. Адрес устройства указывается в паспорте (datasheet). К одной шине I2C может быть подключено до 127 устройств, в том числе несколько ведущих. К шине можно подключать устройства в процессе работы, т.е. она поддерживает «горячее подключение».

Описание интерфейса I2C

Давайте рассмотрим временную диаграмму обмена по протоколу I2C. Есть несколько различающихся вариантов, рассмотрим один из распространённых. Воспользуемся логическим анализатором, подключённым к шинам SCL и SDA.

Мастер инициирует обмен. Для этого он начинает генерировать тактовые импульсы и посылает их по линии SCL пачкой из 9-ти штук. Одновременно на линии данных SDA он выставляет адрес устройства, с которым необходимо установить связь, которые тактируются первыми 7-ми тактовыми импульсами (отсюда ограничение на диапазон адресов: 27 = 128 минус нулевой адрес). Следующий бит посылки – это код операции (чтение или запись) и ещё один бит – бит подтверждения (ACK), что ведомое устройство приняло запрос. Если бит подтверждения не пришёл, на этом обмен заканчивается. Или мастер продолжает посылать повторные запросы.

Это проиллюстрировано на рисунке ниже. Задача такая: подключиться к ведомому устройству с адресом 0x27 и передать ему строку «SOLTAU.RU». В первом случае, для примера, отключим ведомое устройство от шины. Видно, что мастер пытается установить связь с устройством с адресом 0x27, но не получает подтверждения (NAK). Обмен заканчивается.

Попытка мастера установить соединение с ведомым по I2C

Теперь подключим к шине I2C ведомое устройство и повторим операцию. Ситуация изменилась. На первый пакет с адресом пришло подтверждение (ACK) от ведомого. Обмен продолжился. Информация передаётся также 9-битовыми посылками, но теперь 8 битов занимают данные и 1 бит – бит подтверждения получения ведомым каждого байта данных. Если в какой-то момент связь оборвётся и бит подтверждения не придёт, мастер прекратит передачу.

Временная диаграмма обмена по протоколу I2C

Подключение дисплея 5110 к Ардуино

Для начала давайте рассмотрим подключение данного дисплея к Arduino и разберемся с интерфейсом передачи данных. На плате дисплея имеются 8 выводов:

  • RST — Reset (сброс);
  • CE — Chip Select (выбор устройства);
  • DC — Data/Command select (выбор режима);
  • DIn — Data In (данные);
  • Clk — Clock (тактирующий сигнал);
  • Vcc — питание 3.3В;
  • BL — Backlight (подсветка) 3.3В;
  • GND — земля.

Соединение

Как вы уже могли заметить, питание дисплея (Vcc) должно осуществляться напряжением не выше 3.3В, то же напряжение является максимальным и для подсветки дисплея (BL). Тем не менее, логические выводы толерантны к 5В логике, используемой Arduino. Но все же рекомендуется подключать логические выводы через резисторы 10 кОм, тем самым вы сможете продлить срок службы дисплея.

Также стоит отметить, что существуют версии дисплеев (как правило с красной платой) с выводом LIGHT вместо BL. В таком случае включение подсветки осуществляется подключением данного вывода к минусу питания (GND).

Пин RST (активный LOW) отвечает за перезагрузку дисплея, а с помощью пина CE (активный LOW) контроллеру дисплея сообщается что обмен данными происходит именно с ним. Вход DC отвечает за режим ввода – ввод данных, либо ввод команд (LOW – данные, HIGH – команды). Вход Clk позволяет контроллеру дисплея определять скорость передачи данных, а через пин DIn происходит непосредственно передача данных в контроллер дисплея.

Как создать собственные символы

Если в наборе LCD 1602 отсутствует нужный для работы проекта символ, его можно создать самостоятельно. Для добавления нового символа нужно сформировать битовую маску размером 5х8 ячеек (в соответствии с количеством точек, которое приходится на 1 символ). Затем в маске необходимо разместить единицы там, где предполагается наличие подсветки, и нули — там, где должно остаться серое закрашивание.

Для экономии времени можно использовать генератор символов, созданный любителями и размещенный в свободный доступ в интернете.

Таким путем в память может быть добавлено до 7 дополнительных самодельных знаков.

Библиотека liquidcrystal.h

По умолчанию при соединении дисплея LCD 1602 с проектами «Ардуино» используется стандартная библиотека LiquidCrystal.h. Она создана специально для ЖК-экранов на базе чипа HD44780 и хорошо справляется с обработкой данных как при 4-битном, так и при 8-битном подключении. Библиотека управляет работой курсора (перемещение, видимость, мигание), выводом информации, очисткой дисплея, порядком вывода (слева направо или справа налево) и смещением символов.

В случае использования переходника I2C рекомендуется применять библиотеки LiquidCrystal_I2C.h и Wire.h совместно. Они могут входить в пакет софта Arduino IDE по умолчанию, а также скачаны дополнительно.

Подключить новые библиотеки можно прямо в интерфейсе «Ардуино», последовательно выбрав в меню следующие пункты:

  • скетч;
  • подключить библиотеку;
  • управлять библиотеками.

Проблемы подключения LCD1602 к Arduino по I2C

Если после загрузки скетча у вас не появилось никакой надписи на дисплее, попробуйте выполнить следующие действия:

  1. Можно регулировать контрастность индикатора потенциометром. Часто символы просто не видны из-за режима контрастности и подсветки.
  2. Проверьте правильность подключения контактов, подключено ли питание подсветки. Если вы использовали отдельный I2C переходник, то проверьте еще раз качество пайки контактов.
  3. Проверьте правильность I2C адреса. Попробуйте сперва поменять в скетче адрес устройства с 0x20 до 0x27 для PCF8574 или с 0x38 до 0x3F для PCF8574A. Если и это не помогло, можете запустить скетч I2C сканера, который просматривает все подключенные устройства и определяет их адрес методом перебора. Для изменения адресации необходимо установить джамперы в нужное положение, тем самым притянуть выводы A0, A1, A2 к положительному либо отрицательному потенциалу. На плате положения промаркированы.
  4. Если экран все еще останется нерабочим, попробуйте подключить LCD обычным образом.

Рейтинг автора
5
Материал подготовил
Максим Иванов
Наш эксперт
Написано статей
129
Ссылка на основную публикацию
Похожие публикации