ds1307 TFT 3.2" - нужна помощь

skrols71
Offline
Зарегистрирован: 14.03.2015

Всем притвет!  Проблемма у меня такая ,  при отключения питания ардуины и включения обратно , сбрасываются секунды на нули .

К примеру , у нас 10 минут  и 30 секунд 

Отключаем питание и включем  , и плучаем  10 минут  00 секнд , если дождаться 11 минут  то все запоминаеться 

и далее будет  11 минут  00 секнд  при новом включении , в течении  11 минут

Самое интересное что если я не выключая питание ардуины , отсоединяю модулю RTC  и потом в любое время подключаю  то время идет в месте с реальным временем 

так же пробовал, выключить  ардуину , отсоеденить модуль RTC  , включить  ардуину , а потом подключить модуль 

RTC  , то все окей ,работает как надо .

Вроде бы и не мало я перекопал в сети информации  примеров кода и  вариантов , но так и не нашел способ решить проблему 

Ах да я уже и по модулю прошелся паяльником  R4,R5,D1 выпаял совсем  R6 перемычка , напряжение VBATT - 3.2V

вот мой код 



#include <UTouch.h>
#include <UTFT.h> //Подключаем библиотеку UTFT
#include <DS1307.h>
extern uint8_t BigFont[];
extern uint8_t DotMatrix_M[]; //Подключаем шрифт DotMatrix_M
extern uint8_t SevenSegmentFull[]; //Подключаем шрифт SevenSeg_XXXL_Num


UTFT        myGLCD(ITDB32S, 38,39,40,41);   // Remember to change the model parameter to suit your display module!
UTouch      myTouch(6,5,4,3,2);

// DS1307:  SDA pin   -> Arduino Digital 9
//          SCL pin   -> Arduino Digital 10


DS1307  rtc(9, 10);

Time t;

void setup()
{
 // rtc.begin();
  

 pinMode(12, OUTPUT);
  
rtc.halt(false); //Запускаем часы
//rtc.writeProtect(false);
myGLCD.InitLCD(); //Инициализируем дисплей
myGLCD.fillScr(0, 0, 0); //Закрашиваем дисплей черным цветом

// The following lines can be commented out to use the values already stored in the DS1302
 // rtc.setDOW(SUNDAY);        // Set Day-of-Week to FRIDAY
  rtc.setTime(11, 35, 0);     // Set the time to 12:00:00 (24hr format)
 // rtc.setDate(14, 3, 2015);   // Set the date to August 6th, 2010

rtc.setSQWRate(SQW_RATE_1);
  rtc.enableSQW(true);
}

void loop()
{
  digitalWrite(12,HIGH);
  
  
//t = rtc.getTime();
String stringOne = rtc.getTimeStr(); 



myGLCD.setColor(255, 255, 255); //Цвет отображения
myGLCD.setFont(SevenSegmentFull); //Шрифт для отображения
myGLCD.print(stringOne.substring(0,2), 5, 10); //Отображаем часы
myGLCD.print(stringOne.substring(3,5), 110, 10); //Отображаем минуты
myGLCD.setFont(BigFont);
myGLCD.setColor(255, 255, 0); //Цвет отображения
myGLCD.print(stringOne.substring(6), 200, 10); // Вывод секунд



//delay(500);

myGLCD.setColor(255, 255, 0); //Цвет отображения
myGLCD.setFont(BigFont); //Шрифт для отображения
myGLCD.fillCircle(90, 25, 7); //Верхняя точка
myGLCD.fillCircle(90, 45, 7); //Нижняя точка


myGLCD.setColor(0, 255, 0); //Цвет отображения
myGLCD.setFont(DotMatrix_M); //Шрифт для отображения
myGLCD.print(rtc.getDateStr(), 15, 80); //Отображаем дату
}

 

skrols71
Offline
Зарегистрирован: 14.03.2015

лишнее стер  после эксперементов , в таком виде он у меня работает сейчас


#include <UTouch.h>
#include <UTFT.h> //Подключаем библиотеку UTFT
#include <DS1307.h>
extern uint8_t BigFont[];
extern uint8_t DotMatrix_M[]; //Подключаем шрифт DotMatrix_M
extern uint8_t SevenSegmentFull[]; //Подключаем шрифт SevenSeg_XXXL_Num


UTFT        myGLCD(ITDB32S, 38,39,40,41);   // Remember to change the model parameter to suit your display module!
UTouch      myTouch(6,5,4,3,2);

// DS1307:  SDA pin   -> Arduino Digital 9
//          SCL pin   -> Arduino Digital 10


DS1307  rtc(9, 10);

Time t;

void setup()
{
 // rtc.begin();
  

 pinMode(12, OUTPUT);
  
rtc.halt(false); //Запускаем часы
myGLCD.InitLCD(); //Инициализируем дисплей
myGLCD.fillScr(0, 0, 0); //Закрашиваем дисплей черным цветом

 // The following lines can be commented out to use the values already stored in the DS1302
 // rtc.setDOW(SUNDAY);        // Set Day-of-Week to FRIDAY
 //rtc.setTime(11, 35, 0);     // Set the time to 12:00:00 (24hr format)
 // rtc.setDate(14, 3, 2015);   // Set the date to August 6th, 2010


}

void loop()
{
  digitalWrite(12,HIGH);
  
  
t = rtc.getTime();
String stringOne = rtc.getTimeStr(); 



myGLCD.setColor(255, 255, 255); //Цвет отображения
myGLCD.setFont(SevenSegmentFull); //Шрифт для отображения
myGLCD.print(stringOne.substring(0,2), 5, 10); //Отображаем часы
myGLCD.print(stringOne.substring(3,5), 110, 10); //Отображаем минуты
myGLCD.setFont(BigFont);
myGLCD.setColor(255, 255, 0); //Цвет отображения
myGLCD.print(stringOne.substring(6), 200, 10); // Вывод секунд



//delay(500);

myGLCD.setColor(255, 255, 0); //Цвет отображения
myGLCD.setFont(BigFont); //Шрифт для отображения
myGLCD.fillCircle(90, 25, 7); //Верхняя точка
myGLCD.fillCircle(90, 45, 7); //Нижняя точка


myGLCD.setColor(0, 255, 0); //Цвет отображения
myGLCD.setFont(DotMatrix_M); //Шрифт для отображения
myGLCD.print(rtc.getDateStr(), 15, 80); //Отображаем дату
}

 

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

Так у вас 34 строка первого кода каждый раз время при запуске устанавливала.

skrols71
Offline
Зарегистрирован: 14.03.2015

не ну так во втором варианте кода я ее закоментировал , и  увы , все тоже самое 

скидывает именно секунды 

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

А стандартный пример из библиотеки работает, с выводом через сериал? Попробуйте поставить нормальную библу, для работы с аппаратным I2C на А4,А5.