ЖК-дисплей Arduino показывает только черные ящики в нижнем ряду

Отказ от ответственности: это домашнее задание.

Я беру урок Arduino, и для нашего проекта нам нужно реализовать простой скетч. Используемое оборудование — это плата Arduino Mega ADK и Стартовый набор Electronic Brick. Я смог успешно общаться с Arduino с помощью своих эскизов; другие вещи (например, кнопки и светодиоды), похоже, работают, за исключением ЖК-дисплея. Я следил за многочисленными учебными пособиями (включая образец программы для ЖК-дисплеев по моей второй ссылке), но я не могу заставить ничего работать. Мой ЖК-дисплей постоянно показывает черные квадраты в нижней строке. Оглянувшись вокруг, я вижу, что черные ящики появляются, когда ЖК-дисплей не подключен должным образом. Тем не менее, это стартовый комплект, который содержит кабели, которые вы можете подключить к шасси, что избавляет от проблем, связанных с пайкой отдельных проводов. Что-то не так с моим ЖК-дисплеем? Вот простой эскиз, который я не могу заставить работать:

#include <LiquidCrystal.h>

LiquidCrystal lcd(10,11,12,13,14,15,16);

void setup()
{
  Serial.begin( 9600 );
  lcd.begin(16, 2);
  lcd.clear();
}

void loop()
{
  lcd.setCursor(0,0);
  lcd.println( "hello world!    ");
  delay(1000);
}

Контакты соответствуют BUS2, и я правильно подключил кабель от BUS2 к ЖК-дисплею.


person Vivin Paliath    schedule 09.02.2012    source источник


Ответы (10)


Мой ЖК-дисплей постоянно показывает черные квадраты в нижней строке.

У меня была аналогичная проблема. Подключал LCD, используя минимальное количество контактов: LiquidCrystal(rs, enable, d4, d5, d6, d7). У меня была проблема в том, что я не подключил контакт R/W (чтение/запись) ЖК-дисплея к GND. Когда я это сделал - он начал работать. Также я счел полезным добавить резистор 3,3 кОм от Vo (настройка контрастности) к GND, чтобы текст можно было легко прочитать.

person yas375    schedule 04.09.2014

Пожалуйста, убедитесь, что все штырьки разъема правильно припаяны к ЖК-дисплею.

Если вы используете контактные штырьки без пайки в 16 отверстиях ЖК-дисплея, перемещайте ЖК-дисплей, пока не найдете стабильное положение для тестирования. Легко, что не все из них связываются

Этот базовый пример helloworld должен работать http://www.arduino.cc/en/Tutorial/LiquidCrystal

Для тестирования push-загрузки в IDE arduino для загрузки скрипта. Кнопка сброса на плате Arduino иногда не инициализирует ЖК-дисплей

person Jose    schedule 12.12.2013
comment
столкнулся с тем же: это была проблема пайки, даже если это выглядит хорошо, не так просто правильно припаять эти маленькие контакты. - person yves; 22.01.2017

Вы должны проверить жидкокристаллический дисплей LiquidCrystal(). Столкнулся с той же проблемой, я настроил ее, и теперь она работает.

person Melvin    schedule 03.07.2013

