Site icon AranaCorp

Programa multitarefa com o Arduino e a biblioteca FlexiTimer2

0
(0)

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

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

How useful was this post?

Click on a star to rate it!

Average rating 0 / 5. Vote count: 0

No votes so far! Be the first to rate this post.

Exit mobile version