Bom dia amigos!

Estou colocando um servo motor para funcionar de 2 formas diferentes de acordo com a função chamada, para entrar nas funções estou utilizando um botão se estiver solto fica na função de girar automático e piscar o led em blink e se estiver pressionado entra na função de movimentar manual através de um potenciometro e pisca o led em blink.

Antes de incrementar as funções para o motor eu testei para ver se a lógica do botão pressionado e solto estava legal, e funcionou bem, dentro das funções eu coloquei apenas para  ligar o led se pressionado e desligar se não estivesse pressionado e funcionou legal, mas quando modifiquei a estrutura das funçoes com os comandos para o servo começou a dar uns probleminhas, o botão tem hora que funciona e hora que não funciona, quando funciona e entra na função para mover o servo os movimentos do servo não estão sincronizados com o movimento do potenciometro. 

lab.ino

Exibições: 117

Anexos

Responder esta

Respostas a este tópico

Olá Argel!

Isso parece problema mesmo de bounce do botão. Vi que você colocou um delay() para evitar o bounce, mas, muitas vezes não funciona dessa forma.

Algumas perguntas:

- Você colocou um resistor PULLUP junto ao botão? Outra forma é fazer via software: pinMode(botao,INPUT_PULLUP);

- Esse botão é um push button? No seu caso, não seria melhor usar um botão com trava, ou seja, quando pressiona ele trava pressionado?

Oi José! Não precisei colocar resistor porque estou usando um módulo push button igual a esse link , será que trocando o tipo do botão resolve? vou tentar. 

Ou talvez eu coloque 2 push button um para cada função ai acho que não vai ter problema oque acha?

Argel, se você quer executar uma função enquanto o botão estiver pressionado, tenta modificar esse trecho de código:

if(estadoBotao == 1)

{

delay(20);

while (digitalRead(botao) == HIGH) {apertado();}

}

Testa aí. Ele deve executar enquanto o botão estiver pressionado...

Obs: Eu acho que você inverteu os comentários das funções apertado() e solto()

RSS

Destaques

Registre-se no
Lab de Garagem
Clicando aqui

Convide um
amigo para fazer
parte

curso gratis de arduino

© 2018   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço