« SE3 2025/2026 EC3 » : différence entre les versions

De wiki-se.plil.fr
Aller à la navigation Aller à la recherche
(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... »)
 
Aucun résumé des modifications
 
Ligne 1 : Ligne 1 :
= Objectifs =
= Objectifs =


Réaliser le programme du devoir surveillé concernant la programmation en C sur microcontrôleur AVR :
Réaliser le programme "capteurs et actionneurs" du cours/TP concernant la programmation en C sur microcontrôleur AVR :


* vous disposez de la fonction <code>init_minuteur</code> du cours ;
* contrôlez un servo-moteur en utilisant le minuteur 0 ;
* vous devez déjà écrire une version améliorée de la fonction <code>shift_set</code> donnée en cours/TP :
* l’utilisateur utilise deux boutons pour changer l’angle ;
** la version améliorée doit s'appeller <code>affiche_chiffre</code>,
* affichez l’angle de rotation sur les 7-segments :
** cette fonction se charge de l'initialisation des registres à décalage du bouclier multifonction au premier appel,
**3 afficheurs doivent être utilisés ;
** à chaque appel, <code>affiche_chiffre</code> n'affiche <b>qu'un seul</b> chiffre hexadécimal sur l'afficheur 7 segments,
**utilisez la persistence rétinienne ;
** le premier paramètre de la fonction donne la position où afficher le chiffre (les nombres valides vont de 0 à 3),
**utilisez les interruptions générées par un second minuteur.  
** 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 <code>char nombre[4];</code> qui contiendra les valeurs ASCII des nombres qui seront affichés sur le 7 segments,
** écrivez d'abord la fonction principale <code>main</code>, 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 <code>nombre</code> (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 <code>_delay_ms</code>,
**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 =
= Matériel nécessaire =


* Arduino Uno avec câble USB ;
* Arduino Uno avec câble USB ;
* Dispositif de mesure de la consommation sur un port USB.
* bouclier multi-fonctions ;
* servo-moteur.


= Travail réalisé =
= Travail réalisé =


= Documents Rendus =
= Documents Rendus =

Version actuelle datée du 12 février 2026 à 09:52

Objectifs

Réaliser le programme "capteurs et actionneurs" du cours/TP concernant la programmation en C sur microcontrôleur AVR :

  • contrôlez un servo-moteur en utilisant le minuteur 0 ;
  • l’utilisateur utilise deux boutons pour changer l’angle ;
  • affichez l’angle de rotation sur 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.

Matériel nécessaire

  • Arduino Uno avec câble USB ;
  • bouclier multi-fonctions ;
  • servo-moteur.

Travail réalisé

Documents Rendus