SE3 2025/2026 EC2

De wiki-se.plil.fr
Révision datée du 12 février 2026 à 09:47 par Rex (discussion | contributions) (Page créée avec « = Objectifs = Réaliser le programme du devoir surveillé concernant la programmation en C sur microcontrôleur AVR : * vous disposez de la fonction <code>init_minuteur</code> du cours ; * vous devez déjà écrire une version améliorée de la fonction <code>shift_set</code> donnée en cours/TP : ** la version améliorée doit s'appeller <code>affiche_chiffre</code>, ** cette fonction se charge de l'initialisation des registres à décalage du bouclier multifo... »)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)
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_minuteur du cours ;
  • vous devez déjà écrire une version améliorée de la fonction shift_set donné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_chiffre n'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) ;
  • 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).

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.

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.

Travail réalisé

Documents Rendus