| 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 == |