#1 2018-02-01 15:34:08

zorg807
Участник
Зарегистрирован: 2018-02-01
Сообщений: 8

DS1302 + Реле

Кто нибудь может помочь со скетчем
Привести в нормальный вид 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);
            }
      }
}

Редактировался zorg807 (2018-02-01 15:54:23)

#2 2018-02-01 16:06:50

Selen
Участник
Зарегистрирован: 2017-01-02
Сообщений: 71

Re: DS1302 + Реле

а что вы хотите сделать?
посмотрите здесь человек для аквариума делал. уже все готовое

ARDUINO-dlya-avtomatizatsii-akvariuma

#3 2018-02-01 16:25:13

zorg807
Участник
Зарегистрирован: 2018-02-01
Сообщений: 8

Re: DS1302 + Реле

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

#4 2018-02-01 18:10:46

zorg807
Участник
Зарегистрирован: 2018-02-01
Сообщений: 8

Re: DS1302 + Реле

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

у меня дс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 секунд выключать светодиод

#5 2018-02-01 20:42:40

Selen
Участник
Зарегистрирован: 2017-01-02
Сообщений: 71

Re: DS1302 + Реле

я не пойму что вы хотите с аквариумом сделать. Освещение? Нагрев воды?

вобщем я палагаю что освещение. я дал вам ссылку на готовый пример, там 2 реле и диспей - удалите все что не нужно. А что вам мешает использовать ваш дс1302  с библиотекой RTClib

а в вашем скетче ,тут даже не понятно что вы делаете . где запрос времени от датчика?
и кроме того я бы вам посоветовал использовать юникс время

long utime = myTime.unixtime(); 
utime %= 86400; 

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

"a" это что у вас?
вы в if не сравниваете, а присваеваете значение переменной.
= присвоить
== сравнить.

Редактировался Selen (2018-02-01 20:47:10)

#6 2018-02-02 18:40:01

zorg807
Участник
Зарегистрирован: 2018-02-01
Сообщений: 8

Re: DS1302 + Реле

Спасибо. Я уже исправил все ошибки))

Быстрое сообщение

Введите сообщение и нажмите Отправить

Подвал раздела