06- Le clavier électronique Arduino
Tutoriel :Apprendre à monter un clavier électronique à partir d'un composant du boîtier électronique
💡 Réaliser votre clavier électronique personnalisé grâce à votre carte Arduino, votre matrice 16 boutons et à ce que vous avez appris lors du tutoriel bouton - buzzer.
Dans ce tutoriel vous aurez besoin de savoir comment fonctionne le programme Arduino IDE. Ca tombe bien nous avons fait un tutoriel spécialement pour ça.🧐
Il vous manque des composants pour réaliser ce tutoriel ? Nous vous proposons ici un boîtier électronique complet, Vous pourrez réaliser tous nos tutoriel avec !
Ce boîtier est pour débutant et tout nos tutoriels ont pour but de vous faire découvrir l'électronique petit à petit.
Vous souhaitez jouer de votre clavier au plus vite ?
Alors allez directement au code final :
Ce dont vous avez besoin
pour venir à bout de ce tutoriel
- L'Arduino UNO
- Une breadboard
- Un buzzer
- Dix fils connectés
- Un buzzer
- La matrice 16 boutons
Etape 1 - Le câblage
Câblage de la matrice 16 boutons
Finissez bien votre câblage avant de brancher le câble USB sinon vous risquez le court-circuit 🔥
Ici, les pin 6, 7, 8, 9 de l'Arduino seront utilisés pour collecter les informations des rangées R1, R2, R3, R4 et les pin 10, 11, 12, 13 pour collecter les informations des colonnes C1, C2, C3, C4.
Une fois tous les câble de votre matrice placés vous devriez obtenir ça :
Le montage de l'ensemble
Pourle câblage de l'ensemble, il suffit d'ajouter le buzzer à la pin 2 de votre arduino qui lui transmettra les informations
qui lui diront quel note faire 🎵
Attention ⚠️ L'image ci-dessus vous fait apparaitre le buzzer bien plus gros que celui de votre kit électronique car le logiciel utilise un autre modèle. Ne vous laissez pas perturber, le buzzer de votre boîtier électronique doit bien être comme ça dans la réalité:
Maintenant que votre montage est réalisé nous allons pouvoir passer des instruction à la led via le programme de la Arduino.
Pour coder sur l'IDE Aduino certaines connaissances sont nécessaire , vous les aurez lorsque vous aurez réalisé le tutoriel sur les LEDs.
La commande int
Pour commencer nous dire à quoi sont associés les pins de l'Arduino. Nous allons utilisé la fonction int pour cela. Associé à rangée et colonne la fonction int permet d'associé les quatre pins correspondantes à la fois.
Voilà ce que vous devez obtenir en terme de code au dessus du void setup :
Etape 2 -Transmettre les instructions des notes au clavier avant la partie void setup
Etape 3 -Le codage du void setup
La commande pinMode
Nous avons associé les pins, maintenant nous devons savoir quel est le bouton qui est appuyé pour pouvoir adapter la note que nous voulons en fonction du bouton appuyé.
Pour cela nous allons recueillir les informations de toutes les rangées de la matrice une par une et nous allons envoyer un courant dans toutes les colonnes une par une. Ainsi nous pourrons trouver par croisement quel est le bouton qui appuyé. 👇
🎩 🎩 🎩 🎩
Pour arriver à cette fin il faut indiquer à l'Arduino de donner des consignes aux pins 6, 7, 8, 9 et de récolter des informations des pins 10, 11, 12, 13 nous allons mettre les pins rangées en OUTPUT et les pins colonnes en mode INPUT.
La commande pinMode a pour but de donner une fonction à chacune des pins utilisées de l'Arduino.
- OUTPUT doit être associé aux pins qui doivent donner des ordres, c'est par ces pins que passerons nos instructions.
- INPUT signifie recevoir des informations.
- INPUT_PULLUP est la même commande qu'Inupt à ceci prêt que nous rajoutons une résistance dans le circuit. Cette résistance est intégré à la carte Arduino.
Ensuite pour tester les pins une par une nous allons faire rentrer les fonctions pinMode dans une boucle for
La boucle for
Trois éléments définissent une boucle for :
- Le premier élément est la création d'un entier nommé i qui vaut 0, on écrit i = 0 ce qui donne int i = 0
- Ensuite il faut que i soit inférieur à 4, car il y a 4 rangées et 4 colonnes. Nous utiliserons la formule i < 4
-Pour finir i prend +1 à chaque fois que la boucle se termine,ainsi il testera les rangées les unes après les autres jusqu’à arriver à i = 4. La formule utilisé pour cela est i ++
Ce qui nous donne pour la partie setup
Attention ⚠️ La boucle for a une spécificité qui la démarques des autres fonctions: les trois éléments doivent avoir le symbole ";" entre deux éléments au lieu de "," pour les autres fonctions.
Cela fait : :
for ( int i = 0 ; i < 4 ; i++ ) {
Pour ouvrir et fermer la boucle for, il faut utiliser les symboles "{" pour ouvrir et "}" fermera la boucle.
Etape 4 -Le codage du void loop
Nous allons maintenant faire passer le courant dans les rangées une après les autres et lire la tension des colonne une par une. Pour commencer nous allons démarrer une fonction for qui nous permettra d'effectuer les actions en boucle. Puis digitalWrite pour mettre une tension sur les rangées de la matrice et digitalRead pour lire la tension des colonnes.
La boucle for
Pour dire à la Arduino de mettre une tension et d'enlever la tension ⚡ des rangées les unes après les autres nous utiliserons deux fonctions digitalWrite dans deux boucle for. Une boucle sera associée à une fonction digitalWrite qui mettra une tension aux rangées les une après les autre et une boucle sera associée à une autre fonction digitalWrite qui enlèvera la tension des rangées. Les boucles for seront composée exactement de la même manière que dans la partie setup. Nous allons seulement changer le nom de l'entier, cette fois ci nous les appellerons j et k.
Cela nous donne :
Pour dire à la Arduino de mettre une tension de aux rangées les unes après les autres nous utiliserons la fonction digitalWrite dans une boucle for. Voici les deux éléments nécessaire pour cette fonction :
- Nommer le pin Arduino où il faut effectuer une action. Nous voulons que la Arduino effectue une action sur les rangées les une après les autres donc nous utiliserons la variable k qui évolue de 1 à 4 ce qui fait que la fonction va s'effectuer sur la rangée 1 puis la 2... jusqu'à la 4.
- l'action a effectuer , soit HIGH si nous voulons mettre une tension ou LOW si nous voulons la retirer. Dans ce cas nous utiliserons une fonction digitalWrite avec HIGH pour mettre une tension aux rangées alternativement puis LOW pour la retirer.
Cela donne :
digitalWrite ( rangee [k] , HIGH);
Cela va nous donner, avec les boucles for :
La fonction digitalWrite
L'instruction if - else
Cette instruction regarde si certaines conditions sont réunis pour pouvoir effectuer une suite d'actions, cette suite d'action sera contenue dans la partie"if" du programme. Si les conditions ne sont pas réunies c'est le code contenu dans la partie "else" qui s'appliquera.
Ici nous voulons que pour chaque bouton appuyé un son particulier associé au bouton se produise.
Pour obtenir ça commençons par ouvrir l'instruction if et dire nos conditions. nos conditions seront traduites par la commande digitalRead. Cete commande nous permettra de savoir si un pin est HIGH ou LOW. donc de savoir si une pression est adapté sur le bouton lié à ce pin ou non. La commande digitalRead lit le pin LOW si le bouton est appuyé et HIGH si le bouton est relâchée .
Nous obtenons donc une boucle for avec une instruction if :
La fonction digitalRead
Pour dire à la Arduino de lire la tension des colonnes les unes après les autres nous utiliserons la fonction digitalRead dans une boucle for et comme condition de l'instruction if. La fonction digitalRead est composée d'un élément :
- le nom de la pin sur laquelle la Arduino doit effectuer une action. Nous voulons que la Arduino effectue une action sur les colonnes les une après les autres donc nous utiliserons la variable i qui évolue de 1 à 4 ce qui fait que la Arduino va lire les colonnes 1 puis la 2... jusqu'à la 4.
Attention ⚠️Il faut différencier les instructions lire et égal pour l'Arduino ! Pour cela il y a un symbole pour dire lire "==" qui est différent du symbole égals "=" . Nous placerons le symbole "==" dans la commande digitalRead
Cela nous donne :
Maintenant continuons la fonction if avec sa deuxième partie, else.
Comme nous ne souhaitons pas que le clavier fasse de bruit lorsque les boutons seront relâchés il suffit de ne pas écrire la partie else. ✋
Et voici le code complet qui rassemble tout... Ouf !
La commande tone
La commande "tone" permet de commander au buzzer de faire un son précis. Il y a trois éléments dans la commande tone :
-Il faut donner le nom du pin qui donnera l'instruction ici c'est le pin_buzzer
-la fréquence de la note en Hertz
-la durée de la note en milliseconde
Ici nous feront varier la note en fonction de la colonne et de la rangée. Pour cela c'est très simple, il suffit de mettre une variable dans le nombre d'un des paramètre de la note. Nous utiliserons ici la variable i qui dépend de la colonne et de la rangée et la variable j qui dépend de la rangée pour modifier la fréquence de la note .
Téléverser maintenant votre code et observez si la matrice 16 boutons fait des notes différentes lorsque vous pressez sur les boutons.
S'il y a un problème, il faut vérifiez le montage et le code, ce tutoriel n'est pas simple et c'est normal de ne pas le réussir dès la première fois !
Le buzzer change de note lorsque vous appuyez sur des boutons différents ? vous avez réussi ce tutoriel !
Il était pas facile vous êtes vraiment doué ! 💪 🎶 🎸 🎹 🎺 🎻 🥁
Bien joué pour ce sixième tutoriel ! 👍 🖐️ Pour la suite, il est désormais temps de vous tachez les mains d'huile et de lancer votre servomoteur. 🧠🗜️
Vous avez hâte de démarrer votre bolide ? Et bien allez, cliquez !