Articles

Affichage des articles du février, 2020

Projet Réveil-Matin (partie IV) - Implémentation de la classe Clock

Image
Dans l'article précédent , l'architecture de l'application relative au projet Réveil-Matin avait été présentée, avec la définition d'une classe Clock dans un fichier Clock.h . Ce fichier doit être utilisé dans une directive #include dans le programme du projet, notamment dans le sketch Arduino pour instancier la classe Clock . Dans la définition de cette classe, plusieurs méthodes ont été déclarée pour organiser le fonctionnement de l'horloge. L'objet de cet article est de présenter le code de ces méthodes, rassemblé dans un fichier Clock.cpp . Interface publique de la classe Clock Pour pouvoir être utilisée dans un projet Arduino, la classe Clock doit au moins exposer à l'extérieur un constructeur pour pouvoir instancier la classe et les méthodes begin() et loop() à utiliser respectivement dans les fonctions setup() et loop() du sketch, comme cela a été présenté dans l'article précédent . Constructeur de la classe Clock Clock::Clock(Clo

Projet Réveil-Matin (partie III) - Architecture de l'application (classe Clock)

Image
Dans des articles précédents, il avait été présenté un projet de réalisation d'un réveil-matin sur Arduino. Le premier article présentait le cahier des charges de ce projet ainsi que le principe de fonctionnement de celui-ci sous la forme d'automate. Un second article , présentait la partie électronique du projet dont, notamment les schémas de câblage de celui-ci. Le présent article, le troisième de la série, présente l'architecture de l'application programmée en C++ dans une logique orientée objet. La programmation de l'application se résumera à développer un classe Clock (horloge en anglais) dont le code sera réparti dans deux fichiers, comme pour toutes les classes C++, un fichier de définition Clock.h et un fichier d'implémentation Clock.cpp contenant le code des méthodes de la classe. Dans la programmation de la classe Clock , plusieurs classes d'objets secondaires seront utilisées. Celles-ci feront l'objet d'article ultérieurs. Par exe

Bibliothèque Button

Image
La bibliothèque Button est une autre illustration de l'utilisation des événements en C++ sur l'Arduino en se basant sur le design pattern Observer . En plus de la classe Button permettant d'instancier un bouton, elle fournit également la classe ButtonEvent qui permet d'exploiter les interactions de l'utilisateur du le bouton. De plus, elle propose plusieurs listeners qui permettent de traiter ces interactions dans des contextes différents tout en garantissant un découplage parfait entre la classe Button et les classes réceptrices des interactions. Enum ButtonStatus L'énumération ButtonStatus définit l'état du bouton. Elle peut prendre deux valeurs : BUTTON_RELEASED indique que le bouton est relâché. La tension de la pin de l'Arduino à laquelle le bouton est connecté est positionnée à +5V. BUTTTON_PRESSED indique que le bouton est appuyé. La tention de la pin de l'Arduino à laquelle le bouton est connecté est positionnée à 0V. Classe B

Utilisation du gestionnaire d'événements : Classe Timer.

Image
Lors d'un précédent article , la conception d'un système de gestion des événements, basé sur le design pattern Observer ,  a été présenté. Celui-ci propose deux classes template C++, EventListenable et EventListener que l'on doit dériver pour construire respectivement les émetteurs et les récepteurs d'événement. Le présent article présente, en exemple d'usage de ce système — la classe Timer — qui émet un événement TimerEvent à intervalle régulier. La classe TimerEvent La première chose à faire lorsque l'on crée un émetteur d'événement, ce de définir la classe de cet événement. Pour l'émetteur Timer , ce sera TimerEvent . class TimerEvent {   Timer* __sender;   public:   TimerEvent(Timer* sender){     this->__sender = sender;   }   Timer* getSender() { return this->__sender; } }; La classe TimerEvent implémente l'événement émis par un Timer . Elle ne contient qu'un attribut __sender correspondant à l'adresse du Timer