Проблема с выводом разных символов в LCD 1602A используя createChar

LoneRay
LoneRay аватар
Offline
Зарегистрирован: 03.11.2016

Все добрый вечер(день). Помогите пожалуйста решить проблему, а заключается он в том, что не могу вывести 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() {

}

 

ptr
Offline
Зарегистрирован: 28.05.2016

Все правильно. Создавая свои символы Вы просто подменяете символ в памяти знакогенератора и можете использовать этот символ в любых позициях дисплея. Если нужен символ другого начертания, то используйте новый символ. То есть, одновременно на дисплее 1602 вы можете иметь не более 8 символов размером 5х8. А вот каждый из них выводить можете хоть во все знакоместа одновременно.

 

LoneRay
LoneRay аватар
Offline
Зарегистрирован: 03.11.2016

Я так понял, как не пытайся, а на монитор больше 8-ми символов не выведешь?

И ещё я хотел спросить, тут указатель на память идёт или постоянно экран механически обновляется?

Клапауций 234
Offline
Зарегистрирован: 24.10.2016

LoneRay пишет:

И ещё я хотел спросить, тут указатель на память идёт или постоянно экран механически обновляется?

не понятно про механически обновляется.

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

остальные символы тебе доступны только для чтения.

LoneRay
LoneRay аватар
Offline
Зарегистрирован: 03.11.2016

Клапауций 234 пишет:

не понятно про механически обновляется.

Ну то есть он постоянно обновляет память.

Клапауций 234 пишет:

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

остальные символы тебе доступны только для чтения.

Это понятно, я пытаюсь найти способ вывести на экран больше 8-ми символов. 

Клапауций 234
Offline
Зарегистрирован: 24.10.2016

LoneRay пишет:

Клапауций 234 пишет:

не понятно про механически обновляется.

Ну то есть он постоянно обновляет память.

кто обновляет и какую память?

LoneRay
LoneRay аватар
Offline
Зарегистрирован: 03.11.2016

Эх... ладно забудьте. Спасибо за помощь.

Клапауций 234
Offline
Зарегистрирован: 24.10.2016

LoneRay пишет:

Это понятно, я пытаюсь найти способ вывести на экран больше 8-ми символов. 

где-то было на форуме - перезаписываешь символы и читаешь оттуда, что угодно.

при таком подходе, тебе достаточно перезаписывать один символ и сразу его печатать.

LoneRay
LoneRay аватар
Offline
Зарегистрирован: 03.11.2016

Дело в том, как я писал ещё в самом начале. Когда я полность заполняю временную память символами и вывоже их, то всё ок, но стоит мне записать другие символы и вывести (при этом я перемещаю указатель) как старые символы заменяются на новые. Если есть способ вывести больше 8-ми, то пожалуйста помогите мне найти. Я уже 3 день бьюсь, не получается никак.

ptr
Offline
Зарегистрирован: 28.05.2016

Больше восьми различных пользовательских символов одновременно вывести на дисплей 1602 HD44780 не позволяет.

 

LoneRay
LoneRay аватар
Offline
Зарегистрирован: 03.11.2016

Спасибо за помощь, буду знать.