Table of Contents

Jalon 4: Ajout d'un mode clignotement

Retour à la séance 7

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 :

  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.

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

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

Voilà, il en reste plus

  1. qu'à modifier la fonction DriveLed(),
  2. 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)
  3. 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