Sylvain Mahé Le site Web Retour à l'accueil Principes Partager mes idées et mes projets librement et gratuitement. Thématiques Mécatronique du système embarqué, artisanat pluridisciplinaire, bricolage commun, esthétique logicielle et matérielle, minimalisme fonctionnel, conceptualisation alternative, rédaction technique et littéraire, partage pédagogique documenté. Contact ✆ Téléphone : 06.45.49.96.98
✉ E-mail : contact@sylvainmahe.site
✎ Site Web : sylvainmahe.site
Écriture de la page : Sylvain Mahé
Les délais simplifiés avec la classe Delay Créer une condition logique qui s'exécute de façon périodique n'a jamais été aussi simple à l'aide de la classe Delay. Exemple d'utilisation de la classe Delay : #include <Delay.h> int main() { Delay myDelay = Delay (1000, true); while (true) { myDelay.state(); if (myDelay.update == true) { //tâche à effectuer toutes les 1000ms } } return 0; } Dans cet exemple, un objet myDelay de type Delay est déclaré, le 1er paramètre 1000 fixe la durée du délai indiqué en millisecondes, et le 2ème paramètre true permet d'initialiser à vrai la valeur de la variable update qui va suivre. Plus loin dans la boucle, l'appel à la fonction state permet de mettre à jour la variable update périodiquement en fonction de la durée précédemment indiquée. Si vous souhaitez que la variable update soit égale à vrai après le premier appel à la fonction state dans la boucle, indiquez true (vrai) en paramètre lors de la création de l'objet myDelay, dans le cas contraire indiquez false (faux) : Le paramètre sur true aura pour effet de faire rentrer l'exécution dans la condition logique au démarrage du programme, alors qu'une valeur sur false (dans cet exemple) fera attendre 1000 millisecondes avant d'exécuter le contenu de la condition logique. Il est important de comprendre que la valeur de la variable update est un événement monostable (en opposition à un événement bistable ou astable), qui prend l'état vrai une seule fois après le passage par la fonction state, après quoi il reprendra l'état faux aux prochains passages (en attendant que la durée spécifiée est de nouveau atteinte). Faire clignoter une del périodiquement : Même si la classe Delay est vouée à une utilisation plus poussée si nous le souhaitons, une façon aisée d'apprendre à l'utiliser est de reprendre l'exemple ci-dessus pour simplement commuter une del toutes les secondes. Exemple de clignotement d'une del avec la classe Delay : #include <GpioWrite.h> #include <Delay.h> int main() { GpioWrite myLed = GpioWrite (1); Delay myDelay = Delay (1000, true); while (true) { myDelay.state(); if (myDelay.update == true) { myLed.toggle(); } } return 0; } L'exemple est de lui-même explicite, la valeur de la variable update change d'état périodiquement et permet à la del de commuter toutes les 1000 millisecondes. La valeur sur true (vrai) à la déclaration de l'objet de type Delay se chargera de commuter la del (de l'allumer) dès le démarrage du programme, c'est-à-dire au premier tour de la boucle while. D'autres fonctions existent si besoin est, notamment duration qui permet d'indiquer une durée différente que celle initialisée lors de la déclaration de l'objet (utile en cours de programme si vous souhaitez changer la périodicité), et reset qui réinitialise le temps écoulé, de sorte que la durée indiquée devra de nouveau être atteinte à partir de ce moment. Références : Récapitulatif des fonctions et variables de cette classe : bool update = false; Delay (const unsigned long long DURATION, const bool NO_START_DELAY); void state(); void duration (const unsigned long long DURATION); void reset();