Led Class - Part 3 | PushButton Class - Part 2
Introduction
Après "Led Class - Part 1", "Led Class - Part 2", voici enfin le dernier volet de cet article.
Cette fois-ci, j'ai transformé le code de LedTools.h pour en faire une vraie classe nommée MonoLed (pour Monochrome Led).
Il n'est pas exclus que je complète un jour ce code pour ajouter de nouvelles fonctionnalités voire même une classe RGBLed :-) .
Modifications de fonctions
Quelques fonctions décrites dans "Led Class - Part 1" ont été renommées pour permettre une plus grande lisibilité du code.
Le corps du programme de démo (disponible ci-dessous) est d'une grande lisibilité et ne nécessite pas de longue explications.
Documentation des fonctions
Le fonctionnement de toutes les fonctions/méthodes est clairement décrites dans les commentaires des fichier h et cpp.
La classe PushButton
Vous noterez aussi au passage que le code de ButtonTools.h contient maintenant une classe, elle même l'aboutissement du précédent article "PushButton Class - Part 1".
Les fichier ButtonTools.h et ButtonTools.cpp (disponibles ci-dessous) contiennent les descriptions des fonctions/méthodes dans les différents commentaires.
Démonstration
Le petit programme de démonstration suivant illustre l'utilité des deux classes PushButton et MonoLed telles qu'elles seront utilisées dans le projet ArduinoCar.
ainsi que le résultat du log dans le moniteur (moins visible dans la vidéo).
Le sigle "[X]" signifie "état activé" tandis que le sigle "[ ]" signifie "état désactivé".
Code Source de la démo
Fichier Source: ArduinoCar_Test_BtnInterface_Class.zip
Constructeurs spécifiques
Les classes MonoLed et PushButton disposent toutes deux de constructeurs spécifiques permettant l'initialisation des paramètres principaux sans faire appel aux méthode Attach().
Cela réduit sensiblement le nombre de lignes nécessaires à l'initialisation.
Après "Led Class - Part 1", "Led Class - Part 2", voici enfin le dernier volet de cet article.
Cette fois-ci, j'ai transformé le code de LedTools.h pour en faire une vraie classe nommée MonoLed (pour Monochrome Led).
Il n'est pas exclus que je complète un jour ce code pour ajouter de nouvelles fonctionnalités voire même une classe RGBLed :-) .
Modifications de fonctions
Quelques fonctions décrites dans "Led Class - Part 1" ont été renommées pour permettre une plus grande lisibilité du code.
Le corps du programme de démo (disponible ci-dessous) est d'une grande lisibilité et ne nécessite pas de longue explications.
Documentation des fonctions
Le fonctionnement de toutes les fonctions/méthodes est clairement décrites dans les commentaires des fichier h et cpp.
La classe PushButton
Vous noterez aussi au passage que le code de ButtonTools.h contient maintenant une classe, elle même l'aboutissement du précédent article "PushButton Class - Part 1".
Les fichier ButtonTools.h et ButtonTools.cpp (disponibles ci-dessous) contiennent les descriptions des fonctions/méthodes dans les différents commentaires.
Démonstration
Le petit programme de démonstration suivant illustre l'utilité des deux classes PushButton et MonoLed telles qu'elles seront utilisées dans le projet ArduinoCar.
- Un bouton Start commande l'état startState.
Un second bouton Debug commande l'état debugState. - Lorsque startState est vrai, la led est allumée (pour signaler le fonctionnement du programme).
- Si debugState est faux, la led est allumée en mode fixe.
Par contre, si debugState est vrai, la led clignote (pour signaler un fonctionnement en mode "debug").
ainsi que le résultat du log dans le moniteur (moins visible dans la vidéo).
Le sigle "[X]" signifie "état activé" tandis que le sigle "[ ]" signifie "état désactivé".
----------------------------- Started [X] Debug [ ] ----------------------------- Started [X] Debug [X] ----------------------------- Started [X] Debug [ ] ----------------------------- Started [X] Debug [X] ----------------------------- Started [ ] Debug [X] ----------------------------- Started [ ] Debug [ ] ----------------------------- Started [ ] Debug [X] ----------------------------- Started [X] Debug [X] ----------------------------- Started [ ] Debug [X] ----------------------------- Started [ ] Debug [ ] ----------------------------- Started [X] Debug [ ] ----------------------------- Started [ ] Debug [ ]
Code Source de la démo
Fichier Source: ArduinoCar_Test_BtnInterface_Class.zip
// ========================================================== // MAIN PROGRAM // ========================================================== int pinStart = 7; // Start/Stop - Brun int pinDebug = 8; // Debug Switch - Orange int pinLed = 9; // State Led PushButton btnStart; PushButton btnDebug; MonoLed ledYellow; boolean debugState = false; // Debug Mode activated boolean startState = false; // Start/Stop mode void setup() { Serial.begin( 9600 ); // Boutons btnStart.Attach( pinStart ); btnDebug.Attach( pinDebug ); //-- Declare a FIXED LIGHTNING led ---------- ledYellow.Attach( pinLed, LED_FIXED ); //-- Declare a BLINKING led ----------------- //ledYellow.Attach( pinLed, LED_BLINK ); ledYellow.SetBlinkInterval( 300 ); // Change the default blink interval } void loop(){ // Update all the button statistics btnStart.Update(); btnDebug.Update(); // Update the led ledYellow.Update(); // Wait the the user press the button "btn" to send the // resume of operation over the serial port boolean bChanged = false; // When the btn is pressed (read once only) if( btnStart.HasPressed() ) { startState = !(startState); bChanged = true; } if( btnDebug.HasPressedMany() ){ debugState = !(debugState); bChanged = true; } // Afficher un changement d'état if( bChanged ){ Serial.println( " -----------------------------" ); if( startState ) Serial.println( "Started [X]" ); else Serial.println( "Started [ ]" ); if( debugState ) Serial.println( "Debug [X]" ); else Serial.println( "Debug [ ]" ); bChanged = false; } // Make the led ON when startState = true ledYellow.Turn( startState ); // Change display type to LED_BLINK when debugState = true if( debugState ) ledYellow.ChangeDisplayType(LED_BLINK); else ledYellow.ChangeDisplayType(LED_FIXED); }
Constructeurs spécifiques
Les classes MonoLed et PushButton disposent toutes deux de constructeurs spécifiques permettant l'initialisation des paramètres principaux sans faire appel aux méthode Attach().
Cela réduit sensiblement le nombre de lignes nécessaires à l'initialisation.
// ========================================================== // MAIN PROGRAM // ========================================================== int pinStart = 7; // Start/Stop - Brun int pinDebug = 8; // Debug Switch - Orange int pinLed = 9; // State Led PushButton btnStart( pinStart ); PushButton btnDebug( pinDebug ); MonoLed ledYellow( pinLed, LED_FIXED ); boolean debugState = false; // Debug Mode activated boolean startState = false; // Start/Stop mode void setup() { Serial.begin( 9600 ); ledYellow.SetBlinkInterval( 300 ); // Change the default blink interval }
Écrire un commentaire