Ir ao conteúdo

Posts recomendados

Postado

Boa noite pessoal.

Estou usando um rtc3231, uma fonte, um arduino uno e um relé para poder ligar e desligar uma lâmpada no tempo predeterminado em uma loja, ele funciona no horário certo, porém tenho que adicionar o dia da semana, pois ela só vai funcionar de segunda a sábado de 8:00 as 18:00 mas tem que ficar desligada no domingo, e é essa variável de dia da semana que eu não consigo criar uma const int e colocar junto com hora e minuto no comando if.

Alguém poderia me ajudar?

/Inclusao das bibliotecas

#include <Wire.h>

#include "RTClib.h"

int Relay = 3;



const int OnHour = 8;

const int OnMin = 00;



const int OffHour = 18;

const int OffMin = 00;



RTC_DS3231 rtc; //Objeto rtc da classe DS3132

     

char diasDaSemana[7][12] = {"Domingo", "Segunda", "Terca", "Quarta", "Quinta", "Sexta", "sábado"}; //Dias da semana



void setup () {

  Serial.begin(57600);                          //Inicializa a comunicacao serial

  if (!rtc.begin()) {                          //Se o RTC nao for inicializado, faz

    Serial.println("RTC NAO INICIALIZADO"); //Imprime o texto

    while (1);                                 //Trava o programa

  }

  //rtc.adjust(DateTime(2019, 3, 18, 10, 53, 00)); //Ajusta o tempo do RTC para a data e hora definida pelo usuario.

  delay(100);                                      //100 Milissegundos



  pinMode(Relay, OUTPUT);

  digitalWrite(Relay,  HIGH);

}



void loop ()

{

  DateTime agora = rtc.now();            // Faz a leitura de dados de data e hora

  Serial.print("Data: ");

  Serial.print(agora.day(), DEC);        //Imprime dia

  Serial.print('/');                     //Imprime barra

  Serial.print(agora.month(), DEC);      //Imprime mes

  Serial.print('/');                     //Imprime barra

  Serial.print(agora.year(), DEC);       //Imprime ano

  Serial.print(" / Dia da semana: ");                       //Imprime texto

  Serial.print(diasDaSemana[agora.dayOfTheWeek()]);         //Imprime dia da semana

  Serial.print(" / Horas: ");                               //Imprime texto

  Serial.print(agora.hour(), DEC);                          //Imprime hora

  Serial.print(':');                                        //Imprime dois pontos

  Serial.print(agora.minute(), DEC);                        //Imprime os minutos

  Serial.print(':');                                        //Imprime dois pontos

  Serial.print(agora.second(), DEC);                        //Imprime os segundos

  Serial.println();                                         //Quebra de linha

  delay(1000);                                              //1 Segundo



 if ((agora.hour() == OnHour) && (agora.minute() == OnMin)){

    digitalWrite(Relay,LOW);

    Serial.println("LIGHT ON");

    }else

 if ((agora.hour() == OffHour) && (agora.minute() == OffMin)){

      digitalWrite(Relay,HIGH);

      Serial.println("LIGHT OFF");

    }

}

 

  • Membro VIP
Postado

Um minimalismo baseado na entrada:

8 horas atrás, Ulysses De Paulo Araujo disse:

só vai funcionar de segunda a sábado de 8:00 as 18:00 mas tem que ficar desligada no domingo

 

Que tal se comparasse o dia da semana com domingo e só faça as operações se não for ... domingo? Algo como:

if (agora.dayOfTheWeek()!=0) //domingo é zero? veja no d.s. do seu ci
{
// núcleo do programa
}
else
digitalWrite(Relay,LOW);

 

  • Curtir 2
Postado

Boa noite.

Fiz como você disse e funcionou perfeitamente, obrigado pela ajuda Isadora.

O código ficou assim, caso alguém queira copiar:

 

//Inclusao dessas duas bibliotecas

#include <Wire.h>

#include "RTClib.h"

int Relay = 3;//pino do arduino

 

const int OnHour = 8;  //hora ligar

const int OnMin = 00;  //minuto ligar

 

 

const int OffHour = 18;  //hora desligar

const int OffMin = 00;  //minuto desligar

 

 

 

 

 

     

//As linhas de codigo a seguir devem ser comentadas, ou descomentadas, de acordo com o modelo de RTC utilizado (DS1307 ou DS3132)

//RTC_DS1307 rtc; //Objeto rtc da classe DS1307

RTC_DS3231 rtc; //Objeto rtc da classe DS3132

     

char diasDaSemana[7][12] = {"Domingo", "Segunda", "Terca", "Quarta", "Quinta", "Sexta", "sábado"}; //Dias da semana em que 1 e segunda e 7 domingo

 

void setup () {

  Serial.begin(57600);                          //Inicializa a comunicacao serial

  if (!rtc.begin()) {                          //Se o RTC nao for inicializado, faz

    Serial.println("RTC NAO INICIALIZADO"); //Imprime o texto

    while (1);                                 //Trava o programa

  }

  //rtc.adjust(DateTime(F(__DATE__), F(__TIME__))); //CAPTURA A DATA E HORA EM QUE O SKETCH É COMPILADO

  //rtc.adjust(DateTime(2019, 3, 18, 10, 53, 00)); //Ajusta o tempo do RTC para a data e hora definida pelo usuario.

  delay(100);                                      //100 Milissegundos

 

  pinMode(Relay, OUTPUT);

  digitalWrite(Relay,  HIGH);

}

 

void loop ()

{

  DateTime agora = rtc.now();            // Faz a leitura de dados de data e hora

  Serial.print("Data: ");

  Serial.print(agora.day(), DEC);        //Imprime dia

  Serial.print('/');                     //Imprime barra

  Serial.print(agora.month(), DEC);      //Imprime mes

  Serial.print('/');                     //Imprime barra

  Serial.print(agora.year(), DEC);       //Imprime ano

  Serial.print(" / Dia da semana: ");                       //Imprime texto

  Serial.print(diasDaSemana[agora.dayOfTheWeek()]);         //Imprime dia da semana

  Serial.print(" / Horas: ");                               //Imprime texto

  Serial.print(agora.hour(), DEC);                          //Imprime hora

  Serial.print(':');                                        //Imprime dois pontos

  Serial.print(agora.minute(), DEC);                        //Imprime os minutos

  Serial.print(':');                                        //Imprime dois pontos

  Serial.print(agora.second(), DEC);                        //Imprime os segundos

  Serial.println();                                         //Quebra de linha

  delay(1000);                                              //1 Segundo

 

 if ((agora.dayOfTheWeek()!=7) && (agora.hour() == OnHour) && (agora.minute() == OnMin)){

    digitalWrite(Relay,LOW);

    Serial.println("LIGHT ON");

    }else

   

   

 if ((agora.dayOfTheWeek()!=7) && (agora.hour() == OffHour) && (agora.minute() == OffMin)){

      digitalWrite(Relay,HIGH);

      Serial.println("LIGHT OFF");

    }

}

 

  • Curtir 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!