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.
Tags:
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?
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()
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por