User Tools

Site Tools


in202:seance_7:jalon_4

This is an old revision of the document!


Jalon 4: Ajout d'un mode clignotement

Phase 1

Vous avez dans votre classe plusieurs commandes analogWrite() que vous appelez pour règler l'intensite lumineuse de votre diode.

Pour préparer la suite :

  • ajouter une méthode protégée qui effectue l'opération analogWrite(). Cette méthode peut s'appelée void DriveLed() et elle aura typiquement comme contenu :
  void DriveLed()
  {
    analogWrite(GetPortNumber(), m_Intensity);
  }

Cette modification va simplifier la phase 2.

Phase 2

Pour l'instant votre fonction loop est vide. Nous pouvons la modifier pour informer la classe DimmableLed qu'une seconde est écoulée par exemple.

void loop() {
    led.Tick();
    delay(1000);
}

Nous pouvons ajouter un état à la classe DimmableLed, par exemple l'état m_IsBlinking qui indique si la diode clignote ou ne clignote pas.

  • Si m_IsBlinking est true alors la diode clignote,
  • Si m_IsBlinking est false alors la diode ne clignote pas.

Quand nous appelons la fonction Tick() que se passe-t-il ?

  • Si m_IsBlinking est true, alors nous devons changer l'état de la diode, si elle était allumée, on l'éteint, sinon on l'allume.
  • Si m_IsBlinking est false, nous ne faisons rien.

Comment faisons nous l'opération d'allumer ou d'éteindre ? Nous pouvons déléguer cette opération à la fonction DriveLed().

  • Si m_IsBlinking est false, DriveLed() appelle analogWrite(m_Intensity), c'est le fonctionnement par défaut.
  • Si m_IsBlinking est true, nous devons déterminer si nous somme dans la phase on ou la phase off' (du clignogement). * Si on, on allume la diode en appelant analogWrite(m_Intensity) * Si off, on éteint la diode en appelant analogWrite(0). Voilà, il en reste plus - qu'à modifier la fonction DriveLed(), - d'ajouter une fonction Blink() qui active le clignotement ou désactive le clignotement (si m_IsBlinking est true, on le désactive et m_IsBlinking est mis à 0, sinon on active le clignotement et m_IsBlinking est mis à true) - et enfin la fonction Tick() qui est appellée toutes les secondes afin de pouvoir soit allumer, soit éteindre la diode quand le mode de clignotement est actif. ====== Phase 3 ====== Modifier la fonction OnVeryLongButtonClick()'' pour que lorsque l'on appuie longtemps sur le bouton, on active ou on désactive le mode de clignotement.

Intégrer tout et tester.

Suivant: Jalon 3: Commande la diode par le bouton poussoir

in202/seance_7/jalon_4.1620575374.txt.gz · Last modified: 2021/05/09 15:49 by bmonsuez