O quadro Arduino Due permite multitarefas utilizando a biblioteca do Scheduler. Baseia-se num microcontrolador ARM Cortex-M3 em 32 Bits com 84MHz. É portanto muito mais poderoso do que um Arduino UNO. Estas características permitem-lhe criar algoritmos multitarefa mais poderosos. Veremos aqui como utilizar a biblioteca do Scheduler que permite utilizar várias funções de loop().
Material
- Arduino Due
- Cabo USB A Macho/Micro B Macho
Descrição
A biblioteca Scheduler permite a um microcontrolador baseado em SAM, tal como o Arduino Due ou o Arduino Zero, realizar múltiplas acções sem se interromper a si próprio. A biblioteca permite organizar as tarefas de modo a que o microprocessador mude de um para outro sem ter de criar um temporizador dedicado. Tal como outros microcontroladores Arduino, o Arduino Due não permite uma verdadeira multi-tarefa mas, graças ao seu ritmo de relógio, dá a impressão de executar tarefas em paralelo.
Código
Neste código, iremos criar várias funções de loop que funcionarão em paralelo. Para inicializar cada função de laço, usamos o comando startLoop:
Scheduler.startLoop(loop2);
Scheduler.startLoop(loop3);
Vale a pena notar que a função delay() permite que outra tarefa seja activada. Se não houver função de atraso numa das funções de laço, então a função yield() deve ser utilizada para passar a mão para a tarefa seguinte.
#include <Scheduler.h>
int counter=0;
void setup() {
Serial.begin(9600);
Scheduler.startLoop(loop2);
Scheduler.startLoop(loop3);
}
void loop() {
Serial.println(F(" Action 1 LED : HIGH"));
digitalWrite(13, HIGH);
delay(500);
Serial.println(F(" Action 1 LED : LOW"));
digitalWrite(13, LOW);
delay(500);
}
void loop2() {
if(counter<25) {
counter++;
Serial.print(F(" Action 2 counter : "));Serial.println(counter);
}
delay(100);
}
void loop3() {
if(counter>=25){
for(counter;counter>=0;counter--){
Serial.print(F(" Action 3 Reset counter : "));Serial.println(counter);
}
}
yield();
}
O Arduino Due e a biblioteca permitem-nos simplesmente criar funções que funcionarão em paralelo e que não requerem uma gestão adicional de programação de tarefas em tempo real, tais como a criação de temporizadores.
Resultado
Uma vez iniciado o programa, é possível ver as tarefas a decorrer de forma ordenada.

Uma vez que este código esteja funcional, pode modificá-lo de acordo com as suas necessidades. A biblioteca Scheduler permite, por exemplo, atribuir uma função de loop à gestão de sensores, motores ou mesmo à comunicação em série.
Fontes
Retrouvez nos tutoriels et d’autres exemples dans notre générateur automatique de code
La Programmerie