Problemas para definir horário para ativar rele [RESOLVIDO]

Bom dia!

     Estou trabalhando em um projeto no qual tento usar o horário do Módulo Data Logger Shield + RTC para definir os horários de ativação de um rele.

     Para isso, usei o seguinte trecho de programação:

// Essa parte diz que a lampada ficará ligada das 6 as 18 e desligada das 18 as 6

if (((now.hour(), DEC) >= 6) && ((now.hour(), DEC) <= 18))

{

digitalWrite(rele_7, HIGH);

}

else (((now.hour(), DEC) < 6) && ((now.hour(), DEC) > 18));

{

digitalWrite(rele_7, LOW);
}

Contudo, ao chegar 18:00, o rele não foi desativado... Alguém saberia me indicar onde estou errando?

Em anexo estou enviando a programação completa, o trecho está em Void loop(). 

Muito obrigado pela atenção!

Uma boa semana a todos!

Exibições: 287

Anexos

Responder esta

Respostas a este tópico

Sua logica está errada, pois nunca será verdadeira. Como um número pode ser menor que 6 e maior que 18?

Remova a segunda condição ou coloque o operador OU

Muito obrigado! Vou testar assim que possível. Serial necessário colocar também o digitalRead nas condições?

Sim, você pode fazer chamada de função, atribuição de valor entre outras coisas.

Modifiquei o código:

if (digitalRead((now.hour(), DEC) == 6)) {

digitalWrite(rele_7, HIGH);}

else (digitalRead((now.hour(), DEC) == 18)); {

digitalWrite(rele_7, LOW);
}

Contudo, quando eu coloco o horário atual para testar, no LOW,  o rele insiste em permanecer aceso. Poderia ser a declaração de variáveis?

[RESOLVIDO]

Fui até a FCA  hoje e pedi ajuda  de dois professores do Departamento de Bioprocessos e Biotecnologia, Dr. Guilherme Targino Valente e Dr. Rafael Plana Simões. 

Ambos analisaram o que eu tinha feito e fizeram as seguintes modificações, o que resolveu problema:

// Essa parte diz que a lampada ficará ligada das 6 as 18 e desligada das 18 as 6

if ((now.hour(), DEC) >= 6 && (now.hour(), DEC) < 18) {
digitalWrite(rele_7, HIGH);
}
else {
digitalWrite(rele_7, LOW);
}

Na primeira versão (com o texto do tópico), como apontou Flávio Hernan, a lógica estava errada e também me orientou a remover a segunda condição ou usar o operador OU  " || "  .  Ele estava correto e exatamente de acordo com o que os professores fizeram. 

Fico muito agradecido pela grande ajuda e atenção!

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço