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.
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.
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.