Появилась у меня свободная минутки и я решил вновь побаловаться с Arduino. В этот раз рассмотрим подключение к контроллеру четырёхстрочный экран WH1604B-YYH-CT.
Для начала нам необходимо определить первый вывод экрана.
Теперь займемся самим подключением.
- 1 - Vss – GND Arduino
- 2 - Vdd - +5 В Arduino
- 3 - Vo - GND Arduino
- 4 – RS - цифровой пин 12 Arduino
- 5 - R/W - GND Arduino
- 6 - E – цифровой пин 11 Arduino
- 7
- 8
- 9
- 10
- 11 – DB4 - цифровой пин 5 Arduino
- 12 – DB5 - цифровой пин 4 Arduino
- 13 – DB6 - цифровой пин 3 Arduino
- 14 – DB7 - цифровой пин 2 Arduino
- 15 - A - +5 В Arduino
- 16 - K - GND Arduino
В результате получится такая конструкция:
Далее подключаем Arduino к компьютеру и загружаем проверочный скетч.
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup()
{/* Инициализируем дисплей: 4 строки по 16 символов */
lcd.begin(16, 4);
}void loop()
{
lcd.setCursor(0, 0);
lcd.print(" source");lcd.setCursor(0, 1);
lcd.print(" ICQ 165244");lcd.setCursor(-4, 2);
lcd.print("geekelectronics.org");lcd.setCursor(-4, 3);
lcd.print("Arduino Mega2560");delay(100);
}
Скажите пожалуйста, где найти такой экран? На ebay.com я его не нашел.
я тут покупал http://robocraft.ru/shop/index.php?route=product/category&path=39
Скажите пожалуйста, а почему номера позиции в 3-ей или 4-й строке указаны как -4, так нужно? А почему? Может это ошибка?
lcd.setCursor(-4, 2);
да, именно -4
у меня просто в дисплее на этих строках шел сдвиг на 4 символа вправо
если у вас такого нет, то смело пишите 0
lcd.setCursor(0, 2);
Спасибо за ответ.
К сожалению тоже есть, не могу понять это нормально, или нужна какая-то коррекция в библиотеке.
Очень не удобно в цикле по строкам выводить параметры, да и размер программы увеличивается.
Спасибо, а то я думал что дисплей бракованный. ☺
Решается проблема элементарно:
напишите свою функцию, которая проверяет какая строка указана в setCursor() и ставит соответствующее значение, например:
void mySetCursor(int pos_x, int pos_y) {
if(pos_y != 2 && pos_y != 3) {
setCursor(pos_x, pos_y);
} else {
setCursor(pos_x — 4, pos_y);
}
}
я думаю, у вас проблема, потому что вы пишете 20 знаков "geekelectronics.org" в дисплей с 16 знаками в строке, вот и вылезают лишние 4 знака на следующую строку.