Почему в смайлике есть дополнительный пиксель для подсветки Grove LCD RGB от Seeed Studio?
Во время тестирования примера CustomCharacter.ino для подсветки Grove LCD RGB от Seeed Studio на плате Arduino 101 над глазом смайлика появляется дополнительный пиксель, и смайлик также сдвигается на один ряд вниз. (смотрите прикрепленное изображение чуть ниже, с некоторыми изменениями вручную в библиотеке, пытаясь устранить проблему)
На самом деле, в зависимости от порядка присвоения символов, смайлик, наконец, отображается правильно, например, в следующем минимальном рабочем примере, где два назначения createChar()
поменялись местами (1
перед 0
), и оба смайлика отображаются правильно:
#include <Wire.h>
#include "rgb_lcd.h"
rgb_lcd lcd;
byte smiley[8] = {
0b00000,
0b00000,
0b01010,
0b00000,
0b00000,
0b10001,
0b01110,
0b00000
};
void setup()
{
lcd.begin(16, 2);
lcd.createChar(1, smiley);
lcd.createChar(0, smiley);
lcd.setCursor(0, 0);
lcd.write((unsigned char)0);
lcd.write(1);
}
void loop() {}
Если я случайно помещу lcd.createChar(0, смайлик);
обратно перед lcd.createChar(1, смайлик);
, ошибка (сдвиг в строках пикселей + дополнительный активированный пиксель) возникает снова для второго смайлика.
Может ли кто-нибудь объяснить, почему это происходит на самом деле, и, надеюсь, дать какой-нибудь способ исправить дисплей?
@Olivier, 👍0
Обсуждение0
- Печать string and integer LCD
- Как отобразить символ º на ЖК-дисплее?
- Отправка значения с одного Arduino на другой
- Черные квадраты дисплея Arduino 16x2
- NodeMCU с RFID RC522 и LCD-модулем интерфейса I2C вместе
- ЖК-дисплей I2C отображает странные символы
- Экран LCD 16*02 I2C показывает только первый напечатанный символ
- Потенциометр 10 кОм против резистора 10 кОм на ЖК-дисплее
Над заданным вами шаблоном есть дополнительная строка пикселей, а последняя строка отсутствует. Похоже, у вас есть одноразовая ошибка в вашем коде., @the busybee
@thebusybee: Действительно! Я не заметил этого факта. Я не мог сказать, почему этот самостоятельный символ не отображается должным образом. Например, я проверил символ "хмурый" в том же месте, и он отображается правильно., @Olivier
Если показанный код воспроизводит проблему (отображение не соответствует коду), то я бы сказал, что библиотека неисправна. Их код инициализации кажется мне неправильным. Возможно, вы захотите это исправить, провести кое-какие исследования., @the busybee
ОК. Функция
setup ()
, показанная здесь, является моей адаптацией одной оригинальной функции в `CustomCharacter.ino'., @OlivierНу, я имею в виду
rgb_lcd::begin()
. Такие дисплеи, совместимые с HD44780, должны быть сначала инициализированы в 8-битный режим. Но кажется, что метод этого не делает. Однако, поскольку ЖК-дисплей, по-видимому, инициализирован, это не имеет никаких последствий. Но это говорит о качестве библиотеки. -- Методrgb_lcd::createChar()
выглядит нормально. -- Я бы попытался пойти на один уровень глубже и обойти библиотеку, используя I2C напрямую, чтобы получить максимальный контроль. -- Что показывает дисплей с вашей упрощенной программой, в обоих случаях: 0 перед 1 и 1 перед 0? Оба смайлика правильные или неправильные?, @the busybeeПри "порядке 1/0" для
rgb_lcd::createChar ()
оба смайлика отображаются правильно. Принимая во внимание, что при "заказе 0/1" отображается второй с проблемами, обнаруженными ранее., @OlivierЭто странно. Следующий шаг, который я бы предпринял, - вставить несколько отладочных сообщений по последовательной строке, просто чтобы посмотреть, как
rgb_lcd::createChar()
выполняет свою работу правильно. Не могли бы вы попробовать это? -- В качестве альтернативы, я бы заглянул в сгенерированный ассемблерный код, просто чтобы убедиться, что он правильный. Но для этого нужен определенный опыт. -- О, и, пожалуйста, [отредактируйте] свой вопрос, чтобы ** добавить ** новую информацию. Новые посетители не обязательно будут читать комментарии здесь., @the busybee