User Tools

Site Tools


in202:seance_5:component_led

This is an old revision of the document!


Le composant logiciel LED

Thinking Component

L'objectif du C++ n'est pas de faire le code le plus court, C++ a pour objectif de simplifier la lisibilité, la maintenance et la réutilisation du code.

Sur le montage que vous avez, nous avons des composants physiques. Pour l'instant, nous n'avons que deux familles de composants :

  • les diodes (soit sur la breadboard), soit sur la carte ARDUINO,
  • les boutons (un bouton-poussoir sur la breadboard).

L'idée est d'abstraire les composants par des classes qui offrent les fonctionalités d'une diode et d'un bouton poussoir en cachant l'ensemble des opérations de bas-niveaux que sont digitalRead(), digitalWrite(), pinMode() etc.

Etape 1 : Classe Led

En vous inspirant de ce qui a été fait sous Tinkercad, proposer une classe Led en définissant :

  • les constructeurs de la classe Led,
  • les variables d'états de la classe Led,
  • les méthodes de la classe Led

et pourquoi pas proposer aussi des opérations :

  • opérations d'affectation operator = (bool) pour allumer éteindre la Led,
  • opération de conversion operator bool() const pour récupérer l'état de la Led,
  • opération de comparaison avec une autre Led ou avec une valeur booléenne : operator == () et

operator != ()

  • opération d'inversion, par exemple operator !().

Tout ceci vous permettra de réaliser les opérations classiques sur la Led.

Etape 2 : Implanter le code de la classe Led

  1. Implanter le code dans le programme blink que vous allez sauvegarder dans un répertoire.
  2. Effectuer la modification du code dans les fonctions setup() et loop(). Normalement, il ne devrait y avoir aucune information dans le code setup().
  3. Compiler & télécharger le code sur la carte.

Etape 3 : Ajouter une option ''debug'' à la classe ''Led''

L'idée est que vous ajouter une option debug qui par défaut est à faux. De plus, il serait bien dans ce cas d'avoir aussi le nom de la “diode” pour pouvoir identifier le composant qui envoie des messages.

  • Faites évoluer la classe Led pour contenir les deux informations supplémentaires, le nom de la diode ainsi qu'un drapeau (une valeur booléenne) qui indique si le mode débogage est activé.
  • Ajouter ensuite les messages indiquant que la diode s'allume ou s'éteint lorsque le mode debug est activé sur la diode. Le message doit contenir le nom de la diode ainsi que le nouvel état de celle-ci.

Etape 4 : Profiter de l'héritage

En fait le mode débogage est un mode qui est intéressant pour tous les composants. On peut donc mutualiser partie du code pour tous les composants.

L'idée est de proposer une classe de base que l'on appellera CustomComponent dont héritera l'ensemble des autres classes composants comme par exemple Led.

  class CustomComponent
  {
  protected;
    CustomComponent(std::string name, bool debug)
    {}
  public:
    bool debugIsActive() const;
    std::string getName() const;
 
    std::string header() const; // Génère l'entête de message avec le nom du composant.    
  };
 
  • Compléter cette classe afin d'implanter les méthodes.
  • Faites évoluer la classe Led qui hérite désormais de cette classe de base.
  • Tester votre code.

Navigation

in202/seance_5/component_led.1619617397.txt.gz · Last modified: 2021/04/28 13:43 by bmonsuez