С этой готовой ЖК-панелью неясно, какие настройки у вас есть. Но если на ЖК-дисплее отображаются черные прямоугольники, соответствующие тому, что вы пишете (например, если вы написали «привет, мир!», и вы видите 12 черных прямоугольников для каждого символа и пробела, то, возможно, напряжение ЖК-дисплея слишком высокое. Если у вас нет возможности отрегулировать напряжение на ЖК-дисплее, то, возможно, используйте источник питания с более низким напряжением для Arduino (в случае, если ваш ЖК-дисплей получает входное напряжение, а не отрегулированное питание 5 В.

person jdh    schedule 10.02.2012
comment
Он пишет, что черные ящики находятся в нижней строке. Вывод строки должен быть в верхней строке. Так что сомневаюсь, что это коррелирует. - person A.H.; 10.02.2012
comment
За исключением того, что его ЖК-дисплей был перевернут;) - person SCO; 16.09.2013

Черные прямоугольники в нижней строке обычно указывают на то, что ЖК-дисплей не получил требуемых команд инициализации. Причины могут быть в неправильном подключении кабелей - команды идут на нирвану, а не на LCD.

Так что вы должны

  • Дважды проверьте каждый переключатель на плате, экран и сам ЖК-модуль - все ли в порядке?

  • дважды проверьте, что правильный скетч действительно находится на Arduino.

  • Вставьте delay(1000); непосредственно перед lcd.begin(...). Возможно, ЖК-дисплею требуется больше времени для запуска.

  • Если это домашнее задание, то вы можете проверить свой ЖК-дисплей на Arduino товарища или учителя.

Ваш ЖК-экран возможно неисправен. Но проблема неправильной инициализации возникает так часто на этом сайте и на других форумах, что, скорее всего, все в порядке.

person A.H.    schedule 10.02.2012
comment
У моего учителя, кажется, точно такая же проблема, но в верхнем ряду. Ни один из нас пока не смог найти решение. Он упомянул, что другие студенты пытались перезагрузить и выключить ЖК-дисплей, чтобы очистить его состояние, с разной степенью успеха (у меня это не сработало). Я также думаю, что это может быть проблема инициализации, но API, похоже, не предоставляет ничего, кроме lcd.begin() для инициализации. Я попробую delay(1000), как только вернусь домой. - person Vivin Paliath; 10.02.2012

Вам нужно решать задачи поэтапно. Например:

  1. Проверьте, работает ли ваш скетч, запустив ваш скетч на хорошо работающем оборудовании друга. Если ваш скетч работает, вы знаете, что проблема в вашем аппаратном обеспечении, если он не работает, то проблема в вашем программном обеспечении (эскизе).

  2. Если проблема аппаратная: поменяйте свой подозреваемый ЖК-дисплей на исправно работающий у друга. Если теперь это работает, значит, ваш ЖК-дисплей неисправен.

  3. Если замена ЖК-дисплея не помогает, поменяйте местами материнские платы. В конце концов, если вы начнете с подозрительной системы (известной также как тестируемая система) и заведомо исправной системы (также называемой "золотой системой"), вы сможете определить, какие части тестируемой системы работают, а какие нет.

Дополнительные комментарии

  • Все это упражнение по выяснению того, что не так, само по себе является достойным упражнением. Обязательно ведите тщательные записи о том, что вы пытаетесь сделать. Написание ваших заметок может быть ценным документом для других в вашем затруднительном положении.

  • Хорошая экспериментальная установка также должна тщательно включать систему заведомо исправных (золотых) для использования при диагностике проблем.

  • Каждому заменяемому блоку (также известному как FRU или заменяемый блок) нужна хорошая этикетка. Этикетка используется, чтобы убедиться, что вы не перепутали хорошие и подозрительные FRU. Поскольку они идентичны во всех отношениях (за исключением того, что один работает, а другой может или не может), их легко перепутать.

  • Будьте осторожны при замене заведомо исправного на подозрительный FRU: при необходимости используйте антистатические меры предосторожности. Правильно заземлите системы. Убедитесь, что все соединения выполнены правильно.

person Larry K    schedule 17.02.2012

Я попробовал ваш код, кроме объявления ЖК-дисплея «LiquidCrystal lcd (10,11,12,13,14,15,16);» Эскиз работает, и на ЖК-дисплее отображается сообщение.

Мои устройства:

  1. Ардуино УНО
  2. SC1602BSLB(без подсветки)
  3. ОС компьютера: Windows 7
  4. Среда разработки Arduino: 1.0.4

Я подозреваю, что что-то неладно в разделе объявлений ЖК-дисплея. Мой код выглядит следующим образом (из примера arduino «hello world» в «LiquidCrystal»):

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

Как вы понимаете, контактные соединения в объявлении выше:

   Arduino/LCD
  • Цифровой 5/11
  • Цифровой 4/12
  • Цифровой 3/13
  • Цифровой 2/14

Я новичок в мире Arduino. Просто пытаюсь передать то удивление, которое я испытываю по поводу опыта Arduino. Пожалуйста, сообщите мне, если у вас все еще есть проблемы.

person iwabuchik    schedule 07.06.2013

Я была такая же проблема. Я повторно проверил кабели, чтобы найти два плохих провода. После их изменения у меня все еще была та же проблема. Следующим шагом я припаиваю полоску контактов к ЖК-дисплею. Я видел много сообщений об этом и думал, что знаю лучше. Ну а после приваривания штыревой планки к ЖК, ВОЛШЕБСТВО! Все идет хорошо, если вы внимательно следуете шагам других.

person Danny    schedule 24.04.2016

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

person Sarthak Chauhan    schedule 24.01.2020

Очень поздно на вечеринку, но я столкнулся с похожей проблемой и частично решил ее.

Аппаратное обеспечение: Ardunio Uno, экран HD47780 (8x2 от sparkfun)

Я обнаружил две странные проблемы, которые я еще не решил, но я могу, по крайней мере, вывести текст.

Во-первых: у меня есть потенциометр на контакте контраста, и если я загружаю код/сброс, а этот потенциометр в основном заземляет контакт, он не будет работать. Он должен быть намного выше, а затем, как только код заработает, я смогу продолжить и заземлить его.

Во-вторых: когда я вызываю «setCursor» из основного цикла, он просто снова отображает полосы. Но если я его не вызову, то он просто напечатает символы в следующей доступной позиции.

Код:

// include the library code:
#include <LiquidCrystal.h>

// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 10, 5, 4, 3, 2);


// NOTE: This code will work just fine but you need to have the contrast pin at a resonably high resistance value when you turn it on, and then decreade it once the 
// device has booted otherwise you just see solid bars. Not sure why this is. 
void setup() {
  // set up the LCD's number of columns and rows:
  lcd.begin(8, 2);
  lcd.clear();
  // Print a message to the LCD.
  lcd.print("hello");
  lcd.setCursor(0, 1);
}

void loop() {
  // print the number of seconds since reset:
  lcd.print(millis() / 1000);
  delay(5000);

}
person Tyler    schedule 09.04.2016
comment
Вы должны создать новый вопрос вместо того, чтобы создавать вопрос в месте, предназначенном для ответов - person fredmaggiowski; 10.04.2016