fbpixel
Etiquetas: , ,
0
(0)

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

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.

As you found this post useful...

Follow us on social media!

We are sorry that this post was not useful for you!

Let us improve this post!

Tell us how we can improve this post?