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

