когда я использую <LiquidCrystal.h
библиотека и lcd-write()
он показывает только первые 16 символов в первом ряду и начинается с 41-го символа во втором ряду.
Я начал с lcd.begin(16,2)
,
Вот пример кода.
Результатом этого кода будет:
строка 1: 0123456789112345
строка 2: 4123456789
#include <LiquidCrystal.h>
LiquidCrystal lcd(2,3,4,5,6,7);
void setup() {
// put your setup code here, to run once:
lcd.begin(16, 2);
Serial.begin(9600);
lcd.print("0123456789");
lcd.print("1123456789");
lcd.print("2123456789");
lcd.print("3123456789");
lcd.print("4123456789");
}
void loop() {
}
Это что ожидаемая функциональность?
Есть способ, чтобы я смог отобразить 17-й символ во втором ряду.
Да, это ожидаемое поведение. Библиотека позволяет управлять ЖК-модулями на основе HD44780. Этот ЖК-контроллер может отображать до 40 символов на 2 строки. При использовании меньшего модуля строки по-прежнему хранятся в тех же местах в DDRAM: первая строка начинается в местоположении 0, вторая строка начинается в местоположении 40. Для получения дополнительной информации см. Таблицу данных:
https://www.sparkfun.com/datasheets/LCD/HD44780.pdf
Вы можете использовать всю память и прокручивать ее влево и вправо, поскольку 16-символьный дисплей является окном в DDRAM. Вы можете использовать scrollDisplayLeft и scrollDisplayRight для сдвига дисплея влево и вправо. Эти функции изменяют, какой адрес DDRAM используется для первого символа в крайнем левом углу экрана. Обе строки прокручиваются в унисон.
Я не совсем уверен, почему ваш Arduino имеет такое поведение, но вы можете передавать полную строку в вашем случае 16 символов каждый раз, когда вы печатаете и смотрите, как это работает, а также анализировать переменные и передавать их в метод .print.
Другой способ — установить вручную данные в нужной строке, используя setCursor()
метод, этот метод помогает вам перемещать и печатать в нужной позиции, он получает два параметра столбца и строки, я дам вам URL с дополнительной информацией.