![]()
Troisième programme : sirène d'ambulance utilisant les instructions "son" Tout d'abord, une fois n'est pas coutume, voici directement le programme.
Pour générer les trois tons de la sirène on utilise trois fois la fonction [Son]. Chacune des 3 fonctions est paramétrée pour générer la tonalité adéquate pendant 160 ms sur la sortie C2 :
Quésaco "A4", "C5" etc. ? Pourquoi pas la notation latine "Do,Ré, Mi..." comme nous l'avons apprise il y a bien longtemps déjà ? Tout simplement parce que LOGICATOR utilise la notation musicale Grégorienne chère à nos voisins anglais et allemands.
Tableau des correspondances entre les notations
Le tableau complet est ICI.
Ce tableau nous a été communiqué par notre camarade José.
Ce document est disponible en téléchargement ICI. Ce tableau comporte aussi des liens internet qui permettent d'écouter les différentes sirènes. Il donne les caractéristiques de 5 sirènes : police, gendarmerie, SAMU, pompiers, ambulances.
Petit extrait : sirène d'ambulance
Tonalités telles que les définit la réglementation
Les notes les plus proches des fréquences préconisées sont donc A4 (440 Hz au lieu de 420) et C5 (523 Hz au lieu de 516). N.B. Dans le programme ci-dessus les notes ont été choisies toutes les deux par excès de la fréquence, pour conserver à peu près le même rapport entre les tonalités.
Limitations des instructions [SON] de LOGICATOR
Comme on peut le constater sur le tableau de la notation musicale grégorienne, la gamme s'étend sur 7 octaves plus 3 notes (87 demi-tons), de [A0] à [C8] soit de 27,5 Hz à 4185 Hz. (Il s'agit de la gamme courante des fréquences musicales fondamentales d'un piano, mais pas de la totalité du spectre sonore).
Aïe !!!
LOGICATOR n'autorise que la gamme [C1] à [C5] soit une plage de fréquences de 32,7 Hz à 523 Hz.
C'est sympa mais très insuffisant pour permettre de programmer les sirènes de police, gendarmerie, et SAMU :
Sommes-nous en présence d'une impossibilité ?
Que nenni !
Pas de panique !
LOGICATOR a plus d'un tour dans son sac : il s'agit de l'instruction [Code en BASIC] qui va nous permettre de contourner les limitations précédentes.
Quatrième programme et premières instructions en BASIC : sirène d'ambulance Le document fourni pas José va nous aider. En effet, à la fin du document on trouve les morceaux de codes qui correspondent aux différentes sirènes. La sirène d'ambulance est composée de 3 tons : 420 Hz / 516 Hz / 420 Hz.
Pour obtenir ces tons on utilise la fonction BASIC : PWMOUT,PWMDIV16, broche, période, rapport_cyclique
La documentation de cette fonction dans le manuel français est assez... obscure.
Un article détaillé est disponible ICI. Résumé des formules utiles issues de cet article
Cette fonction génère un signal en créneaux (PWM) sur la sortie C.2 du 08M2. Ce signal pourra être perçu comme un son si sa fréquence est située entre 30 et 8000 Hz et si, bien entendu, on a branché un transducteur sur la sortie C2 du PICAXE.
On utilise la boite [Code en BASIC] que l'on nome "Ambulance", et on y entre le code BASIC ci-dessous :
En quelque sorte, grâce à cette possibilité, nous venons de créer une fonction supplémentaire et personnelle.
Analyse du paramétrage de l'instruction pwmout pwmdiv16, 2, 148, 298 Les formules ci-dessus, appliquées aux 3 tons normalisés 420 Hz, 516 Hz et 420 Hz, permettent le paramétrage de la fonction pwmout. Remarque : avec l'utilisation de pwmdiv16 période = 1 000 000 / fréquence PWM devient : période = 62500 / fréquence PWM
période = 62500 / 420 soit : période = 148,9 Pour un rapport_cyclique_vrai de 50% (0,5) on calcule le paramètre "rapport_cyclique" : (rapport_cyclique) = 4 x 149 x 0,5 soit : (rapport_cyclique) = 298
période = 62500 / 516 soit : période = 121,12 Pour un rapport_cyclique_vrai de 50% (0,5) on calcule le paramètre "rapport_cyclique" : (rapport_cyclique) = 4 x 121,12 x 0,5 soit : (rapport_cyclique) = 242
Analyse rapide du programme La sirène d'ambulance est composée de 3 tons consécutifs d'une durée de 166 millisecondes chacun, suivis d'un temps d'arrêt de 1,5 secondes. Le petit programme BASIC comporte donc 3 groupes d'instructions du genre : pwmout pwmdiv16, 2, 148, 298 pause 166
Essais comparés des deux programmes "ambulance"
Note : à la place du buzzer je vous recommande de brancher un petit haut-parleur en série avec une résistance de 47 Ohms / 1/4 Watt. Le son ne sera pas très fort mais de bien meilleure qualité. Si en plus le petit HP est logé dans une petite boite qui lui sert d'enceinte acoustique, alors là... ! Dans la partie n°3 (article n°14) nous verrons comment obtenir un son plus fort, de façon très simple.
Télécharger successivement l'un puis l'autre programme et comparer la qualité sonore :
D'autre part, grâce au paramétrage des instructions pwmout pwmdiv16, 2, x, y on respecte mieux les fréquences "officielles".
Pour les bidouilleurs :
Dans l'instruction pwmout pwmdiv16, 2, 148, 298 le paramètre 298 correspond au rapport travail / repos du signal sonore PWM. Amusez-vous à le modifier, entre 50 et 500 par exemple (soit un rapport_cyclique_vrai d'environ 8% à environ 84%) : la fréquence du son va rester la même mais le timbre va changer. Plus "rond", plus "sec", plus "métal" suivant la valeur du paramètre. Essayez. Ça vaut la peine.
En quelque sorte, et dans une faible mesure, ce paramètre permet un filtrage du son en faisant varier sa composition en fréquences harmoniques.
POLICE, GENDARMERIE, SAMU, POMPIERS
Extraits du document "Tableau récapitulatif des tonalités françaises", voici les 6 bouts de programmes que vous pouvez copier/coller dans la boite de paramétrage de la fonction [Code en BASIC] :
Sirène d'ambulance (exemple traité dans cet article)
setfreq m4 Sirène de police
setfreq m4 Sirène de gendarmerie
setfreq m4
Sirène du SAMU
setfreq m4
Sirène de pompiers
setfreq m4
Sirène de pompiers américains
setfreq m4
N.B. tous ces programmes ont été testés et fonctionnent correctement.
Conclusion
En dehors du programme "Sirène de pompiers américains", les autres programmes BASIC sont très simples. Simples à comprendre mais aussi très simples à modifier. Il ne faut pas se priver de les adapter pour d'autres besoins.
Et surtout, ne vous privez plus de contourner les limitations de LOGICATOR (ou de BLOCKLY) en créant vos propres bouts de programmes en BASIC.
Date de création : 20/08/2013 - 18:48
Dernière modification : 15/06/2016 - 11:08
Catégorie : PICAXE pour débutants
Page lue 3411 fois
![]()
|