SE3 2025/2026 EC3
Aller à la navigation
Aller à la recherche
Objectifs
Réaliser le programme du devoir surveillé concernant la programmation en C sur microcontrôleur AVR :
- vous disposez de la fonction
init_minuteurdu cours ; - vous devez déjà écrire une version améliorée de la fonction
shift_setdonnée en cours/TP :- la version améliorée doit s'appeller
affiche_chiffre, - cette fonction se charge de l'initialisation des registres à décalage du bouclier multifonction au premier appel,
- à chaque appel,
affiche_chiffren'affiche qu'un seul chiffre hexadécimal sur l'afficheur 7 segments, - le premier paramètre de la fonction donne la position où afficher le chiffre (les nombres valides vont de 0 à 3),
- le second paramètre donne le code ASCII du chiffre à afficher (les valeurs valides vont des caractères 0 à 9, et des caractères A à F) ;
- la version améliorée doit s'appeller
- vous écrirez ensuite un programme affichant les nombres de 0 à 9999 (en base 10), un par seconde, puis cyclant en revenant à 0 :
- il vous est imposé d'utiliser une variable globale
char nombre[4];qui contiendra les valeurs ASCII des nombres qui seront affichés sur le 7 segments, - écrivez d'abord la fonction principale
main, initialisant ce qui est nécessaire, puis affichant à tour de rôle (et à l'infini) chaque chiffre sur le 7 segments, - donnez ensuite le code de l'ISR, incrémentant les valeurs contenues dans
nombre(attention ce sont des valeurs ASCII, pour rappel les valeurs sont contiguës de 0 à 9, et de A à F).
- il vous est imposé d'utiliser une variable globale
Utiliser des capteurs et actionneurs :
avec le bouclier multifonctions ;
contrôlez un servo-moteur en utilisant le minuteur 0 ;
l’utilisateur utilise deux boutons pour changer l’angle ;
affichez l’angle de rotation avec les 7-segments :
3 afficheurs doivent être utilisés ;
utilisez la persistence rétinienne ;
utilisez les interruptions générées par un second minuteur.
- le programme fait clignoter la LED de la carte plusieurs fois rapidement ;
- le programme entre alors en hibernation pendant plusieurs secondes ;
- évaluez la consommation dans deux implantations différentes :
- hibernation réalisée avec un simple
_delay_ms, - hibernation réalisée avec une mise en sommeil de l’ATmega328p.
- hibernation réalisée avec un simple
Vous tenterez aussi de comprendre vos résultats empiriques :
- modélisez la consommation théorique en prenant en compte les principaux composants de l'Ardunion Uno ;
- comparez avec les mesures effectuées.
Matériel nécessaire
- Arduino Uno avec câble USB ;
- Dispositif de mesure de la consommation sur un port USB.