/
Timer {FR}

Timer {FR}

Objectif

Retarder une tâche ou la faire exécuter en boucle sans bloquer le CRCduino.

Quand l’utiliser

Lorsque vous souhaitez exécuter une portion de code après x ms ou à chaque x ms.

Où l’utiliser

À l’intérieur de la fonction loop, après avoir déclaré une variable du bon type.

Le « timer » doit se souvenir du temps et il faut donc typiquement le déclarer à l’extérieur d’une fonction (variable globale).

Valeur de retour

Timer.Start() et Timer.Next() ne retournent rien. Timer.IsFinished() retourne true si le temps s’est écoulé, et false dans le cas contraire. Timer.IsWaiting() retourne true si le temps demandé ne s’est pas encore écoulé mais le « timer » a été lancé, false dans le cas contraire.

Prototypes principaux

void CrcLib::Timer::Start(unsigned long delay_ms)

Les paramètres suivants sont requis par la fonction:

  • Aucun paramètre nécessaire.

bool CrcLib::Timer::IsFinished()

Les paramètres suivants sont requis par la fonction:

  • Aucun paramètre nécessaire.

bool CrcLib::Timer::IsWaiting()

Les paramètres suivants sont requis par la fonction:

  • Aucun paramètre nécessaire.

void CrcLib::Timer::Next()

Les paramètres suivants sont requis par la fonction:

  • Aucun paramètre nécessaire.

Overloads

Cette fonction n’a pas d’overloads, elle ne peut être utilisée qu’avec le prototype principal.

Exemples

#include <CrcLib.h> CrcLib::Timer timer; void setup() { CrcLib::Initialize(); // lancer un timer avec une période de 10 ms timer.Start(10); /* Reste du code d'initialisation ... */ } void loop() { CrcLib::Update(); if (timer.IsFinished()) { // 10 ms se sont écoulées timer.Next(); // Réinitialiser le timer // Ce que vous voulez faire chaque 10 ms // ... } /* Reste de la boucle principale ... */ }
#include <CrcLib.h> void setup() { CrcLib::Initialize(); /* Reste de la boucle d'initialisation ... */ } CrcLib::Timer timer; void loop() { CrcLib::Update(); bool boutonAppuye = CrcLib::ReadDigitalChannel(BUTTON::COLORS_LEFT); // Si le bouton gauche du bloc "couleurs" est appuyé // et que nous n'étions pas déjà en train d'attendre if (!timer.IsWaiting() && boutonAppuye) { // Lancer le timer avec un délais de 1000 ms (1s) timer.Start(1000); } // 1s s'est écoulée if (timer.IsFinished()) { // Ce que vous voulez faire 1s après avoir appuyé sur le bouton // ... } /* Reste de la boucle principale ... */ }

Articles reliés

Related content

PrintControllerState() {FR}
PrintControllerState() {FR}
More like this
Tutoriel 02 - Reproduire la fonction delay()
Tutoriel 02 - Reproduire la fonction delay()
More like this
MoveArcade() {FR}
MoveArcade() {FR}
Read with this
MoveTank() {FR}
Read with this
Update() {FR}
More like this