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
Tags:
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.
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por