Boa noite .

Estou com muita dificuldade para fazer a função miilis substituir o delay. Quando aciono o equipamento

ele liga um motor 1 conta 10 pulsos,  para o motor 1 e espera 10 segundos para liga o motor 2. o motor fica 1 segundo ligado, 1 segundo desligado e liga novamente.

 o problema é que tem momentos que conta os 10 segundos e outros conta valor menor ou nem conta já liga o motor 2 sem conta o tempo de 10 segundos.

segue o código.

Exibições: 311

Anexos

Responder esta

Respostas a este tópico

Boa tarde,

Não estudei todo o seu programa, mas ...

O fato de inserir no loop, o display LCD pode estar atrasando a sua contagem de tempo. Ainda inseriu um delay de 100 ms. 

Você não precisa enviar todos os comandos do display repetidamente. Envie só o campo do display que será alterado. Se precisa limpar o campo antes, envie espaços no mesmo local. 

Esta faltando parenteses aqui 

((tempo_agora - tempo_inicial) >= intervalo)

Boa tarde AS,

testa esta correção aí e conta o resultado pra gente.

RV

contador_perfeito_sem_ruido_teste.ino

funcionamento.

botão manual1: liga ´só motor tração.

botão manual2: liga ´só motor mordente.

Apertando botão automático: liga motor tração> sensor conta quantas voltas motor tração realizou> quantidades de voltas  é ==10 . > motor tração desliga . > sensor mordente identifica se motor do mordente está na posição e motor tração está desligado > conta um tempo de 2 segundos e depois liga motor mordente > motor mordente fica ligado por 1segundo e meio e desliga > liga novamente após 1 segundo > sensor mordente indetifica que motor chego na posição e desliga motor. > fim do ciclo (pronto para iniciar um novo ciclo.

obs: Meu Relé quando vai pra Low liga e fecha a saída ou seja liga motor , em HIGH  o motor está desligado. 

Desculpa , improvisei o fluxograma.

segue o Sketch com delay.

contador_perfeito_sem_ruido_teste3.ino

Boa noite AS,

testa esta versão e conta pra gente o resultado.

RV

contador_perfeito_sem_ruido_teste3b.ino

Boa noite AS,

eu escrevi um sinal errado na linha 104, por isto não estava dando certo o delay com millis().

Eu corrigi, testa esta nova versão e depois conta o resultado.

RV

contador_perfeito_sem_ruido_teste3f.ino

Obrigado RV.

A noite eu testo.

Angel,

     Não olhei seu codigo porque de cara vi uma falha,   NÃO se mistura programação usando millis()  com programação usando delay()     pois sempre da merda.

    Veja bem, se você usar millis()   faça todas as paralisações utilizando contagem de tempo por variavel, e quando essa alcançar o tempo desejado execute a ação.

    Porem, existem projetos onde o delay pode ser usado sim,  são projetos menos sensiveis, sem entradas por botão, sem timers,  só coisa basica,  pra todo o resto, tem que ser programação com millis()

     Se você quer exibir algo em um display com intervalos, ao inves de usar delay()   crie uma variavel, algo como fix_millis, e compare ela ao contador millis() assim que millis() for x tempo maior,  mande entrar em um IF que lá dentro vai zerar a variavel , e execute a ação.

   Resumindo, retire todos os delay do seu projeto, e veja o resultado.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço