Проблема вот в чем: нашёл библиотеку для ds1307, формат отображения времени(01:01:01) и даты(01.01.2015) то что я искал. Но после секунд отображаются левые символы, это ерунда я их затирал, а вот с дисплеем I2C(A4, A5) часы работать не хотят, я их перенёс на А2, А3. На другой библиотеке всё работает на А4, А5 (arduino uno r3), но формат 1:1:1. Прикрепляю архив. Код (Text): #include <Wire.h> #include <LiquidCrystal_I2C.h> #include <DS1307.h> // Init the DS1307 DS1307 rtc(A2, A3); LiquidCrystal_I2C lcd(0x27,16,2); void setup() { lcd.init(); lcd.clear(); lcd.backlight(); } void loop() { lcd.setCursor(4, 0); lcd.println(rtc.getTimeStr()); lcd.setCursor(3, 1); lcd.print(rtc.getDateStr()); }
Используйте библиотеку "RTClib.h". PHP: #include <Wire.h> // I2C #include <LiquidCrystal_I2C.h> // LCD #include "RTClib.h" // RTC - часы реального времени void setup() { rtc.begin(); // RTC // настройка даты/календаря часов rtc.adjust(DateTime(2015, 5, 29, 13, 55, 0)); // January 21, 2014 at 3am you would call } А так же на i2c линию поставьте подтягивающие резисторы 4.7 кОм к +5 В. Правда форматы даты в этой библиотеке будет "1.1.2015", т.е. если число меньше 10, то нолик она не рисует. Но это легко исправить, простым условием: PHP: if (now.minute() < 10) // Если меньше 10 минут, то рисуем "0" перед минутами { lcd.print("0"); } lcd.print(now.minute(), DEC); // Минуты
Большое спасибо! Буду пробовать, библиотека такая есть(одна из 3), вполне удачная, у каждой разные команды. В библиотеке с 01.01 похожее условие прописано внутри.
PHP: void loop() { lcd.setCursor(4, 0); if (RTC.get(DS1307_HR,true) < 10) // Если меньше 10, то рисуем "0" перед { lcd.print("0"); } lcd.print(RTC.get(DS1307_HR,true)); //read the hour and also update all the values by pushing in true lcd.print(":"); if (RTC.get(DS1307_MIN,false) < 10) // Если меньше 10, то рисуем "0" перед минутами { lcd.print("0"); } lcd.print(RTC.get(DS1307_MIN,false));//read minutes without update (false) lcd.print(":"); if (RTC.get(DS1307_SEC,false) < 10) // Если меньше 10, то рисуем "0" перед { lcd.print("0"); } Всё получилось, написал както так!