Leitura do Botão da Vespa




Introdução

Você recebeu a sua Vespa e quer saber como usá-la? Não se preocupe, estamos aqui para ajudá-lo nestes primeiros passos e para mostrar como usar as funções básicas da biblioteca desenvolvida para ela.

Neste tutorial você verá como fazer a leitura do botão embutido na Vespa e como isso pode ser aplicado na prática.

Lista de Materiais

Acionamento Direto

Como primeiro exemplo básico do uso do botão, faremos com que o LED L interno da Vespa se acenda toda vez que o botão for pressionado e apague quando o botão for solto.

Código

Para este tutorial, não usaremos a biblioteca da Vespa. Entretanto, siga os passos do tutorial Primeiros Passos com a Vespa para saber como configurar a sua IDE para programá-la.

Feito isso, carregue o código a seguir.

Entendendo o Código

Nas declarações globais do início do código, apenas declaramos as constantes PINO_BOTAO e PINO_LED, que armazenam os GPIO conectados ao botão e ao LED internos da Vespa.

Na configuração do código (função void setup()), apenas configuramos o pino conectado ao botão como uma entrada com o resistor de "pull-up" interno ativado (INPUT_PULLUP) e configuramos o pino conectado ao LED como uma saída da placa, inicialmente com o nível lógico inicial baixo ("LOW").

Já na repetição do código (função void loop()), temos a declaração da variável leitura_botao que recebe a leitura digital do pino conectado ao botão. Em seguida, verificamos se o botão foi pressionado pela condição if(leitura_botao == LOW). Quando o botão é pressionado com um resistor de "pull-up" em seu circuito, o nível lógico lido é baixo ("LOW"). Levando isso em conta, quando o botão é pressionado, a condição criada é verdadeira e o LED L é então aceso. Caso contrário, se o botão não tiver sido pressionado, a condição if criada anteriormente será falsa, então a condição else será verdadeira e o LED L será apagado.

O Que Deve Acontecer

Após carregar o código para a placa, veja que o LED L se acenderá quando o botão for pressionado e se apagará após soltar o botão, como no GIF abaixo.

Resultado Final

Acionamento Memorizado

Neste segundo exemplo, faremos com que o LED L da Vespa acenda e apague ao apertar o botão, mantendo o seu estado até que o botão seja pressionado novamente.

Código

Para isso, carregue o código a seguir na sua Vespa.

Entendendo o Código

Nas declarações globais do início do código deste projeto, além das variáveis que armazenam os pinos conectados ao botão e ao LED, também temos a declaração da variável booleana auxiliar acende, que será responsável por acender ou apagar o LED quando o botão for pressionado.

As configurações do código (função void setup()) são exatamente iguais às do projeto anterior, apenas configurando os pinos como entrada e saída.

Já na repetição do código, verificamos com o auxílio de um debounce (delay() de 30 milissegundos para filtrar ruídos) se o botão foi pressionado através da condição if (digitalRead(PINO_BOTAO) == LOW). Se o botão realmente estiver pressionado, as condições serão verdadeiras pelo debounce e a variável acende terá o seu estado lógico invertido. Ou seja, como ela é inicialmente falsa, ela será verdadeira após o primeiro pressionar do botão, e assim em diante. Feito isso, é verificado se a variável acende é verdadeira e, se for, o LED L será aceso. Se ela for falsa, o LED L será apagado. Por fim, a condição while(digitalRead(PINO_BOTAO) == LOW) vazia garante que o código não executa nada enquanto o botão estiver pressionado. Isso impede que a variável acende, e consequentemente o LED, fique mudando de estado continuamente enquanto o botão estiver pressionado.

O Que Deve Acontecer

Após carregar o código para a placa, pressione o botão e solte-o. Você verá que o LED L ficará aceso até o botão ser pressionado e solto novamente, como no GIF a seguir.

Resultado Final

Indo Além

O LED L controlado nos exemplos acima é apenas uma demonstração de consequência possível quando o botão da Vespa é pressionado, porém as possibilidade não se limitam a isso. Com este botão, é possível controlar o envio de mensagens MQTT por Wi-Fi para salvar leituras de sensores para um dashboard IoT, por exemplo, ou até mesmo inverter o giro de rotação de um motor DC que está sendo controlado pela Vespa. Enfim, as possibilidades são infinitas com uma funcionalidade tão simples da placa.

Além disso, também temos diversos outros tutoriais demonstrando todas as funcionalidades da Vespa.

Conclusão

Neste tutorial vimos como configurar e ler o GPIO conectado ao botão integrado da Vespa em exemplos simples de controle do LED L.

Avatar