Introduction

Dans ce projet, nous avons réalisé un piano électronique innovant utilisant des capteurs de force afin de reproduire le fonctionnement d’un piano traditionnel. Contrairement aux boutons-poussoirs classiques, qui ne détectent qu’un état binaire (appuyé ou non), les capteurs de force permettent de mesurer l’intensité de la pression exercée sur une touche. Cette particularité offre une interaction beaucoup plus réaliste et expressive, proche de celle d’un véritable instrument de musique.

Grâce à ces capteurs, chaque touche du piano peut produire un son dont la puissance ou la tonalité varie en fonction de la force appliquée par l’utilisateur. Plus la pression est forte, plus le signal envoyé à la carte Arduino est important, ce qui permet de moduler le son émis par le buzzer. Cette approche améliore considérablement la sensibilité au toucher et rend l’expérience musicale plus immersive.

Le rôle du buzzer est de transformer les signaux électriques générés par la carte Arduino en sons audibles. En combinant les données issues des capteurs de force avec la programmation adéquate, il est possible d’attribuer une note différente à chaque capteur, créant ainsi un mini clavier de piano fonctionnel.

Ce projet permet également de comprendre des notions importantes telles que :

  • la lecture de signaux analogiques,

  • le fonctionnement des résistances sensibles à la force,

  • l’utilisation d’un diviseur de tension,

  • et la génération de sons à l’aide d’un microcontrôleur.

Composants nécessaires

Voici les composants nécessaires pour réaliser notre projet de piano avec capteurs de forces :  

  • Une carte Arduino Uno, qui sert de cerveau au projet

  • Une breadboard, permettant de réaliser le montage sans soudure

  • Trois capteurs de force, utilisés comme touches du piano

  • Trois résistances de 10 kΩ, nécessaires pour le montage en diviseur de tension

  • Une résistance de 100 Ω, destinée à protéger le buzzer

  • Un buzzer, pour produire les sons

  • Des fils de liaison, pour connecter l’ensemble des composants

 

 

Schéma du circuit

Programme du projet

#include “pitches.h”
const int threshold = 10; // Lecture minimale du capteur pour générer une note
// Notes à jouer, correspondant aux trois capteurs:
int notes[] = { NOTE_A4, NOTE_B4,NOTE_C3 };

void setup() {
}

void loop() {
for (int thisSensor = 0; thisSensor < 3; thisSensor++) {
int sensorReading = analogRead(thisSensor); // Récupère la lecture d’un capteur:

if (sensorReading > threshold) { // Si le capteur est pressé assez fort:
tone(8, notes[thisSensor], 20); // Lit la note correspondant à ce capteur:
}   }
}

Explication du programme

Dans la boucle principale, une boucle for() est parcourue pour les nombres allant de 0 à 2.

La valeur de la boucle for est utilisée en tant que numéro de broche, et cette valeur est stockée temporairement dans sensorReading.

Si la valeur lue est plus grande que le seuil, la note correspondant au capteur est jouée

Comme la boucle s’effectue très rapidement, les délais de lecture des capteurs ne sont
pas perceptibles.