Botão orientado a eventos no Arduino

Às vezes, na programação padrão do Arduino (sequencial), sentimos falta de uma programação orientada a eventos. Este artigo não implementa a programação orientada a eventos no Arduino, mas conclui com um código limpo e muito fácil de entender, testar e manter.

Há três códigos para um mesmo circuito da Figura 1.

Figura 1: projeto Arduino com botão e led.

Figura 1: projeto Arduino com botão e led.

 

Primeira aproximação

Acender o led quando o botão estiver pressionado.

Raspando um pouco os bits.

 

Segunda aproximação

Acender ou apagar o led quando o botão for pressionado (on/off).

O problema com este código é ocasionado quando o tempo de pressionamento do botão é maior que o tempo do 1 (um) loop. O que ocorre: às vezes funciona, outras não. Se o tempo DOWN/UP do botão ficar dentro do loop ou em número ímpar de voltas do loop, funciona. Senão, não funciona.

Este código implementa onButtonDown/onButtonUp, lembrando que não é uma programação orientada a eventos, mas uma solução limpa e fácil de manter. Na realidade acho linda esta solução! 🙂

Sobre o Autor

Engenheiro mecânico por formação, pós graduado em Administração de Empresas pela COPPEAD-UFU, apaixonado por tecnologia desde quando tal palavra não fazia significado algum. DBA de extrema capacidade e objetividade; programador Delphi de carteirinha — Python aos finais de semana. Professor nato, já ministrou aulas em colegiais, cursinhos e na Universidade Federal de Uberlândia. Fundador da T2 Tecnologia, empresa catanduvense que atua no ramo da automação comercial. Fã do Guga, do Ayrton Senna e de uma boa conversa.

  • Andrew Santos Maia

    Olá Vitor!

    Sabe dizer se a empresa que desenvolveu o compilador do Arduino tem alguma pretensão de implementar eventos no compilador? Isso ajudaria demais e deixaria o código muito mais limpo e fácil de entender