Подключение LCD к Arduino

Josh
Josh аватар
Offline
Зарегистрирован: 24.06.2018

Здравствуйте, возник вопрос по подключению LCD дисплея к Arduino. Не выводит текст на дисплей, дисплей горит (выдает завяленную синюю подсветку), но не более. В компиляторе ошибок не выдает. Использовал как свой код, так и скачанные. В чем может быть проблема? В коде? Или же в физических устройствах? Подключаю неправильно?

Чем располагаю:

Arduino Uno r3

Lcd дисплей HJ1602A

I2c адаптер

4 провода папа-мама

Установленные библиотеки:

LiquidCrystal_I2C.h

LiquidCrystal_PCF8574.h

Подключенно:

GND-GND

VCC-5V

SDA-A4

SCL-A5

Скрин

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Покрутите контрасность. Скорее всего буковки и появятся.

kalapanga
Offline
Зарегистрирован: 23.10.2016

Скетч не вставляйте не скриншотами, а текстом, с помощью кнопочки "Code". Ничего же не видно! Там в инициализации адрес какой-то написан (не разберу!), он такой и есть или "от балды"? Но сначала действительно контрастность покрутите.

Josh
Josh аватар
Offline
Зарегистрирован: 24.06.2018
#include <LiquidCrystal_PCF8574.h> 
LiquidCrystal_PCF8574 lcd(0x27);
void setup() {
lcd.begin(16, 2);
lcd.setBacklight(255); 
lcd.clear(); 
lcd.print('Hello');
lcd.setCursor(4, 1);
lcd.print('Word');
}
void loop() {
}

kalapanga, адресс взял из примера, пробывал 0x38, без изменений.

Раз дисплей горит, ток он получает, видимо ошибка где-то в адресах или в отсутствии библиотек.

 

Josh
Josh аватар
Offline
Зарегистрирован: 24.06.2018

Изменение параметров контрастности не помогло.  Такое чувство, что дисплей не реагирует на команды.

Bront
Offline
Зарегистрирован: 05.04.2016

Josh пишет:

Изменение параметров контрастности не помогло.  Такое чувство, что дисплей не реагирует на команды.

резистор на плате крутили?

Josh
Josh аватар
Offline
Зарегистрирован: 24.06.2018

Спасибо, покрутил. Появились ячейки для символов, 5x8 пикселей. Текст не отображается, но тут видимо несовместимость библиотеки, т.к. не выводит не английские символы, ни цифры, только заготовки 5x8 символов.

bwn
Offline
Зарегистрирован: 25.08.2014

Josh пишет:

kalapanga, адресс взял из примера, пробывал 0x38, без изменений.

Раз дисплей горит, ток он получает, видимо ошибка где-то в адресах или в отсутствии библиотек.

Скачайте I2C сканер и проверьте фактический адрес. Их гораздо больше, чем два.

Josh
Josh аватар
Offline
Зарегистрирован: 24.06.2018

Уже проверил, на удивление 0x27. Проблема в чипе PCF8574T, самая универсальная библиотека LiquidCrystal_I2C-master его не поддерживает. Видимо придется доиписать самому поддержку.

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

у всех поддерживает, у тебя - нет. Пошто?

bwn
Offline
Зарегистрирован: 25.08.2014

Josh пишет:

Уже проверил, на удивление 0x27. Проблема в чипе PCF8574T, самая универсальная библиотека LiquidCrystal_I2C-master его не поддерживает. Видимо придется доиписать самому поддержку.

Та ну, напуй. С чего такой вывод?

Valera19701
Valera19701 аватар
Offline
Зарегистрирован: 18.10.2015

bwn пишет:

Josh пишет:

Уже проверил, на удивление 0x27. Проблема в чипе PCF8574T, самая универсальная библиотека LiquidCrystal_I2C-master его не поддерживает. Видимо придется доиписать самому поддержку.

Та ну, напуй. С чего такой вывод?

Хорошо хоть не "LSD"

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

http://yadi.sk/d/CXjuENmaEEwun

там в папке дисплеи найдешь. попробуй. были как то проблемы

Bront
Offline
Зарегистрирован: 05.04.2016

Библиотеку взял первую какую нашел

https://github.com/mathertel/LiquidCrystal_PCF8574

Пример из этой библиотеки.

#include <Wire.h>
#include <LiquidCrystal_PCF8574.h>

LiquidCrystal_PCF8574 lcd(0x27);  // set the LCD address to 0x27 for a 16 chars and 2 line display

int show;

void setup()
{
  int error;

  Serial.begin(115200);
  Serial.println("LCD...");

  while (! Serial);

  Serial.println("Dose: check for LCD");

  // See http://playground.arduino.cc/Main/I2cScanner
  Wire.begin();
  Wire.beginTransmission(0x27);
  error = Wire.endTransmission();
  Serial.print("Error: ");
  Serial.print(error);

  if (error == 0) {
    Serial.println(": LCD found.");

  } else {
    Serial.println(": LCD not found.");
  } // if

  lcd.begin(16, 2); // initialize the lcd
  show = 0;
} // setup()

void loop()
{
  if (show == 0) {
    lcd.setBacklight(255);
    lcd.home(); lcd.clear();
    lcd.print("Hello LCD");
    delay(1000);

    lcd.setBacklight(0);
    delay(400);
    lcd.setBacklight(255);

  } else if (show == 1) {
    lcd.clear();
    lcd.print("Cursor On");
    lcd.cursor();

  } else if (show == 2) {
    lcd.clear();
    lcd.print("Cursor Blink");
    lcd.blink();

  } else if (show == 3) {
    lcd.clear();
    lcd.print("Cursor OFF");
    lcd.noBlink();
    lcd.noCursor();

  } else if (show == 4) {
    lcd.clear();
    lcd.print("Display Off");
    lcd.noDisplay();

  } else if (show == 5) {
    lcd.clear();
    lcd.print("Display On");
    lcd.display();

  } else if (show == 7) {
    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print("*** first line.");
    lcd.setCursor(0, 1);
    lcd.print("*** second line.");

  } else if (show == 8) {
    lcd.scrollDisplayLeft();
  } else if (show == 9) {
    lcd.scrollDisplayLeft();
  } else if (show == 10) {
    lcd.scrollDisplayLeft();
  } else if (show == 11) {
    lcd.scrollDisplayRight();
  } // if

  delay(2000);
  show = (show + 1) % 12;
} // loop()

 

Josh
Josh аватар
Offline
Зарегистрирован: 24.06.2018

Спасибо большое. Заработало!