Arduino Uno - Relé acionado - Gerar apenas um pulso

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

Exibições: 1261

Responder esta

Respostas a este tópico

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 = 

  • RISING to trigger when the pin goes from low to high,

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.

Canal QUI

Abs.

CK

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço