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