Leitura do Botão da Vespa




Introdução

Recebeu a sua Vespa e quer saber como utilizá-la? Não se preocupe, estamos aqui para te ajudar nesses primeiros passos e mostrar como utilizar as funções básicas da biblioteca desenvolvida para isso.

Neste tutorial você verá como ler o botão embutido na Vespa e como 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

In the global declarations at the beginning of the code, we only declare the constants PINO_BUTTON and PINO_LED, which store the GPIO connected to the internal Vespa button and LED.

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