Проблема при работе с библиотекой DS1302.h

Room Astronaut
Offline
Зарегистрирован: 06.01.2018

Я делаю будильник с помощью часов реального времени на микросхеме DS1302 используя билиотеку DS1302.h, мне нужно узнать день недели и время, и если они совпадают с задаными то запустить будильник, только вот день недели всегда почему-то отображается как еденица, то есть понедельник, снизу приведён кусок кода. Помогите пожалуйста. 

#include <DS1302.h>
DS1302 rtc(8, 7, 6);
Time t;
int dow1 = 5;
int hour1 = 21;
int min1 = 34;

int dow2 = 5;
int hour2 = 13;
int min2 = 5;

int dow3 = 5;
int hour3 = 13;
int min3 = 5;

int dow4 = 5;
int hour4 = 13;
int min4 = 5;

int dow5 = 1;
int hour5 = 19;
int min5 = 47;

void setup()
{
  rtc.halt(false);
  Serial.begin(9600);            

   //rtc.setTime(21, 24, 30); 
   //rtc.setDate(20, 4, 2018); 
}
void loop() {

    if (millis() - last_time > 1000) { 
      last_time = millis();    
      Serial.println(rtc.getTimeStr());
      Serial.println(t.dow);
    }
  

  
  t = rtc.getTime();
  if(t.dow == dow1 && t.hour == hour1 && min1==t.min || t.dow == dow2 && t.hour == hour2 && min2==t.min || t.dow == dow3 && t.hour == hour3 && min3==t.min || t.dow == dow4 && t.hour == hour4 && min4==t.min || t.dow == dow5 && t.hour == hour5 && min5==t.min){

  }
}
qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

Только сейчас глядя на этот ужас

43   if(t.dow == dow1 && t.hour == hour1 && min1==t.min || t.dow == dow2 && t.hour == hour2 && min2==t.min || t.dow == dow3 && t.hour == hour3 && min3==t.min || t.dow == dow4 && t.hour == hour4 && min4==t.min || t.dow == dow5 && t.hour == hour5 && min5==t.min){
44  
45

  }

я понял,  что в class Time https://github.com/msparks/arduino-ds1302/blob/master/DS1302.h надо добавить несколько полезных методов . Например копирования и сравнения ;)))

Room Astronaut
Offline
Зарегистрирован: 06.01.2018

Это да, но проблема то до сих пор не решена(

 

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

Мне сейчас не хочется переписывать всю библиотеку. Там надо PROGMEM запрягать, что бы хранить все контрольные точки времени. Перегрузку операторов == ,>=,<= . так что это еще не скоро.

Room Astronaut
Offline
Зарегистрирован: 06.01.2018

На самом деле я новичёк, и не всё понимаю из того что вы пишете, но может вы можете мне что-то посоветовать?

Room Astronaut
Offline
Зарегистрирован: 06.01.2018

Я попробую скачать другую версию библиотеки, вдруг поможет.

Room Astronaut
Offline
Зарегистрирован: 06.01.2018

Не помогло.

sadman41
Offline
Зарегистрирован: 19.10.2016

Room Astronaut пишет:

На самом деле я новичёк, и не всё понимаю из того что вы пишете, но может вы можете мне что-то посоветовать?

А что вы можете, к примеру, посоветовать человеку, который не умеет плавать, но хочет переплыть реку?

Room Astronaut
Offline
Зарегистрирован: 06.01.2018

sadman41 пишет:

Room Astronaut пишет:

На самом деле я новичёк, и не всё понимаю из того что вы пишете, но может вы можете мне что-то посоветовать?

А что вы можете, к примеру, посоветовать человеку, который не умеет плавать, но хочет переплыть реку?

Построить плот.

Room Astronaut
Offline
Зарегистрирован: 06.01.2018

Всем спасибо за ответы, мне помогло добаввить в void setup строку 

rtc.setDOW(SATURDAY);

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Room Astronaut пишет:

Всем спасибо за ответы, мне помогло добаввить в void setup строку 

rtc.setDOW(SATURDAY);

Теперь всегда субботу показывают?