- Résumé
- Sommaire
- Extraits
- Descriptif
- À propos de l'auteur
- Lecture
Offert !
Service commercial du Crédit Mutuel
Accédez à la dissert' du jour !Micro-contrôleur : Orgue électronique
Résumé du TD
A la fin de cette année en micro-contrôleurs, nous avons réalisé ce projet pour mettre en oeuvre et développer nos connaissances dans cette matière.
Nous avons choisi de réaliser un orgue électronique pour développer notre fibre musicale. Voici en résumé le cahier des charges à respecter :
- Créer un programme simulant un orgue
- Utiliser le clavier pour saisir les notes (2 octaves plus les touches noires)
- Sortir sur le haut-parleur un son correspondant à la touche tapée
- Arrêter le son lorsque l'utilisateur relâche la touche
- Option permettant de décaler d'une octave toutes les notes
- Lire et jouer une partition enregistrée en mémoire ()
Sommaire du TD
I) Présentation du sujetII) Organigramme du programme
III) Description avancée des fonctions
A. Saisie des touches
B. Génération du son
C. Lecture d'une partition
D. Transposition d'une octave
IV) Bilan et commentaires
A. Problèmes rencontrés
B. Perspectives d'évolution
C. Bilan
Annexes
Extraits du TD
[...] - Divise période par une constante1 - Divise une constante2 par le résultat (résultat inversement proportionnel) - Stockage du résultat dans ctediv Remarque : constante1 et constante2 ont été estimées par les calculs suivants : - constante1 = 100 (permet de convertir la période en un nombre plus petit afin de respecter par la suite une taille de 16 bits) - on part du constat que pour une note donnée (DO2 = 261,62 il faut un certain nombre de répétitions dans la fonction unenote. On approche ce nombre par approximations successives. De là, on calcule constante2 pour retrouver ce nombre pour la note prise en exemple Prenote Cette fonction permet de générer un son pendant la durée nécessaire à la répétition de la première frappe et de la deuxième. En effet, la durée de répétition des touches sous Windows est différente entre la première et la deuxième ; et les suivantes. [...]
[...] Le premier obstacle rencontré fut de trouver une architecture permettant à l'utilisateur de saisir des touches au clavier sans perturber les autres fonctions, en particulier la fonction de génération des notes. Nous avons tout d'abord pensé à utiliser getchar, mais il est vite apparu limitant de par son temps d'exécution très long est du fait qu'il arrête le programme Finalement la solution retenue est un mélange de getchar pour la partie ou le programme ne joue rien et attend une touche et auvol pour la partie génération avec un temps d'exécution fixe et une seule touche à vérifier (celle correspondant à la note en cours) Un autre obstacle fut de gérer les temps de répétition des touches sous Windows. [...]
[...] Voici son déroulement : - Met l'indice de défilement à zéro - Charge la case à l'indice dans periode - Incrémente l'indice (encour) - Charge la case à l'indice dans ctediv - Lance la sous-routine unenote - Incrémente l'indice - Compare l'indice à la variable nbnote o Si encour = nbnote, quitte o Sinon reboucle 4. Transposition d'une octave 2 Traled Cette fonction sert d'indicateur visuel à la transposition. Si la transposition est active, le port B s'allume (valeur $00). [...]
[...] Nous avons donc mis au point dans cette fonction des constantes permettant le calcul de ctediv par multiplication et division successives. De plus, la durée de répétition des touches est différente selon le numéro de la répétition. La solution retenue fut d'intercaler une fonction prenote pendant laquelle aucune saisie clavier n'est demandée. Le nombre de bouclage de la génération de la note est un multiple constant de ctediv. Nous avons rencontrés d'autres problèmes mineurs mais qui ont été résolus rapidement. [...]
[...] La période pour un SIL doit être très basse pour être inaudible. - La quatrième est de concaténer les différentes colonnes en convertissant les couleurs des notes en millisecondes (possibilité de régler le tempo) - La dernière est de mettre en forme les données sous forme d'une ligne où chaque information est séparée par un point-virgule. Afin que le programme sache où est la fin du tableau, il est nécessaire de renseigner sa dimension à l'aide de la variable nbnote. [...]
À propos de l'auteur
Adrien J.Etudiant Électronique

- Niveau
- Grand public
- Etude suivie
- droit des...
Descriptif du TD
- Date de publication
- 2010-07-08
- Date de mise à jour
- 2010-07-08
- Langue
- français
- Format
- Word
- Type
- TD
- Nombre de pages
- 10 pages
- Niveau
- grand public
- Téléchargé
- 1 fois
- Validé par
- le comité de lecture
Autres docs sur : Micro-contrôleur : Orgue électronique
