Cours:TDS 2103 mini projet : Différence entre versions
m |
|||
| Ligne 14 : | Ligne 14 : | ||
{{Rouge|Astuce Tinkercad circuit : }} | {{Rouge|Astuce Tinkercad circuit : }} | ||
{{Rouge|mettre un _delay_ms(xxx) dans le while(1)}} | {{Rouge|mettre un _delay_ms(xxx) dans le while(1)}} | ||
| + | {{Bleu|On évitera ainsi :}} | ||
| + | {{Bleu|while( bit_is_set(PINB,PB2) );}} | ||
| + | {{Bleu|qu'on remplacera par :}} | ||
| + | {{Bleu|while( bit_is_set(PINB,PB2) ) _delay_ms(1);}} | ||
{{Rouge|*******************************************}} | {{Rouge|*******************************************}} | ||
| Ligne 74 : | Ligne 78 : | ||
bon c'est pas très clair tout ça ... une image :[[Fichier:Dephasagepi2.png]] | bon c'est pas très clair tout ça ... une image :[[Fichier:Dephasagepi2.png]] | ||
| + | |||
| + | ={{Rouge|Gestion du bouton}}= | ||
| + | |||
| + | interruption dédiée INT0 ou INT1 au choix | ||
| + | |||
| + | ={{Rouge|Afficheurs}}= | ||
| + | |||
| + | multiplexage sur 3 ou 4 digits | ||
| + | |||
| + | segments sur PORTD | ||
| + | |||
| + | point non utilisé | ||
| + | |||
| + | ={{Rouge|Chronomètre}}= | ||
| + | |||
| + | s'incrémente toutes les ms | ||
| + | |||
| + | ={{Rouge|Relions l'ensemble}}= | ||
| + | |||
| + | ={{Rouge|Supplément}}= | ||
| + | |||
| + | gestion du score : gagne 1 pt si temps<150ms | ||
| + | |||
| + | ajout 2 afficheurs multiplexés pour score | ||
Version du 22 mars 2018 à 20:29
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 pilote 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
interruption dédiée INT0 ou INT1 au choix
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

