Boa tarde pessoal,
eu estou quebrando a cabeça com uma situação:
Eu tenho um Alarme ECP, e sempre que o alarme está ligado, ele tem uma porta auxiliar que
habilita um Relé. -> ALARME LIGADO
Eu estou pegando a saída desse Relé, e trabalhando ele como se fosse um botão pressionado.
Só que esse Relé fica acionado enquanto o Alarme está ligado, ou seja, no void loop()
está entendendo que o botão está sendo pressionado direto/ infinitas vezes.
Como consigo considerar o Relé ligado apenas um pulso na entrada digital?
(Como se fosse um pulso apenas no botão - mesmo ele estando pressionado)?
Muito obrigado a todos,
Michel
Tags:
Boa tarde MT,
Cole um esquema do seu projeto e,
abaixo desta tela tem uma frase escrito assim: Deseja carregar arquivos?
Clique nela e anexe o arquivo contendo o seu sketch, para que possamos entender o seu projeto e
tentar ajuda-lo.
RV
Um caminho seria vc detectar a borda do sinal.
A borda acontece quando no tempo em um instante está ligado e no outro desligado.
ex, supondo botão pressionado ao GND:
loop()
{ Ligadoa=Ligado; // Ligado anterior é o estado anterior de ligado.
Ligado=digitalRead... //Ligado recebe o valor atual de ligado.
if ((Ligado==HIGH) && (Ligadoa==LOW)) {... procedimento de borda de subida (soltou o botao) }
if ((Ligado==LOW) && (Ligadoa==HIGH)) {... procedimento de borda de descida (apertou o botao) }
}
Eu usaria interrupção no Arduino, pois nunca se sabe quando o alarme será acionado.
https://www.arduino.cc/en/Reference/Interrupts
https://playground.arduino.cc/Code/Interrupts
https://www.allaboutcircuits.com/technical-articles/using-interrupt...
https://www.arduino.cc/en/Reference/AttachInterrupt
mode =
Bom dia pessoal, obrigado a todos pelas respostas, eu tentei cada dica enviada aqui, e consegui resolver da seguinte maneira:
A saída do ALARME ECP (Relé 12v) eu alimentei outro Relé com dois contatos :
1 - NA (Normal Aberto)
1 - NF (Normal Fechado)
E trabalhei esses contatos com o GND do arduino UNO R3.
Liguei o NA no pino #2 do arduino e declarei ele como um BOTÃO.
Ligueo o NF no pino#3 do arduino e declarei ele também como um BOTÃO.
Quando o Relé está ligado, eu alimento um FLAG chamado contador:
if(button1 == HIGH && contador ==0){
contador = 1;
envia_email("LIGADO");
}
if(button2 == HIGH && contador == 1){
contador = 0;
envia_email("DESLIGADO");
}
E isso funcionou bem, eu também tentei por INTERRUPÇÃO, mas acho que pela minha experiência limitada com o Arduino, não consegui implementar de uma maneira que funcionasse corretamente.
Hoje vou tentar resolver outro problema que me deparei, eu coloquei um 3.o RELÉ que trabalha com a SIRENE(12v) do Alarme ECP, quando a SIRENE(do ECP) tocar, esse RELÉ 12v que coloquei na mesa saída do ALARME será acionado( eu eu utilizei o contato NA) e eu enviarei um 3.o email:
if(button3 == HIGH){
envia_email("DISPARADO");
}
Eu utilizei o pino 1 do Arduino, mas ele não funcionou corretamente, o programa está entrando no "IF" acima diretamente -> if(button3 == HIGH) / if(button3 == LOW).
Eu verifiquei a tensão no PINO 1 do Arduino , está 0v.
Pessoal, hoje a noite quando chegar em casa , vou tentar resolver esse problema e em seguida colo o código que está trabalhando aqui.
Muito obrigado a todos e excelente dia para vocês,
Michel
Bom dia,
Uma outra forma de simplificar tudo isso seria usar um site de IoT como Cayenne por exemplo, teria acesso via internet por computador, tablet, smartphone, e poderia enviar e-mail sem muita dificuldade, mas tudo depende do proposito de sua aplicação é claro, no meu canal um vídeo existem vários videos e tutoriais sobre Cayenne e outros sites de IoT.
Abs.
CK
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por