Cours:TPS 2103 tp1 supplement

De troyesGEII
Révision datée du 3 février 2022 à 11:13 par Bjacquot (discussion | contributions) (Page créée avec « =plusieurs leds ...= =={{Bleu|Plusieurs leds simultanées }}== {{Question|Modifier le programme précédent pour ajouter une deuxième led (f1) s'allumant et s'éteignant... »)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)
Aller à : navigation, rechercher

plusieurs leds ...

Plusieurs leds simultanées

Question.jpg Modifier le programme précédent pour ajouter une deuxième led (f1) s'allumant et s'éteignant au même rythme

Question.jpg Faire en sorte que les 2 leds soient allumées en alternance

Les limites ...

On souhaite avoir 2 rythmes différents pour le clignotement. L'une des leds aura une période de 1s (2x500ms), et l'autre led de 200ms (2x100ms).

On constate aisément que le rapport entre les périodes est de 5, on choisira un "delay" de boucle de 100ms et il suffira de ne changer l'état de la 2ème led que toutes les 5 itérations, suivant le principe suivant :

#include <avr/io.h>
#include <util/delay.h>

int main()
{
   uint8_t n=0;
   // configuration
   ...
   while(1)
   {
      n++;
      PORTx .....;
      if (n==Nb)   // toutes les Nb itérations
      {
         ...
         n=0;
      }
      _delay_ms(???); // un seul delay dans le programme
   }
   return 0;
}

Comme le commentaire l'indique le programme ne doit comporter qu'un seul delay !!! Il faut donc bien le choisir !

Question.jpg Écrire le programme répondant au cahier des charges

Question.jpg Essayer ensuite de modifier le programme pour avoir un changement d'état toutes les 225ms pour l'une des leds et 190ms pour l'autre.

Bluebg.png
Aidesmall.png
À propos de cette image

principe :


Il faut trouver un commun diviseur aux 2 périodes, que l'on nommera T.

Ensuite, il suffit d'utiliser 2 variables n1 et n2, telles que :

  • 225=n1.T
  • 190=n2.T