Cours:TDS 2103 mini projet : Différence entre versions

De troyesGEII
Aller à : navigation, rechercher
({{Rouge|Mise sous tension}})
m ({{Rouge|Mise sous tension}})
Ligne 44 : Ligne 44 :
  
  
Allez on fait clignoter cette led :
+
Allez, on fait clignoter cette led :
 
*rythme 4Hz
 
*rythme 4Hz
 
**allumée 4 fois en 1 seconde
 
**allumée 4 fois en 1 seconde

Version du 22 mars 2018 à 20:57

ArduinoPinout.png

On souhaite réaliser un système permettant de mesurer le temps de réaction à un événement.

Le principe sera le suivant :

  • une led s'allume
  • on lance un chronomètre (.... oh un timer !)
  • on attend l'appui sur un bouton
  • on affiche le temps de réaction

Le système sera simulé sur Tinkercad et l'utilisation des fonctions arduino .... interdites bien évidemment.

*******************************************
Astuce Tinkercad circuit : 
mettre un _delay_ms(xxx) dans le while(1)
On évitera ainsi :
while( bit_is_set(PINB,PB2) );
qu'on remplacera par :
while( bit_is_set(PINB,PB2) ) _delay_ms(1);
*******************************************


Mise sous tension

Commençons par indiquer que le système est vivant.

On branche une led (verte de préférence) sur une broche du port B qui soit pilotée directement par le TIMER1 ... donc pas n'importe laquelle.

Bluebg.png
Aidesmall.png
À propos de cette image

Un peu d'aide ???



  • ça commence par OnCompare
  • ça continue avec le numéro du timer
  • ça se termine par A ou B ... ici on prend la sortie A

Todo.jpg A trouver sur l'image un peu plus haut et câbler cette led sur Tinkercad circuit : montage anodes communes svp

......

Todo.jpg Bon alors, elle fonctionne cette led ???? ... elle s'éclaire trop ou pas assez, la résistance !!!!


Allez, on fait clignoter cette led :

  • rythme 4Hz
    • allumée 4 fois en 1 seconde
    • éteinte 4 fois en 1 seconde
  • temps allumé = temps éteint
  • pas le droit à toute forme de .... delay

Et voilà le premier Timer à configurer :

  • choix du prédiviseur
  • mode CTC
  • valeur de comparaison
  • module de sortie (demander le chgt d'état de OC1A à chaque comparaison)
Documentation simple du Timer 1 (16 bits)
La comparaison avec le Timer 1 (16 bits)


Question.jpg Vérifier le bon fonctionnement du clignotement

Bon c'est pas mal, mais avec 2 leds c'est mieux

  • couleur au choix
  • position sur sortie OC1B

Bien sûr, c'est le timer qui va faire clignoter la led sans action du µcontroleur.

La fréquence de clignotement des 2 leds sera donc la même : ça ne dépend que de OCR1A

Question.jpg En jouant sur la valeur de OCR1B, on décale (déphase plutôt) le moment ou la 2ème led s'allume par rapport à la première

Todo.jpg Faire en sorte qu'à la moitié du temps pendant laquelle la led1 s'allume, la 2ème led s'allume à son tour

bon c'est pas très clair tout ça ... une image :Dephasagepi2.png

Gestion du bouton

Ça va être rapide :

Question.jpg Ajouter un bouton !


Bon quelques précisions, on veut que l'appui sur le bouton déclenche une interruption.

Todo.jpg Vérifier tout d'abord le fonctionnement du bouton : une led s'allume si et seulement si il est appuyé

Todo.jpg Détection du changement d'état maintenant : changer l'état d'une led à chaque appui.

Afficheurs

multiplexage sur 3 ou 4 digits

segments sur PORTD

point non utilisé

Chronomètre

s'incrémente toutes les ms

Relions l'ensemble

Supplément

gestion du score : gagne 1 pt si temps<150ms

ajout 2 afficheurs multiplexés pour score