ЖК-дисплей печатает странные символы, когда я помещаю оператор печати в настройку после операторов pinMode.

#include "LiquidCrystal.h"

const int rs = 7, en = 6, d4 = 5, d5 = 4, d6 = 3, d7 = 2; 
LiquidCrystal lcd(rs, en, d4, d5, d6, d7)

void setup() {
  Serial.begin(9600);
  lcd.begin(16, 2);
  pinMode(22, INPUT_PULLUP); // Геркон - Ряд1
  pinMode(24, INPUT_PULLUP); // Геркон - Ряд2
  pinMode(26, INPUT_PULLUP); // Геркон - Ряд3
  pinMode(28, INPUT_PULLUP); // Геркон - Row4
  pinMode(32, OUTPUT);
  digitalWrite(32, HIGH);
  lcd.setCursor(0, 0);
  lcd.print("hello");
}

Когда я запускаю приведенный выше код, на ЖК-дисплее появляются странные символы. Я удалил все соединения с контактами, определенными в pinMode, и оставил только соединения ЖК-дисплея, но сохранил операторы pinMode и digitalWrite в коде, но по-прежнему получаю странные символы. Но когда я удаляю операторы pinMode и digitalWrite из своего кода, ЖК-дисплей работает нормально. Может ли кто-нибудь мне помочь?

Изменить:
Произошла еще одна странная вещь: я удалил все операторы pinMode и digitalWrite, в моей настройке() были только Serial.begin() и lcd.begin(), а у меня были только соединения с ЖК-дисплеем. Теперь я поместил этот код для печати в функцию под названием lcdprintMove(), и были и другие функции, которые выполняли другие задачи, когда я запускал его. Я получал странные символы на ЖК-дисплее, но когда я удалил все другие функции, ЖК-дисплей печатается нормально. Из этого я смог сделать вывод, что эта проблема не может быть связана с поставкой, а должна быть чем-то другим. Но я до сих пор не могу этого понять.

Проблема решена

Сегодня я прокомментировал все утверждения digitalWrite и загрузил программу, и она заработала! Итак, я собираюсь подключить ЖК-дисплей к отдельному Arduino и обмениваться данными последовательно. Кто-то предложил решение: заземлить колпачок и усилить питание контакта 5 В. Можете ли вы объяснить это более подробно?

Принципиальная схема Примечание: Rs подключен к контакту 7, а E к контакту 6

, 👍2

Обсуждение

Как подключен ваш ЖК-дисплей? Покажите пожалуйста схему., @JRobert

Что подключено к контакту 32?, @Majenko

все контакты, определенные в pinMode, подключены к герконам., @Roshan

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

На самом деле я только что попробовал это, я удалил все и оставил только соединения ЖК-дисплея, но сохранил операторы pinMode и digitalWrite там, но все равно получаю странные символы. но когда у меня есть только операторы lcd в setup(), все работает нормально. Я не могу понять, что происходит., @Roshan

Я заметил такое поведение, когда ЖК-дисплей не может потреблять достаточный ток. Вы уверены, что у вас достаточно питания? Вы всегда можете добавить разъем на землю и контакты +5 В в качестве буфера. Когда я замечал это раньше, обычно это происходило тогда, когда я перемещал сервопривод одновременно с записью на ЖК-дисплей. ЖК-дисплеи кажутся весьма чувствительными в этом отношении., @Beachhouse

Какой конденсатор мне следует использовать? Также, чтобы уточнить, говоря «выводы +5 В в качестве буфера», вы имели в виду, что я должен буферизовать вывод +5 В для большей мощности, используя буферные микросхемы, такие как ULN2003A?, @Roshan

* «Я удалил все и оставил только подключения ЖК-дисплея, но сохранил операторы pinMode и digitalWrite, но по-прежнему получаю странные символы». * Отредактируйте свой вопрос, добавив эту важную информацию. Вопрос должен стоять сам по себе, без необходимости читать комментарии. Без этой информации ваша принципиальная схема кажется неполной. После добавления этой информации я готов проголосовать за возобновление этого открытия., @per1234

Питание +5 В ЖК-модуля подается непосредственно от источника питания или от одного из контактов +5 В Arduino? В последнем случае попробуйте подать питание напрямую., @JRobert

это от контактов 5В ардуино, @Roshan


1 ответ


-1

Конденсатор между 5 В и GND эффективно действует как небольшая батарея. Когда возникает внезапная потребность в относительно большом токе, система может получить эту дополнительную небольшую величину от конденсатора и не испытывать падения напряжения.

,