#2 Програмування Arduino » DS1302 сбрасывает время » 2018-02-01 19:31:49

zorg807
відповідей: 4

Когда выключаю из сети или перезапускаю монитор порта скидывается время. Как исправить? Батарейка стоит.

#include <RTC.h>
#define PIN_RELAY 5
RTC time;
 
void setup() {
Serial.begin(9600);
pinMode(PIN_RELAY, OUTPUT); // Объявляем пин реле как выход
digitalWrite(PIN_RELAY, HIGH); // Выключаем реле - посылаем высокий сигнал
delay(300);
time.begin(RTC_DS1302,10,13,12); //вывод RST(10), вывод CLK(13), вывод DAT(12)
time.settime(35,10,20); // 35 сек, 10 мин, 20 час
 
}
 
void loop(){
 if(millis()%1000==0) // если прошла 1 секунда
      Serial.println(time.gettime("H:i:s")); // выводим время
     delay(1);    
 if (time.seconds==45)
    digitalWrite(PIN_RELAY, LOW);
 if (time.seconds==15)
    digitalWrite(PIN_RELAY, HIGH); 
}

#3 Re: Програмування Arduino » DS1302 + Реле » 2018-02-01 18:10:46

Не получается))

у меня дс1302 и одно реле

#include <RTC.h>
#define PIN_RELAY 5
RTC time;
int a=35;
int b=10;
int c=20;
 
void setup() {
Serial.begin(9600);
pinMode(PIN_RELAY, OUTPUT); 
digitalWrite(PIN_RELAY, HIGH); 
delay(300);
time.begin(RTC_DS1302,10,13,12); //вывод RST(10), вывод CLK(13), вывод DAT(12)
time.settime(a,b,c); // 35 сек, 10 мин, 20 час
}
 
void loop(){
 if(millis()%1000==0) // если прошла 1 секунда
      Serial.println(time.gettime("H:i:s")); // выводим время
     delay(1);
 if (a=45) 
    digitalWrite(PIN_RELAY, LOW); // в 45 секунд включать светодиод
 if (a=15) 
    digitalWrite(PIN_RELAY, HIGH); // в 15 секунд выключать светодиод  
}   

Этот пункт не выполняется

 if (a=45) 
    digitalWrite(PIN_RELAY, LOW); // в 45 секунд включать светодиод
 if (a=15) 
    digitalWrite(PIN_RELAY, HIGH); // в 15 секунд выключать светодиод

#4 Re: Програмування Arduino » DS1302 + Реле » 2018-02-01 16:25:13

Как раз для аквариума и делаю))
Спасибо большое!

#5 Re: Різне » Автоматическая подсветка для аквариума » 2018-02-01 16:24:11

Подправил, но все равно не работает


#include <RTC.h>
RTC time;

void setup() {
pinMode(3, OUTPUT);
delay(300);
Serial.begin(9600);
time.begin(RTC_DS1302,10,13,12); //вывод RST(10), вывод CLK(13), вывод DAT(12)
time.settime(35,10,20); // 35 сек, 10 мин, 20 час
}

void loop(){
String str = Serial.readString();
if(millis()%1000==0) // если прошла 1 секунда
      Serial.println(time.gettime("H:i:s")); // выводим время
     delay(1); // приостанавливаем на 1 мс, чтоб не выводить время несколько раз за 1мс     
if (str == "0,11,20") digitalWrite(3, HIGH);
if (str == "30,11,20") digitalWrite(3, LOW);

}

#6 Різне » Автоматическая подсветка для аквариума » 2018-02-01 15:53:56

zorg807
відповідей: 3

Кто нибудь может помочь со скетчем?
Привести в нормальный вид void loop

#include <RTC.h>
RTC time;
const int relPin = 3;
void setup() {
pinMode(relPin, OUTPUT);
delay(300);
Serial.begin(9600);
// инициализация модуля RTC
time.begin(RTC_DS1302,10,13,12); // вывод RST (10), вывод CLK (13), вывод DAT (12)
// запись даты и времени
time.settime(35,10,20); // 35 сек, 10 мин, 20 час, дату оставить без изменений
}
void loop(){
if(millis()%1000==0){ // если прошла 1 секунда
      Serial.println(time.gettime("d-m-Y")); // выводим время
     delay(1); // приостанавливаем на 1 мс, чтоб не выводить время несколько раз за 1мс
     if(time.settime(0,0,10)){
        digitalWrite(relPin, HIGH);
          if(time.settime(0,0,22)){ 
            digitalWrite(relPin, LOW);
            }
      }
}

#7 Програмування Arduino » DS1302 + Реле » 2018-02-01 15:34:08

zorg807
відповідей: 5

Кто нибудь может помочь со скетчем
Привести в нормальный вид void loop

#include <RTC.h>
RTC time;
const int relPin = 3;

void setup() {
pinMode(relPin, OUTPUT);
delay(300);
Serial.begin(9600);
// инициализация модуля RTC
time.begin(RTC_DS1302,10,13,12); // вывод RST (10), вывод CLK (13), вывод DAT (12)

// запись даты и времени
time.settime(35,10,20); // 35 сек, 10 мин, 20 час, дату оставить без изменений
}

void loop(){
if(millis()%1000==0){ // если прошла 1 секунда
      Serial.println(time.gettime("d-m-Y")); // выводим время
     delay(1); // приостанавливаем на 1 мс, чтоб не выводить время несколько раз за 1мс
     if(time.settime(0,0,10)){
        digitalWrite(relPin, HIGH);
          if(time.settime(0,0,22)){ 
            digitalWrite(relPin, LOW);
            }
      }
}

Підвал форуму