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 ответа
Я только что купил 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()
{
}
Не меняйте имя каталога другой библиотеки; это имя совместимо с существующей библиотекой. Просто добавьте его как предоставленную библиотеку.
У меня тоже были проблемы с этой библиотекой, пока я не понял, что имя библиотеки по умолчанию "LiquidCrystal" конфликтует с именем другой библиотеки, из-за чего файлы путаются. Просто поместите файлы в другую папку (я назвал свою) "LiquidCrystal_4x20". Решено для меня.
Вам необходимо обновить библиотеку I2C.
Здесь вы можете найти последнюю версию:
https://bitbucket.org/fmalpartida/new-liquidcrystal/downloads/
И переместите старый в другую папку, чтобы вы могли использовать этот. или после установки сделайте так:
- Перейдите в
Arduino\libraries\Newliquidcrystal_1.3.5\
- Переименуйте
LiquidCrystal_I2C.h
какLiquidCrystal_I2Ca.h
- Когда вы используете его в скетче, используйте include
LiquidCrystal_I2Ca.h
- NodeMCU с RFID RC522 и LCD-модулем интерфейса I2C вместе
- ЖК-дисплей I2C отображает странные символы
- Экран LCD 16*02 I2C показывает только первый напечатанный символ
- Что означают цифры позади lcd (0x27)?
- ATtiny85 I2C ЖК
- Документы по использованию i2C LCD с библиотекой Newliquidcrystal_1.3.5
- 16/2 arduino I2C ЖК-дисплей не загорается?
- ЖК-дисплеи размером более 20x04 и диагональю 5 дюймов
Должно было быть меню «Импорт библиотеки» для извлечения zip-файла., @Brent Mesler
Добро пожаловать на «Arduino Stackexchange». Вы можете редактировать свой ответ, используя кнопку «Изменить» под ним., @Paul
Дополнительный абзац объединен в ответ, как предложил MarkU. Спасибо!, @Nick Gammon