Icono del sitio AranaCorp

Programa multitarea con Arduino y la biblioteca FlexiTimer2

La biblioteca Arduino FlexiTimer2 es una biblioteca que permite activar funciones a intervalos de tiempo regulares. Permite, como tal, realizar programas multitarea con microcontroladores Arduino. Este método es útil cuando se quiere hacer funcionar dos motores en paralelo de forma independiente.

Material

Descripción

La biblioteca FlexiTimer2 se basa en la biblioteca MsTimer2. Contiene un conjunto de funciones que permiten interactuar con el registro timer2 del microprocesador Arduino ATmega. Esta biblioteca, similar a una estructura con la función millis(), llama a una función cuando el intervalo de tiempo especificado ha terminado.

El interés de esta biblioteca en comparación con MsTimer2 es que es posible modificar la resolución de conteo, es decir, la frecuencia a la que se incrementa el contador.

Código

En este código, crearemos una función void onTimer, que nos permitirá cambiar el estado del LED de la placa de Arduino. Para inicializar el temporizador, utilizamos la línea

FlexiTimer2::set(500, onTimer);

Y para activarlo, el 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() {
}

N.B.: Hemos añadido una medida de tiempo transcurrido con fines ilustrativos, pero hay que tener cuidado al utilizar funciones basadas en interrupciones en funciones invocables por interrupción. Puede haber interferencias.

Resultado

Una vez iniciado el programa, el LED de la placa se enciende y se apaga cada 500ms

Fuentes

Retrouvez nos tutoriels et d’autres exemples dans notre générateur automatique de code
La Programmerie

Salir de la versión móvil