Почему на LCD-дисплее отображаются случайные символы?

lcd

Я часами боролся со своим ЖК-дисплеем, и после решения большего количества различных проблем, чем я могу вспомнить, у меня закончились идеи по этому поводу.

На моем ЖК-дисплее отображаются случайные символы, см. рисунок ниже (последний символ мигает, некоторые символы меняются, и со временем символов становится все больше и больше). Я начинаю задаваться вопросом, есть ли у выбранного мной ЖК-дисплея драйвер, совместимый с библиотекой LiquidCrystal, что вы думаете? Если да, то что я могу сделать, чтобы не покупать еще один?

Вот код:

// включаем код библиотеки:
#include <LiquidCrystal.h>

// инициализируем библиотеку номерами контактов интерфейса
//RS EN D4 D5 D6 D7
LiquidCrystal lcd(2, 3, 4, 5, A2, A3);
//RW к GND, VSS к GND, VCC к 5 В, V0 к движку потенциометра 5 В к GND 10 кОм

void setup() {
  Serial.begin(9600);
  Serial.println("Starting");
  lcd.begin(16, 2);
}

void loop() {
  lcd.setCursor(0, 1);
  lcd.print(millis() / 1000);
  Serial.println("Printing");
  delay(1000);
}

Я использую этот Arduino и этот ЖК-дисплей. Обратите внимание, что я использую контакты 10,11,12,13 для SD (который работает) и 6, 7, 8 для MAX232 (который отключен).

Есть идеи?

, 👍3

Обсуждение

Я не уверен, поддерживает ли библиотека LiquidCrystal использование «аналоговых контактов» A2 A3 таким образом. Можете ли вы проверить свой ЖК-дисплей, используя стандартную конфигурацию контактов (очевидно, не используя SD или какие-либо другие мешающие устройства). Сам ЖК-дисплей выглядит как обычный HD44780, поэтому причина скорее в конфигурации контактов, чем в каком-то экзотическом драйвере устройства., @MarkU

Библиотека LiquidCrystal включает в себя заведомо хороший пример кода, который является частью того, для чего предназначен Arduino. Используйте это в качестве диагностики, чтобы проверить работу ЖК-дисплея, прежде чем пытаться использовать нестандартное соединение., @MarkU

Спасибо. Приведенный выше код является примером на официальном сайте. Я только что добавил задержку(), так что он должен работать... Я проверил, A2 и A3 отправляют цифровые сигналы, как и другие контакты, так что все выглядит нормально. Прохожий, разве недостаточно вызвать конструктор с 6 аргументами, чтобы выбрать 4-контактный режим?, @user42875

У многих людей, столкнувшихся с этой проблемой, были проблемы с ЭМС — напряжение 5 В подается через повышающий преобразователь от батареи, но я заметил, что на шине питания стабильные 5 В…, @user42875

Контакты, не отмеченные на картинке, остаются неподключенными. Нужно ли их заземлять? Все примеры, которые я видел, оставили их не связанными, @user42875

Глупый вопрос, но на картинке такое впечатление, будто ты просто засунул провода в отверстия. Ты их спаял, да?, @Roger Rowland

«Пожалуйста, пока не переносите этот пост на Arduino SE» — слишком поздно!, @Nick Gammon

проверьте 2 и 3 :) опять ваша военная служба плоха, ну насколько я знаю, есть ли "?" этот знак, ты должен проверить свои связи, @Narzan Q.

Соединения сквозные, не важно на каком слое я их припаиваю, они припаиваются снизу. Я проверил, верхние колодки подключены., @user42875


1 ответ


Лучший ответ:

3

Возможно, причина в том, что «millis()/1000» генерирует «число», а не «строку» (или «символ»). Попробуйте добавить «,DEC» в свой lcd.print(), что-то вроде «millis()/1000,DEC», чтобы преобразовать его в «десятичный». Как правило, это зависит от библиотеки, как они реализуют эту функцию.

Удачи

Майк

,

Вы и Прохожий были правы в этом, я это исключил, потому что это был официальный пример, но очевидно, что их пример был неверным. Я изменил это на «ABC...Z», а затем на «123...90», и оба работали безупречно. Спасибо!, @user42875