Проблема с выводом разных символов в LCD 1602A используя createChar
- Войдите на сайт для отправки комментариев
Все добрый вечер(день). Помогите пожалуйста решить проблему, а заключается он в том, что не могу вывести 2 разных символа используя одну и туже ячейку памяти дисплея. Впринципе по коду всё понятно.
Дело в том, что когда я записываю символ в первую пользовательскую ячейку памяти и вывоже на экран, а потом используя туже ячейку памяти записываю другой символ, но при этом перемещаю указатель, то на экране первый и второй символ равны второму. Из этого я сделал вывод, что монитор постоянно обновляется. Скажите пожалуйста как можно записывать текст больше 8 символов используя пользовательские ячейки памяти на LCD 1602. Так как автор с этого видео сказал, что это возможно, но как? Пытался понять его пример, но он очень сложный, и как мне кажется там много лишнего. Помогите пожалуйста.
https://www.youtube.com/watch?v=uL61rEUVVeU
#include <LiquidCrystal.h> #include <OutputRusMessageLCD.h> LiquidCrystal disp(6, 7, 2, 3, 4, 5); char A[8] = {0b01110,0b10001,0b10001,0b10001,0b10001,0b11111,0b10001,0b10001}; // А char Z[8] = {0b11110,0b00001,0b00001,0b00110,0b00001,0b00001,0b11110,0b00000}; // З void setup() { disp.begin(16, 2); byte a[8]; a[0] = A[0]; a[1] = A[1]; a[2] = A[2]; a[3] = A[3]; a[4] = A[4]; a[5] = A[5]; a[6] = A[6]; a[7] = A[7]; disp.createChar(0, a); disp.setCursor(0, 0); disp.write(byte(0)); a[0] = Z[0]; a[1] = Z[1]; a[2] = Z[2]; a[3] = Z[3]; a[4] = Z[4]; a[5] = Z[5]; a[6] = Z[6]; a[7] = Z[7]; disp.createChar(0, a); disp.setCursor(5, 0); disp.write(byte(0)); } void loop() { }
Все правильно. Создавая свои символы Вы просто подменяете символ в памяти знакогенератора и можете использовать этот символ в любых позициях дисплея. Если нужен символ другого начертания, то используйте новый символ. То есть, одновременно на дисплее 1602 вы можете иметь не более 8 символов размером 5х8. А вот каждый из них выводить можете хоть во все знакоместа одновременно.
Я так понял, как не пытайся, а на монитор больше 8-ми символов не выведешь?
И ещё я хотел спросить, тут указатель на память идёт или постоянно экран механически обновляется?
И ещё я хотел спросить, тут указатель на память идёт или постоянно экран механически обновляется?
не понятно про механически обновляется.
в индикаторе тебе аппаратно доступны для записи только восемь символов.
остальные символы тебе доступны только для чтения.
не понятно про механически обновляется.
Ну то есть он постоянно обновляет память.
в индикаторе тебе аппаратно доступны для записи только восемь символов.
остальные символы тебе доступны только для чтения.
Это понятно, я пытаюсь найти способ вывести на экран больше 8-ми символов.
не понятно про механически обновляется.
Ну то есть он постоянно обновляет память.
кто обновляет и какую память?
Эх... ладно забудьте. Спасибо за помощь.
Это понятно, я пытаюсь найти способ вывести на экран больше 8-ми символов.
где-то было на форуме - перезаписываешь символы и читаешь оттуда, что угодно.
при таком подходе, тебе достаточно перезаписывать один символ и сразу его печатать.
Дело в том, как я писал ещё в самом начале. Когда я полность заполняю временную память символами и вывоже их, то всё ок, но стоит мне записать другие символы и вывести (при этом я перемещаю указатель) как старые символы заменяются на новые. Если есть способ вывести больше 8-ми, то пожалуйста помогите мне найти. Я уже 3 день бьюсь, не получается никак.
Больше восьми различных пользовательских символов одновременно вывести на дисплей 1602 HD44780 не позволяет.
Спасибо за помощь, буду знать.