LCD дисплей не показывает
Это мое неправильное программирование или у моей платы есть проблема, потому что ЖК-дисплей ничего не отображает. вот код
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// установите ЖК-адрес равным 0x27 для 4-строчного дисплея с 20 символами
// Установите контакты на микросхеме I2C, используемой для подключения ЖК-дисплея:
// addr, en,rw,rs,d4,d5,d6,d7,bl, blpol
LiquidCrystal_I2C lcd(0x27, 6, 2, 3, 4, 5, 6, 7, 3, POSITIVE); // Установить ЖК-дисплей I2C add 27 / 3F
void setup() /*----( SETUP: RUNS ONCE )----*/
{
Serial.begin(9600); //
lcd.begin(16,2); // инициализировать ЖК-дисплей на 16 символов 2 строки, включить подсветку
lcd.backlight();
}
void loop() /*----( LOOP: RUNS CONSTANTLY )----*/
{
lcd.setCursor(0, 0);
lcd.print("HELLO");
delay(200);
lcd.setCursor(0, 1);
lcd.print ("HI");
delay(2000);
lcd.clear();
delay(2000);
lcd.setCursor(0, 0);
lcd.print("NICE");
delay(200);
lcd.setCursor(0, 1);
lcd.print ("GOOD ");
delay(2000);
lcd.clear();
delay(2000);
}
вот как я это делаю. что же мне делать?
@AIN MIMI, 👍2
Обсуждение4 ответа
Первое, что вам нужно сделать, это запустить примеры из библиотеки. Если это не сработает, проверьте свои соединения и компоненты.
Если пример работает, то это должен быть ваш скетч (проблема программирования).
Хорошая практика: пишите короткие скетчи, которые проверяют только один компонент вашего проекта. Пример: в вашем проекте используются ЖК-дисплей, датчик температуры и кнопка, вы написали три коротких теста. Если что-то пойдет не так с вашим проектом, вы можете использовать тестовые скетчи, чтобы определить, в чем проблема
когда я компилировал и загружал эту кодировку, она не показывала никаких ошибок. но ЖК-дисплей все равно ничего не может отобразить. я уже запустил примеры, но ЖК-дисплей все еще не может отображаться. что же мне делать? я просто использовал ЖК-дисплей, потому что мне просто нужен ЖК-дисплей для отображения. но это не удалось. Спасибо, что ответили на мой вопрос., @AIN MIMI
я уже изменил его на это, но это все равно не сработало, @AIN MIMI
Я согласен с Look Alterno по поводу инициализации ЖК-дисплея. Загрузите этот простой скетч, а затем попробуйте настроить потенциометр 10k ohm на задней панели печатной платы I2C, пока не увидите текст.
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
const byte LCDcolumns = 16;
const byte LCDrows = 2;
// 0x27 - это адрес по умолчанию. Ваш адрес 0x3F - если да, измените 0x27 на 0x3F
LiquidCrystal_I2C lcd(0x27, LCDcolumns, LCDrows);
void setup(){
lcd.init();
lcd.backlight();
lcd.home();
lcd.print("16 x 2 LCD Test");
}
void loop(){
}
Там могут быть разные версии библиотеки LiquidCrystal_I2C. Пример "HelloWorld", поставляемый с моей библиотекой, имеет следующие комментарии в верхней части скетча:
//YWROBOT
//Compatible with the Arduino IDE 1.0
//Library version:1.1
Вы можете изменить адрес I2C в этом скетче на 0x3F и повторить попытку.
Потенциометр, который нуждается в регулировке, находится на вашей плате I2C, показанной здесь красной стрелкой, указывающей на него:
я не использовал потенциометр, потому что мой лектор сказал мне просто использовать ЖК-дисплей. я пробую кодировку, которую вы даете, но все еще не работаю, @AIN MIMI
черные полосы указывают на то, что ЖК-дисплей неправильно инициализирован.
проверьте оборудование / соединение и убедитесь, что ваше программное обеспечение инициализирует его правильно.
Ну, у меня есть оборудование, поэтому я проверил конфигурацию OP. У меня это тоже не сработало. Та же самая проблема операции.
Причина-адрес I2C, который мы используем (0x27). Это не мой ЖК-адрес, и, вероятно, не ваш адрес. В моем случае это 0x3F.
Я обнаружил это I2CScanner, короткий скетч, в котором перечислены все устройства I2C, подключенные в тот момент. Итак, запустите его (с подключенным ЖК-дисплеем) и следите с помощью последовательного монитора за адресом вашего ЖК-дисплея.
Затем замените все ссылки на 0x27 (например, lcd(0x27, 16, 2)
) вашим реальным адресом. Просто измените одно значение на другое.
Это I2CScanner
//
// Версия 1
// Эта программа (или код, похожий на нее)
// можно найти во многих местах.
// Например, на Arduino.cc форум.
// Оригинального автора не знаю.
// Версия 2, Juni 2012, Использование Arduino 1.0.1
// Адаптировано так, чтобы быть как можно более простым с помощью Arduino.cc пользователь Krodal
// Версия 3, 26 февраля 2013 г.
// V3 by louarnold
// Версия 4, 3 марта 2013 года, с использованием Arduino 1.0.3
// по Arduino.cc пользователь Krodal.
// Изменения луарнольда удалены.
// Адреса сканирования изменены с 0...127 на 1...119,
// по данным сканера i2c Ника Гэммона
// http://www.gammon.com.au/forum/?id=10896
// Версия 5, 28 марта 2013 г.
// Как версия 4, но адрес теперь сканируется до 127.
// Датчик, похоже, использует адрес 120.
// Версия 6, 27 ноября 2015 года.
// Добавлено ожидание последовательной связи Leonardo.
//
//
// Этот скетч тестирует стандартные 7-битные адреса
// Устройства с более высоким битовым адресом могут быть видны неправильно.
//
#include <Wire.h>
void setup()
{
Wire.begin();
Serial.begin(9600);
while (!Serial); // Леонардо: дождитесь последовательного монитора
Serial.println("\nI2C Scanner");
}
void loop()
{
byte error, address;
int nDevices;
Serial.println("Scanning...");
nDevices = 0;
for(address = 1; address < 127; address++ )
{
// i2c_scanner использует возвращаемое значение
// Write.endTransmission, чтобы увидеть
// a device did acknowledge to the address.
Wire.beginTransmission(address);
error = Wire.endTransmission();
if (error == 0)
{
Serial.print("I2C device found at address 0x");
if (address<16)
Serial.print("0");
Serial.print(address,HEX);
Serial.println(" !");
nDevices++;
}
else if (error==4)
{
Serial.print("Unknown error at address 0x");
if (address<16)
Serial.print("0");
Serial.println(address,HEX);
}
}
if (nDevices == 0)
Serial.println("No I2C devices found\n");
else
Serial.println("done\n");
delay(5000); // подождите 5 секунд для следующего сканирования
}
последовательный монитор показывает, что мой ЖК-адрес равен 0x3F. но когда я меняю свой адрес в своей кодировке и начинаю запускать программу, ЖК-дисплей начинает мигать, но ни одно слово не отображается., @AIN MIMI
спасибо, что помогли мне. мой ЖК-дисплей уже отображается. можете ли вы помочь мне, как активировать ЖК-дисплей с помощью кнопки?, @AIN MIMI
я не могу найти ни одного подходящего примера. я не знаю, как его подключить., @AIN MIMI
Спасибо, что показали мне сканер i2c! Это гениально!, @HavocRC
- Печать string and integer LCD
- NodeMCU с RFID RC522 и LCD-модулем интерфейса I2C вместе
- ЖК-дисплей I2C отображает странные символы
- Экран LCD 16*02 I2C показывает только первый напечатанный символ
- Sainsmart LCD 2004 - проблема с библиотекой LiquidCrytal_I2C, не удается скомпилировать
- Что означают цифры позади lcd (0x27)?
- ATtiny85 I2C ЖК
- Документы по использованию i2C LCD с библиотекой Newliquidcrystal_1.3.5
Вы должны добавить Serial.println (), чтобы узнать, запущена ли программа (или, по крайней мере, заставить светодиод мигать в цикле). Глядя на диспей, мне кажется, что либо инициализация неверна, либо контраст установлен неправильно (я не вижу внешнего потенциометра/резистора, но этот конкретный дисплей может и не требовать этого)., @next-hack
но когда я компилировал и загружал в arduino, он не показывал никаких ошибок. можете ли вы сказать мне, где я должен добавить Serial.println(). потому что это мой первый раз, когда я использую это., @AIN MIMI
Ну, ставьте несколько строк после каждого вызова метода lcd. Например, после lcd.begin(16,2); вы можете написать Serial.println("После lcd.begin()"); и т. Д. Если на последовательном мониторе вы не видите надпись "After Begin", то даже метод begin не увенчается успехом. Это может быть связано с неправильными проводами., @next-hack