Конфликт библиотек DS1307 и LiquidCrystal_I2C

pal
Offline
Зарегистрирован: 06.03.2014

Имеется простенький скетч для часов RTC.

#include <Wire.h>
#include <DS1307.h>
// Init the DS1307
DS1307  rtc(A4, A5);
Time  t;

void setup()
{
  Serial.begin(9600);
 
}
 
void loop()
{
  t = rtc.getTime();
  Serial.print(t.hour); //read the hour 
  Serial.print(":");
  Serial.print(t.min);//read minutes 
  Serial.print(":");
  Serial.print(t.sec);//read seconds
  Serial.print("      ");   
  Serial.print(t.date);//read date
  Serial.print("/");
  Serial.print(t.mon);//read month
  Serial.print("/");
  Serial.print(t.year); //read year
  Serial.println();
 
  delay(1000);
 
}

В порядке эксперимента решил serial заменить на LCD 1602 с подключением по I2C.

#include <Wire.h>
#include <DS1307.h>
#include <LiquidCrystal_I2C.h>
DS1307  rtc(A4, A5);                 // Init the DS1307
Time  t;
LiquidCrystal_I2C lcd(0x27,16,2);   // Задаем адрес и размерность дисплея. 
void setup()
{
  Serial.begin(9600);
}
void loop()
{
  lcd.init();            // Инициализация lcd             
  lcd.backlight();       // Включаем подсветку
  t = rtc.getTime();
  lcd.print(t.hour);     //read the hour
  lcd.print(":");
  lcd.print(t.min);      //read minutes 
  lcd.print(":");
  lcd.print(t.sec);     //read seconds
  lcd.setCursor(0, 1);  // Устанавливаем курсор в начало 2 строки
  lcd.print(t.date);    //read date
  lcd.print("/");
  lcd.print(t.mon);     //read month
  lcd.print("/");
  lcd.print(t.year);    //read year
  lcd.println();
  delay(1000);
}

при компиляции выдаёт:

LiquidCrystal_I2C\LiquidCrystal_I2C.cpp: In member function 'void LiquidCrystal_I2C::expanderWrite(uint8_t)':
 
LiquidCrystal_I2C\LiquidCrystal_I2C.cpp:261: error: 'class TwoWire' has no member named 'write'
 
Библиотека часов нестандартная, но и со стандартными та же фигня...
bwn
Offline
Зарегистрирован: 25.08.2014

IDE поменяйте. Или библиотеку.

pal
Offline
Зарегистрирован: 06.03.2014

ide 105. RTC и LiquidCrystal_I2C пробовал разные...

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

Попробуйте на 0023. А по нормальному посмотрите здесь на форуме как этот косяк исправить. Он появился после 1.0

pal
Offline
Зарегистрирован: 06.03.2014

Скомпилировалось. Но на дисплее теперь вместо времени символы "U" и год 2165...

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

pal пишет:

Скомпилировалось. Но на дисплее теперь вместо времени символы "U" и год 2165...

Я не знаю, что у вас за библиотека, но часы должны быть инициированы и запущены. В вавшем коде этих операций не видно. А кстати с первым кодом часы шли?

pal
Offline
Зарегистрирован: 06.03.2014

Часы шли и идут с любым кодом. Заливал другие варианты скетчей часов с другими библиотеками (RTClib.h) - нормуль. В аквакотроллере работает именно эта библиотека, но там нет wire.h.

К сожалению выяснил, что эта библиотека не будет работать с wire.h (Вот здесь её описание http://nnm.me/blogs/pencraft/arduino-i-chasy-na-mikrosheme-dallas-ds1307/ )

 

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

Так подключите часы как они должны быть включены от рождения - по протоколу I2C, а не извращайтесь с непонятными библиотеками. Там даже их включение рекомендовано на цифровые пины. Что в итоге ждать от этой связки, ток автор библиотеки знает.

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

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

pal
Offline
Зарегистрирован: 06.03.2014

Уже переделал на другую библиотеку

nikolaki
nikolaki аватар
Offline
Зарегистрирован: 14.02.2013

 

сделайте инициализацию и подсветку в setup.И где-то на форуме писали про задержку при инициализации. ИМХО. Не проверял

 

Maverik
Offline
Зарегистрирован: 12.09.2012

bwn пишет:

Скомпилировалось. Но на дисплее теперь вместо времени символы "U" и год 2165...

там же в комментах к библиотеке часов сказано, что если неправильно пины сконфигурировать, может возникнуть пространственно-временное искажение и нельзя рядом находиться т.к. можно временно в будущее попасть )))

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

Maverik пишет:

bwn пишет:

Скомпилировалось. Но на дисплее теперь вместо времени символы "U" и год 2165...

там же в комментах к библиотеке часов сказано, что если неправильно пины сконфигурировать, может возникнуть пространственно-временное искажение и нельзя рядом находиться т.к. можно временно в будущее попасть )))

Ну зачем же мне чужие слова приписывать?)))

scott2to
Offline
Зарегистрирован: 04.04.2015

Переделал на другую библиотеку - молодец! Написать как решил проблему сложно что ли? Печаль...

pal
Offline
Зарегистрирован: 06.03.2014

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

scott2to
Offline
Зарегистрирован: 04.04.2015

Да я не настаиваю. Если человек не понимает как работают сообщества, то что уж тут поделать. Только надеяться что со временем все будет.