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);
}

вот как я это делаю. что же мне делать?

, 👍2

Обсуждение

Вы должны добавить Serial.println (), чтобы узнать, запущена ли программа (или, по крайней мере, заставить светодиод мигать в цикле). Глядя на диспей, мне кажется, что либо инициализация неверна, либо контраст установлен неправильно (я не вижу внешнего потенциометра/резистора, но этот конкретный дисплей может и не требовать этого)., @next-hack

но когда я компилировал и загружал в arduino, он не показывал никаких ошибок. можете ли вы сказать мне, где я должен добавить Serial.println(). потому что это мой первый раз, когда я использую это., @AIN MIMI

Ну, ставьте несколько строк после каждого вызова метода lcd. Например, после lcd.begin(16,2); вы можете написать Serial.println("После lcd.begin()"); и т. Д. Если на последовательном мониторе вы не видите надпись "After Begin", то даже метод begin не увенчается успехом. Это может быть связано с неправильными проводами., @next-hack


4 ответа


-1

Первое, что вам нужно сделать, это запустить примеры из библиотеки. Если это не сработает, проверьте свои соединения и компоненты.

Если пример работает, то это должен быть ваш скетч (проблема программирования).

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

,

когда я компилировал и загружал эту кодировку, она не показывала никаких ошибок. но ЖК-дисплей все равно ничего не может отобразить. я уже запустил примеры, но ЖК-дисплей все еще не может отображаться. что же мне делать? я просто использовал ЖК-дисплей, потому что мне просто нужен ЖК-дисплей для отображения. но это не удалось. Спасибо, что ответили на мой вопрос., @AIN MIMI

я уже изменил его на это, но это все равно не сработало, @AIN MIMI


0

Я согласен с 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, показанной здесь красной стрелкой, указывающей на него:

Arrow pointing to potentiometer

,

я не использовал потенциометр, потому что мой лектор сказал мне просто использовать ЖК-дисплей. я пробую кодировку, которую вы даете, но все еще не работаю, @AIN MIMI


1

черные полосы указывают на то, что ЖК-дисплей неправильно инициализирован.

проверьте оборудование / соединение и убедитесь, что ваше программное обеспечение инициализирует его правильно.

,

1

Ну, у меня есть оборудование, поэтому я проверил конфигурацию OP. У меня это тоже не сработало. Та же самая проблема операции.

Причина-адрес I2C, который мы используем (0x27). Это не мой ЖК-адрес, и, вероятно, не ваш адрес. В моем случае это 0x3F.

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

Затем замените все ссылки на 0x27 (например, lcd(0x27, 16, 2)) вашим реальным адресом. Просто измените одно значение на другое.

Hello World

Это 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