A biblioteca Arduino FlexiTimer2 permite ativar funções a intervalos regulares de tempo. Assim, ela possibilita realizar programas multitarefa com microcontroladores Arduino. Este método é útil quando se pretende operar dois motores em paralelo de forma independente.
Material
- Arduino UNO
- Cabo USB A/ USB B
Descrição
A biblioteca FlexiTimer2 é baseada na biblioteca MsTimer2. Ela contém um conjunto de funções que permitem a interface com o registro timer2 do microprocessador ATmega do Arduino. Esta biblioteca, de uso semelhante ao de uma estrutura com a função millis(), chama uma função quando o intervalo de tempo especificado termina.
A vantagem desta biblioteca em comparação com a MsTimer2 é que permite modificar a resolução de contagem, ou seja, a frequência com a qual o contador aumenta.
Código
Neste código, vamos criar uma função de tipo void onTimer, que nos permitirá alterar o estado do LED de bordo do Arduino. Para inicializar o timer, usamos a linha:
FlexiTimer2::set(500, onTimer);
E para o ativar, o comando:
FlexiTimer2::start();
#include <FlexiTimer2.h> unsigned long elapsedTime, previousTime; void onTimer() { static boolean state = HIGH; elapsedTime=millis()-previousTime; Serial.print(F("Set LED 13 : ")); if(state){ Serial.print(F("ON")); }else{ Serial.print(F("OFF")); } Serial.print(F(" - "));Serial.print(elapsedTime);Serial.println(F("ms")); digitalWrite(13, state); state = !state; previousTime=millis(); } void setup() { Serial.begin(9600); pinMode(13, OUTPUT); FlexiTimer2::set(500, onTimer); // equivalent to FlexiTimer2::set(500, 1/1000, onTimer); FlexiTimer2::start(); } void loop() { }
Obs: Acrescentamos uma medição do tempo decorrido a título ilustrativo, mas é preciso ter cuidado ao utilizar funções baseadas em interrupções nas funções que são chamadas por interrupções. Pode haver interferência.
Resultado
Uma vez iniciado o programa, o LED integrado acende e apaga a cada 500ms.
Fontes
Retrouvez nos tutoriels et d’autres exemples dans notre générateur automatique de code
La Programmerie