Dica de programação (comando de automatico e manual)

Estou desenvolvendo um sistema no qual um rele é acionado em horas determinada, seguindo um padrão a seguir:

RELE, 12:00, 13:00

RELE, 14:00, 18:00

RELE, 09:00, 11:00

E esses comandos podem estar tudo fora de ordem, mas seguindo o seguinte padrão:

<rele>, <hora de liga>, <hora de desliga>

ou seja cada linha informa o intervalo que esta desligado, com faço uma verificação em todas as linhas caso uma esteja ligado o estado final é ligado, caso todos desligado fica desligado. ate aqui tudo bem!

Porem para efeito de testes ou acionamento manual, foi colocado um botão para ligar ou desligar.

Ai começa o problema pois se eu mudo o estado do rele ele fica com a regra toda trocada. fica toda invertida.

Queria fazer um algoritimo que no proximo estado (da programacao) ele volte para ao normal que é o atuomatico.

Resumindo: caso eu use o comando manual que ele fique manual até o proximo automatico voltando a ordem normal que é o programado por horas.

Parece simples mas nao consegui fazer isso. :(

Exibições: 477

As respostas para este tópico estão encerradas.

Respostas a este tópico

Olá,

Sugiro que poste seu programa em um arquivo .txt anexado, ou cole no www.pastebin.com e cole o link aqui, desta forma fica mais fácil te ajudar, do contrario vai receber apenas palpites.

Abs.

O codigo é bem grande tem alguns modulos envolvidos. vou resumir em alguns exemplos:

agora = 22:00;

liga = 20:00;

deliga = 24:00;


 if((liga >= agora) && (agora <= desliga)){
        Serial.println("ligado!!!" );
}

agora = 22:00;

liga = 20:00;

deliga = 24:00;


 if((liga >= agora) && (agora <= desliga)){
        Serial.println("Ligado pelo automatico" );

liga_rele = 1;
}

 if (digitalRead(botao1)// verifica se foi pressionado o numero 1 dos controles   
        estadoRele1 = ~estadoRele1;
        digitalWrite(Rele1,estadoRele1); 

Ou seja o automatico esta acionado, Mas se eu acionar o botao do controle ele vai desligar o rele, que deve ficar desligado até a hora que o automático realize outra função. O codigo é bem grande, envolve outras programções mas resumindo seria isso. o outro caso seria fora do intervalo onde o automatico desliga o rele, e vc aciona o controle, ele liga, ate que ligue novamente.

Oi TC, bom dia.

Em primeiro lugar sugiro seguir a "recomendação" do nosso amigo CK.

Não cole code na área de texto.

"Sugiro que poste seu programa em um arquivo .txt anexado, ou cole no www.pastebin.com e cole o link aqui, "

Por maior que seja seu code, ele não ocupará espaço na tela, não perderá formatação e não perderá caracteres.

Em segundo, não entendi bem sua necessidade.

Vi que você escreveu este fragmento de code para simplesmente postar, uma vez que existem diferenças 

de nome de variáveis.  " deliga = 24:00;"  e " (agora <= desliga)" .

Escrevi um pequeno code, onde uso uma função para fazer a comparação do horário.

Não sei se é esta sua dificuldade.

Sugiro postar o code completo (ANEXADO), e estender um pouco mais a explicação da dificuldade.

Rui

Anexos

Desculpas se eu me expressei mal, mas queria apenas uma dica de programação, nao o codigo. Porque tenho o controle automatico e o manual, quando o manual é acionado, como retornarei para o automatico? A questão do horario eu convertir tudo pra string. Eu vou ler alguns artigo achei sobre automatico e manual acredito que possa tirar alguma ideia de la. No mais agradeço a ajuda de voces!

TC

Boa sorte!

Abs.

CK

Cheguei uma solução, ao procurar "arduino automatico e manual" vi que muitos projetos de irrigação, de resfriamento de frango, alguns tem a interrupção do automático, para ser enviado os comandos manuais. Vou fazer dessa maneira, pois assim o projeto vai andar mais. E quem sabe um dia manter os dois de forma a não interferir um no outro. 

RSS

Destaques

Registre-se no
Lab de Garagem
Clicando aqui

Convide um
amigo para fazer
parte

curso gratis de arduino

© 2019   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço