Cours:TDS 2103 mini projet : Différence entre versions
(→{{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
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

