Retour Suite
sylvainmahe.site LE SITE de Sylvain Mahé contact@sylvainmahe.site
Article : Sylvain Mahé contact@sylvainmahe.site Les délais simplifiés avec Delay.h 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.h. Exemple d'utilisation de Delay.h : #include "../module/1284p/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 renvoie 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 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.h 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 Delay.h : #include "../module/1284p/GpioWrite.h" #include "../module/1284p/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 variables et fonctions existent si besoin est, notamment started qui indique si un premier appel à la fonction state a été effectué, 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 en fin une fonction reset qui réinitialise à zéro le temps écoulé ainsi que repositionne à la valeur false (faux) la variable started et update. Récapitulatif des fonctions et variables de cette classe : bool started = false; 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();