boa tarde amigos alguém para me ajudar , instalei um leitor de rfid com relógio para abrir o portão ate ai tudo certo esta abrindo e lendo as tags e gravando o serial de entrada e saída ,mais estou com um probleminha quando 5 pessoa passa na mesma hora para registrar a entrada ,a trava aciona as cinco vez , gostaria de passar o  1 cartão para acionar o rele e o rele aguardar uns 20 segundo para ser acionado de novo , ate as outras pessoa passar ,como fazer isso alguém pra me da uma luz? obrigada

Exibições: 454

Responder esta

Respostas a este tópico

void estadoreley()
{
estadorelay = !estadorelay;
if (Flag1 == 0){
digitalWrite(relay, LOW);
delay(800);
digitalWrite(relay, HIGH);
Flag1 = 1;
}
}

consegui só dessa forma ,passa o 1 cartão abri o portão e os demais não abri só fica registrado no serial minutor ,gostaria que ele ficasse um tempo parado e depois voltasse a abrir novamente, tentei um delay mais não funcionou ,delay para o sistema todo ,gostaria que parasse só o rele ,e deixar o sistema normal para registrar as tags ..

você pode usar a função millis() ou o timer() e marcar uma flag, para manter a a flag (com o pino do rele) ativo durante um determinado tempo, pois usando delay() ele para todo o sistema durante o tempo e não funciona a serial ate que o delay termine.

boa tarde Charles, e isso ai que esta acontecendo com a aplicação do delay, função millis eu não sei ainda rs ..faz um exemplo para mim ver como ficaria por favor ....

obrigada Charles pela dica ,fiz dessa forma deu certo ,o rele pulsa de 30 em 30 segundos e registra as entradas das tags normal ...Valeuu

unsigned long currentMillis = millis();

if (currentMillis - previousMillis > redLedInterval) {
previousMillis = currentMillis;

if (estadorelay == HIGH)
{
digitalWrite(relay, LOW);
estadorelay = LOW;
delay(800);
digitalWrite(relay, HIGH);
estadorelay = HIGH;

 

É isso ai mesmo rsrs, vc pode "traduzir" as varaveis "currentMillis  previousMillis redLedInterval" para um melhor entendimento seu, a função millis() não tem muito segredo, ela é somente um "cronometro" que inicia quando vc liga o arduino e fica incrementando a cada milisegundo, como se fosse um reloginho que inicia do 0 a cada vez que vc liga o arduino, da pra fazer muita coisa.

Uma dica é vc estudar sobre os timers (0, 1 e 2) do arduino, vc vai conseguir fazer funções mais complexas e ate mesmo mais fáceis e controlando coisas com tempos mais precisos.

Valeu brigaduu..

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço