Controlando Intervalos de Tempo com Arduino

Veja neste rápido tutorial como controlar intervalos de tempo de forma simples com Arduino, executando tarefas de forma “paralela” sem interromper o processamento .


É muito comum em projetos com Arduino a necessidade de realizarmos certas tarefas em intervalos específicos ao mesmo tempo que executamos  outras operações.
Por exemplo: Ler um sensor ou escrever um texto no LCD enquanto fazemos piscar um LED.

No entanto, sabemos que a plataforma Arduino não é boa nesse quesito pois não suporta o uso de  threads. Dessa forma lançamos mão de artifícios usando a função millis ou então apelamos para o uso de  interrupções.

A solução usando o millis funciona bem mas não é a ideal devido às conhecidas limitações desse comando, além de  deixar o seu código  pouco legível com muitas variáveis e controles.
Felizmente existem algumas bibliotecas que encapsulam em classes toda essa complexidade, oferecendo uma interface simples de ser utilizada. É o que vamos ver neste tutorial, deixando  o conceito de interrupções para uma próxima oportunidade.

O projeto

Para os nossos testes, vamos realizar a seguinte experiência:

  • Três LEDS  (R – G – Y) ligados ao Arduino;
  • O led verde vai piscar a cada 2 segundos, o amarelo a cada 4 segundos e o vermelho a cada 10 segundos;
  • A mesmo tempo, ou seja, de forma “paralela”, vamos fazer uma contagem regressiva recursiva de 10 até 1 no monitor serial.

Material necessário

  • Placa Arduino, ESP*, Attiny* ou qualquer outra compatível com a plataforma Arduino;
  • 3 LEDS de cores variadas;
  • 3 resistores 220 Ohms.

Software Necessário

Timing Library

Essa biblioteca permite, de forma transparente e simplificada, estabelecer intervalos de tempos para realização de tarefas  sem poluir muito seu código.  Ela utiliza o millis para seus cálculos e possui apenas dois métodos:

  • begin → Inicializa o timer.
  • onTimeout → Testa se o intervalo especificado foi atingido. Opcionalmente pode-se indicar uma função para ser executada.

Esquema de montagem

Arduino - Controlando Intervalos de Tempo
Arduino – Controlando Intervalos de Tempo

Vídeo demonstração

O Sketch

Outras alternativas

  • ArduinoThread – Simula ao uso de Threads permitindo “esquedular” tarefas com tempos variáveis entre elas;
  • Timing Libraries – Uma lista de bibliotecas com o tema “Controle de Tempo”;
  • SimpleTimer – Uma das primeiras libs nesse sentido.
  • ElapsedMillis – Esta lib usa uma técnica interessante: Cria um tipo de variável que incrementa automaticamente. Dessa forma é só compará-la com o intervalo desejado. Dica do amigo Rui Viana do Laboratório de Garagem

Referências

Conclusão

A biblioteca que analisamos é muito simples e apenas encapsula em uma classe o que já vimos em vários sites por aí . No entanto, sua vantagem é o pouco espaço em memória utilizado e a facilidade de uso.

Espero ter sido útil.
Até a próxima…

 

2 thoughts on “Controlando Intervalos de Tempo com Arduino”

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *