Boa tarde Pessoal!

Estou com o seguinte problema:

Tenho um Led  e um botão ligado a um arduino. Ao ligar o arduino o Led deve acender e permanecer acesso (indicando que está no modo de Açao), mas a cada vez que pressionar o botão o led aceso deve passar a piscar (indicando que está no Modo de Progração) até que o botão seja pressionado novamente e volta a ficar acesso direto. Ou seja: cada vez que o botão é apertado eu mudo o Status de (PRONTO) para (PROGRAMAÇÃO) e o led indica esse status ficando aceso ou Piscando. Eu consegui criar uma função que pisca o LED usando o millis() para não deixar o arduino travado no delay, mas o problema é que quando uso a função sozinha no Void Setup() o led pisca direitinho.

Mas quando uso ela em uma condição if() no Void Loop() o lede so fica aceso e não pisca.

Agradeço se alguém poder me ajudar.

Exibições: 196

Responder esta

Respostas a este tópico

Poderia postar ou anexar a parte do código que escreveu para esta finalidade ? Ao menos a contida no loop, que é onde vc diz estar o problema.

Bom, creio que seja algo na sua implementação, pois é possível fazer com millis.

Teste usando essa função bem simples que implementei e testei aqui rapidamente... coloque-a no bloco referente a condição em que seu algoritmo está no "modo de programação". Faça as modificações que achar necessário.

/* FUNÇÃO PARA PISCAR - SEM DELAY
* PARÂMETROS:
* "led" = Número do pino do led ou variável que o represente
* "interv_ms" = Intervalo, em ms, para alternar o estado (HIGH/LOW)
*/
void piscaLed(int led, int interv_ms)
{
          if((int)(millis()/interv_ms)%2==0)
                  digitalWrite(led, HIGH);
         else
                  digitalWrite(led, LOW);
}

olá Oziel.

      A implementação do seu Sistema, é simples. Mas é preciso um mínimo conhecimento de programação para que ela seja imune a bugs e portanto funcione como vc espera.

      Aqui no LDG já implementei em alguns tópicos, algumas Máquinas de Estados, as quais resolvem facilmente o que vc está querendo fazer.

      Essencialmente, todas funcionam do mesmo jeito. Aconselho então que vc dê uma olhada nestes tópicos que listo a seguir (clique nos links para ir para os tópicos):

      -  Máquina de Estados Júnior Melo

      -  Máquina de Estados Lucas Piedra

      -  Máquina de Estados Luis Henrique

      -  Máquina de Estados Francikleber

      Você perceberá que alguns destas implementações, encaixam como uma luva para sua questão. Dê uma estudada nestas implementações (tem código anexado e simulação para o Proteus). Atente para os pontos que vc não conhece. Verá que são códigos muito simples mas que funcionam de forma sofisticada. Essa é a intenção das Máquinas de Estados. Além disso, 99% dos problemas de lógica em códigos, é resolvida facilmente com uma Máquina de Estados.

      Caso tenha alguma dúvida sobre estes tópicos, não deixe de perguntar.

      Abrçs,

      Elcids

boa noite Oziel.

        Implementei seu Sistema via uma Máquina de Estados, assim ficará mais fácil vc ver como ela funciona.

        Testei e o funcionamento está exatamente conforme suas especificações. Como a Máquina é bem simples e o código está todo comentado, vc poderá modificá-la conforme suas necessidades.

        Usei o Arduino UNO como base de testes. Veja como liguei o LED e o Botão:

        No código, você verá que é muito simples e eficiente a forma de se alterar como o Botão ou o LED são ligados, de forma que facilmente pode adequar para seu Hardware específico.

        O Diagrama de Estados da Máquina de Estados é mostrado a seguir. Ele é bem simples e praticamente dispensa explicação:

        No anexo logo no final deste post, vc encontrará o código completo, além dos arquivos para simulação no Proteus, e também está incluso o Diagrama de Estados (arquivo PDF e "Visio").

       Caso tenha alguma dúvida, não deixe de perguntar.

      Abrçs,

      Elcids

     download do código e simulação:  Maquina_Oziel_Marques_01.zip

Olá Elcids e João Vitor!

Em primeiro lugar quero parabenizar aos membros deste forum pela boa vontade e empenho em ajudar com muita clareza aos que postam suas dificuldades.

Realmente a Maquina de Estados foi a solução. Consegui implementar aqui e tudo funcionou direitinho.

Obrigado e abraço  a todos! 

RSS

Destaques

Registre-se no
Lab de Garagem
Clicando aqui

Convide um
amigo para fazer
parte

curso gratis de arduino

© 2019   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço