Processeur informatique

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.

Matrice de 16 boutons.png

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 :

tutoriel clavier cablâge Arduino tutoriel apprendre kit électronique meilleur français explication

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 🎵

branchement final clavier.JPG
buzzer bouton complet Arduino tutoriel apprendre kit électronique explication meilleur français .png.png

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.

arduino page d'accueil tutoriel apprendre code instruction setup fabrication ArduinoJPG
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 :

tutoriel clavier partie 1.JPG

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.

tutoriel clavier partie 2.JPG

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 !

Matrice de 16 boutons.jpg