Cours:TDS 2103 mini projet : Différence entre versions
m (→{{Rouge|Mise sous tension}}) |
(→{{Rouge|Mise sous tension}}) |
||
| Ligne 27 : | Ligne 27 : | ||
On branche une led (verte de préférence) sur une broche du port {{Rouge|B}} qui soit pilotée directement par le {{Rouge|TIMER1}} ... donc pas n'importe laquelle. | On branche une led (verte de préférence) sur une broche du port {{Rouge|B}} qui soit pilotée directement par le {{Rouge|TIMER1}} ... donc pas n'importe laquelle. | ||
| − | {{Aide| | + | {{Aide|Un peu d'aide ???}} |
<br> | <br> | ||
<br> | <br> | ||
Version du 22 mars 2018 à 20:56
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); *******************************************
Sommaire
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.
|
|
A trouver sur l'image un peu plus haut et câbler cette led sur Tinkercad circuit : montage anodes communes svp
......
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)
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
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
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 :
Gestion du bouton
Ça va être rapide :
Bon quelques précisions, on veut que l'appui sur le bouton déclenche une interruption.
Vérifier tout d'abord le fonctionnement du bouton : une led s'allume si et seulement si il est appuyé
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

