Projet 3 – Activité 4

”Jouer une mélodie avec des boutons-poussoir

 

 

 

Objectif

Dans cette activité, nous allons voir qu’il est possible de jouer une mélodie avec un Arduino et des boutons poussoir qui vont simuler les touches d’un piano :

– On dispose de 5 boutons poussoir que l’on associe chacun à une note de musique (une onde sonore de fréquence déterminée en Hz – voir tableau des fréquences des notes de musique) et à une durée d’émission.

– L’appui sur un bouton poussoir permet de jouer la note associée au bouton pendant la durée définie.

– L’exemple de mélodie proposé dans le code sera jouée en suivant la séquence ci-contre :

 

Le code pourra être modifié pour voir l’influence des variables (fréquence des notes associées aux boutons en Hz, durée de la note).

Le programme


.
Programme en Python (”Projet3/Activity4/PY/Activity4.py”)


Déroulement du programme
 :

Importation des librairies et définition de fonctions :

. Le module ”ConnectToArduino.py”, contenant les fonctions de connexion à l’Arduino via le protocole ”Firmata Express”,

. Le module PymataExpressDef.Py” regroupant toutes les fonctions utiles à l’utilisation de Pymata-express” (fonction de déclaration des entrées et sorties, de lectures, d’écritures…) ,

. La bibliothèque time” pour la gestion des temps de pause.

Déclaration des constantes et variables :

. PinTone = 3 (constante correspondant au n° de la broche sur laquelle le buzzer est connecté)

. PinButton = [12,11,10,9,8] (liste de constantes correspondant aux n° des broches des boutons-poussoir)

. Notes = [262,294,330,349,392] (liste des fréquences en Hz des notes associées aux boutons-poussoir)

. NoteDurations = [4,4,4,4,8] (liste des durées des notes en fraction de seconde)

. PlayNote = False (variable booléenne indiquant si une note doit être jouée)

. Note = 0 (variable correspondant au N° de la note à jouer)

. NoteDuration = 0 (variable pour stocker la durée de la note en ms)

. PortComArduino (port COM sur lequel l’Arduino est connecté)

Connexion à l’Arduino :

. Détection du port COM, tentative d’ouverture du port COM sélectionné et connexion à l’Arduino:

PortComArduino = SelectPortCOM()

board = OpenPortCom(PortComArduino)

. Si la connexion à l’Arduino est réussie :

– Déclaration de la broche du buzzer en mode ”Tone” :

Set_Tone_Pin(board, PinTone)

– déclaration des broches des boutons-poussoir en entrées digitales :

for i in range(5):

Set_DigitalInput_Pin(board, PinButton[i])

Boucle principale du programme (boucle ”while True”) :

 

. Programme en langage Arduino (”Projet3/Activity4/INO/Activity4.ino”)