Socorro!! Contador continuo com acionamento intermitente e saidas diferenciadas

Boa tarde a todos os garagistas,

agradeço desde já a boa vontade e paciência de todos em compartilhar conhecimentos e ajudar em nossa dificuldade.

Preciso montar um contador que realize a seguinte função:

Contagem com relação a uma base de tempo especifica, metade do tempo realize acionamento de uma variável em (ON) e outra metade em (OFF) e alcance o preset e reinicie o processo:

Ex : contagem com base de tempo em segundo ate (1000) as primeiras 500 unidade ou seja menor que 500 fique em (HIGH) e de 500 a 1000 fique em (LOW) e ao chegar a 1000 reset automaticamente e reinicie a contagem.

retornando a (HIGH) e desta forma fazer um ciclo completo de acionamento. Que posteriormente vai ser

posto dentro de um temporizador com por exemplo 1 minuto de tempo fixo.

Então esse temporizador vai fazer ciclos dentro de um temporizador principal.

Basicamente e isso eu tentei e como tenho pouco conhecimento em Arduíno não consegui.

Segue o código base que estou utilizando

Exibições: 201

Anexos

Responder esta

Respostas a este tópico

Boa tarde,

Não rodei o seu código, aparentemente está certo só faltou reinicializar o contador, para poder reinicializar o processo.

acrescente esse codigo no fim do função loop()

 if (contador == 1000)  

     contador = 0;  

Att.

Boa tarde SNL,

existe um erro de lógica no seu código.

Na linha 18 vc testa se o contador é menor que 1000. (  if (contador < 1000){   ).

se for, vc coloca o led em HIGH.

Ora na descrição vc diz:

as primeiras 500 unidade ou seja menor que 500 fique em (HIGH) " 

então o if tem que testar se é menor que 500.

E por fim um reset se for maior que 1000 .

Assim :    (  if (contador >= 1000){ contador = 0);  ).

RV

Para clarificar o código se me permite, fiz algumas alteração utilizando for, anexo.

Pelo seu código original entendo que vc deseja validar o pino habilitaState a cada iteração do contador se for isso o anexo atende, caso queira somente validar se o pino esta habilitado para toda a sequencia, mova as instruções para cima do for

  habilitaState = digitalRead(habilitaPin);    

if (habilitaState == HIGH) 

Obs. É possível otimizar o código mas dessa forma fica mais claro.

Bom dia colega Rui

Desculpe pela demora ao responder 

fiz as correções e rodei o teste  ele conta ate 500 e para, conforme a imagem abaixo.

Colegas com a orientação de vocês visualizei o erro, e realizei outra alteração,  agora o sistema está funcionando está funcionando parcialmente ele liga e desliga eu preciso agora cotar os ciclos de produção

Cada vez que o sistema for reiniciado eu necessito contar esse reinicio com ciclo de produção até um Valor pré estabelecido no programa.  Como faço isso.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço