Sainsmart LCD 2004 - проблема с библиотекой LiquidCrytal_I2C, не удается скомпилировать

Я купил Sainsmart LCD2004 на Amazon для использования с моим Arduino Uno. Я понимаю, что поскольку этот ЖК-дисплей использует I2C, необходимо загрузить новую библиотеку.

С сайта sainsmart я скачал LCD 2004 rar http://www.sainsmart.com/arduino/arduino-shields/sainsmart-iic-i2c-twi-serial-2004-20x4-lcd-module-shield-for-arduino-uno-mega-r3.html

Когда я пытаюсь скомпилировать пример под названием helloworld, я получаю следующую ошибку:

В файле, включенном из HelloWorld.pde:3: C:\Users\r_yob_000\Documents\Arduino\libraries\LiquidCrystal_I2C/LiquidCrystal_I2C.h:81: ошибка: указан конфликтующий тип возвращаемого значения для «virtual void LiquidCrystal_I2C::write(uint8_t)» C:\Program Files (x86)\Arduino\hardware\arduino\cores\arduino/Print.h:48: ошибка: переопределение «virtual size_t Print::write(uint8_t)»

Похоже, существует конфликт между двумя функциями, возвращающими разные типы.

Я попробовал поискать информацию по этой проблеме и нашел много сообщений с похожими ошибками. Обычно предлагается решение, что нужно загрузить новую версию LiquidCrytal_I2C. Или использовать Arduino IDE версии 1.0

Я скачал тонны библиотек LiquidCrytal_I2C и попробовал их все на IDE версии 1.0 и 1.0.6, и я все еще получаю то же самое сообщение об ошибке. Я даже пытался изменить файл LiquidCrytal_I2C.h так, чтобы он возвращал правильный тип, но все равно безуспешно.

Могу ли я получить помощь по этому вопросу?

Большое спасибо.

, 👍7


3 ответа


1

Я только что купил 3 таких, которые отлично работают с этой библиотекой. LiquidCrystal_I2C2004V1.zip
(Лицензия: CC BY-NC 2012 http://www.wikispaces.com/user/view/TerryKing).

При установке этой библиотеки в Arduino IDE (версии 1.6 или более поздней) используйте пункт меню Sketch | Include Library | Add .ZIP Library..., перейдите в папку, куда был загружен LiquidCrystal_I2C2004V1.zip, а затем откройте zip-файл.

Используйте адрес I2C в примере «HelloWorld», поставляемом с LiquidCrystal_I2C2004V1:

//YWROBOT
//Совместимо с Arduino IDE 1.0
//Версия библиотеки:1.1
#include <Wire.h> 
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27,20,4);  // устанавливаем адрес ЖК-дисплея на 0x27 для отображения 16 символов и 2 строк

void setup()
{
  lcd.init();                      // инициализируем ЖК-дисплей
  lcd.init();
  // Вывести сообщение на ЖК-дисплей.
  lcd.backlight();
  lcd.setCursor(3,0);
  lcd.print("Hello, world!");
  lcd.setCursor(2,1);
  lcd.print("Ywrobot Arduino!");
   lcd.setCursor(0,2);
  lcd.print("Arduino LCM IIC 2004");
   lcd.setCursor(2,3);
  lcd.print("Power By Ec-yuan!");
}


void loop()
{
}

Не меняйте имя каталога другой библиотеки; это имя совместимо с существующей библиотекой. Просто добавьте его как предоставленную библиотеку.

,

Должно было быть меню «Импорт библиотеки» для извлечения zip-файла., @Brent Mesler

Добро пожаловать на «Arduino Stackexchange». Вы можете редактировать свой ответ, используя кнопку «Изменить» под ним., @Paul

Дополнительный абзац объединен в ответ, как предложил MarkU. Спасибо!, @Nick Gammon


1

У меня тоже были проблемы с этой библиотекой, пока я не понял, что имя библиотеки по умолчанию "LiquidCrystal" конфликтует с именем другой библиотеки, из-за чего файлы путаются. Просто поместите файлы в другую папку (я назвал свою) "LiquidCrystal_4x20". Решено для меня.

,

0

Вам необходимо обновить библиотеку I2C.

Здесь вы можете найти последнюю версию:
https://bitbucket.org/fmalpartida/new-liquidcrystal/downloads/

И переместите старый в другую папку, чтобы вы могли использовать этот. или после установки сделайте так:

  1. Перейдите в Arduino\libraries\Newliquidcrystal_1.3.5\
  2. Переименуйте LiquidCrystal_I2C.h как LiquidCrystal_I2Ca.h
  3. Когда вы используете его в скетче, используйте include LiquidCrystal_I2Ca.h
,