Modifications

Sauter à la navigation Sauter à la recherche
1 479 octets ajoutés ,  1 avril 2025 à 16:59
Ligne 86 : Ligne 86 :  
Une fois le script lancé, presser sur bouton joue l'une des mélodies disponibles.
 
Une fois le script lancé, presser sur bouton joue l'une des mélodies disponibles.
   −
* '''Lignes 1 à 3''' : chargement des bibliothèques nécessaires dont {{fname|rtplay}} permettant de jouer des mélodies RTTTL (voir le tutoriel [[P2E-Buzzer-Music-FR|musique]]
+
* '''Lignes 1 à 3''' : chargement des bibliothèques nécessaires dont {{fname|rtplay}} permettant de jouer des mélodies RTTTL (voir le tutoriel [[P2E-Buzzer-Music-FR|musique]])
 
* '''Ligne 4''' : étant donné que cet exemple utilisera le mécanisme d'interruption, il est nécessaire d'allouer un espace mémoire permettant la transmission des messages d'erreurs.
 
* '''Ligne 4''' : étant donné que cet exemple utilisera le mécanisme d'interruption, il est nécessaire d'allouer un espace mémoire permettant la transmission des messages d'erreurs.
 
* '''Ligne 6''' : déclaration de la variable globale {{fname|counter}}. Cette dernière sera incrémentée de 1 par une routine d'interruption à chaque fois que le bouton de sonnette sera enfoncé. Par conséquent, l'expression {{fname|counter>0}} sera vraie lorsque le bouton de sonnette aura été enfoncé.
 
* '''Ligne 6''' : déclaration de la variable globale {{fname|counter}}. Cette dernière sera incrémentée de 1 par une routine d'interruption à chaque fois que le bouton de sonnette sera enfoncé. Par conséquent, l'expression {{fname|counter>0}} sera vraie lorsque le bouton de sonnette aura été enfoncé.
 
* '''Lignes 8 à 10''' : déclaration de la fonction de rappel {{fname|bouton_cb}} (''cb pour "CallBack" signifiant "Rappel"). Cette fonction sera appelée à chaque pression du bouton dès que le mécanisme d'interruption sera mis en place. Le script utilisateur étant interrompu pendant l'exécution d'une routine d'interruption, il est impératif que celle-ci soit la plus courte possible. L'opération ici est simple, le compteur est incrémenté de 1 à chaque exécution.
 
* '''Lignes 8 à 10''' : déclaration de la fonction de rappel {{fname|bouton_cb}} (''cb pour "CallBack" signifiant "Rappel"). Cette fonction sera appelée à chaque pression du bouton dès que le mécanisme d'interruption sera mis en place. Le script utilisateur étant interrompu pendant l'exécution d'une routine d'interruption, il est impératif que celle-ci soit la plus courte possible. L'opération ici est simple, le compteur est incrémenté de 1 à chaque exécution.
 
* '''Ligne 12''' : déclaration de l'entrée bouton avec activation de la résistance pull-up (de tirage à 3.3V). La potentiel de la broche passe du niveau Haut au niveau Bas lorsque le bouton est pressé.
 
* '''Ligne 12''' : déclaration de l'entrée bouton avec activation de la résistance pull-up (de tirage à 3.3V). La potentiel de la broche passe du niveau Haut au niveau Bas lorsque le bouton est pressé.
 +
* '''Ligne 13''' : association de la fonction d'interruption {{fname|bouton_cb}} avec la broche GP16 du bouton. Le paramètre {{fname|trigger}} indique que l'appel se fait sur le flan descendant du signal (quand il passe du niveau haut au niveau bas).
 +
* '''Lignes 15 et 16''' : création d'un objet {{fname|RingTonePlayer}} associé à la broche du buzzer et chargement d'une bibliothèque de mélodie RTTTL (voir le tutoriel [[P2E-Buzzer-Music-FR|musique]]).
 +
* '''Lignes 17 et 18''' : obtention de la liste des mélodies disponibles et affichage de cette liste sur la sortie REPL. Ce qui produit l'affichage ci-dessous. Il est donc possible de sélectionner n'importe quel nom de la liste avec l'expression {{fname|song_names[index]}} avec {{fname|index}} variant de 0 à {{fname|len(song_names)-1}}.
    +
<syntaxhighlight lang="python">
 +
['Super Mario - Main Theme', 'Super Mario - Title Music', 'SMBtheme', 'SMBwater', 'SMBunderground', 'Picaxe', 'The Simpsons', 'Indiana', 'TakeOnMe', 'Entertainer', 'Muppets', 'Xfiles', 'Looney', '20thCenFox', 'Bond', 'MASH', 'StarWars', 'GoodBad', 'TopGun', 'A-Team', 'Flinstones', 'Jeopardy', 'Gadget', 'Smurfs', 'MahnaMahna', 'LeisureSuit', 'MissionImp']
 +
</syntaxhighlight>
   −
['Super Mario - Main Theme', 'Super Mario - Title Music', 'SMBtheme', 'SMBwater', 'SMBunderground', 'Picaxe', 'The Simpsons', 'Indiana', 'TakeOnMe', 'Entertainer', 'Muppets', 'Xfiles', 'Looney', '20thCenFox', 'Bond', 'MASH', 'StarWars', 'GoodBad', 'TopGun', 'A-Team', 'Flinstones', 'Jeopardy', 'Gadget', 'Smurfs', 'MahnaMahna', 'LeisureSuit', 'MissionImp']
+
* '''Ligne 20''' : définition de la variable {{fname|index}} utilisée pour la sélection de la mélodie à jouer lorsque le bouton sera presser. La valeur 0 est assigné à cette variable pour sélectionner la première mélodie.
 +
* '''Ligne 21''' : boucle infinie exécutant le corps du script entre les lignes 22 à 34. Ce corps du script effectue les tâches suivantes:
 +
# Vérifie si le bouton est pressé,  
 +
# jouer la mélodie (si le bouton a été pressé)
 +
# Sélectionne la mélodie suivante (si le bouton a été pressé)
 +
# introduire une petite pause de 1/5 secondes (pour ne pas surcharger le microcontrôleur)
    
== Ressources ==
 
== Ressources ==
32 920

modifications

Menu de navigation