boa tarde, fiz um pequeno server para acionar uma bomba d'agua, ele funciona, mas a ideia seria ele acionar o pino por X minutos e aguardar X minutos, utilizando millis(), no entanto não estou conseguindo fazer a bomba ligar quando ligo a placa, ela inicialmente aguarda X minutos.
já tentei inverter o status do pino, mas não funciona, ele primeiro conta para depois executar a ação.
teria como inverter isso?
A parte do código que controla a bomba é a função executeTimer();
Desde de já agradeço
Tags:
up
Boa noite TA,
Li seu descritivo, e depois dei uma olhada no seu sketch, mas fiquei sem entender sua necessidade e sua dificuldade.
RV
Rui, desculpe não ter sido claro, mas nesse código é para retirar água de um poço que tem baixa vazão nesta época do ano e a vazão da bomba é maior que a taxa de recarga do poço, neste caso á ideia é ligar a bomba por 5 minutos ou menos, e aguardar 10 minutos.
O problema é que no meu código, a placa esta aguardando 10 minutos e ligando 5 minutos, eu já inverti algumas partes, mas não consigo fazer a bomba ligar no inicio programa, isso a campo é um problema serio saber se a bomba esta funcionando ou não sem esperar o tempo de inicio.
O programa funciona, só preciso corrigir esse detalhe.
Bom dia TA,
ontem baixei o seu code, e reduzi para ficar só a parte de controle do rele sem nada de wifi.
Ai pude ver algumas partes que precisam de atenção:
1o. voce definiu algumas variáveis tais com: bool Rele12state; e bool LED13state;
mas não as inicializou, e em seguida ao iniciar o loop(0, já faz uso delas:
digitalWrite(13, LED13state); digitalWrite(12, Rele12state);
O "estado" delas é ainda indefinido.
Depois na função "executeTimer" também faz testes com elas antes de as inicializar.
Outra coisa, você quer usar millis(), mas enquanto o valor de millis não alcança o que
definiu, ele retorna ao loop, e ao chamar novamente a função, recarrega os valores novamente.
daí começam as contagens de tempo novamente
Estudando seu code vi que você testa se o rele está ligado, if (rele == 1),
dai se ele estiver, você chama a função " executeTimer(300000, 400000); "
Depois você testa tempos e dai acende LEDs e muda " states" , daí não entendi como
você liga e desliga este rele. pois precisa que o rele precisa esteja ligado para entrar na função.
Onde está definido e qual é o port do rele do motor?
RV
TA,
escrevi um code reduzido, fazendo só as funções de intervalar qdo a variável rele
estiver em valor 1.
Ajuste ele ao seu code e acho que vai dar certo.
RV
RV, o seu exemplo funcionou perfeitamente, fiz pouquíssimas adequações, mas ficou muito bom
Muito obrigado pela ajuda
Em anexo o código como ficou
isso tudo é um mistério que funcionava rsrsrs,
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por