<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
	<id>https://wikifab.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Enguerrand+Justafr%C3%A9</id>
	<title>Wikifab - Contributions de l’utilisateur [fr]</title>
	<link rel="self" type="application/atom+xml" href="https://wikifab.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Enguerrand+Justafr%C3%A9"/>
	<link rel="alternate" type="text/html" href="https://wikifab.org/wiki/Sp%C3%A9cial:Contributions/Enguerrand_Justafr%C3%A9"/>
	<updated>2026-04-10T02:49:56Z</updated>
	<subtitle>Contributions de l’utilisateur</subtitle>
	<generator>MediaWiki 1.31.3</generator>
	<entry>
		<id>https://wikifab.org/w/index.php?title=Piano_automate&amp;diff=306817</id>
		<title>Piano automate</title>
		<link rel="alternate" type="text/html" href="https://wikifab.org/w/index.php?title=Piano_automate&amp;diff=306817"/>
		<updated>2026-01-29T13:40:18Z</updated>

		<summary type="html">&lt;p&gt;Enguerrand Justafré : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Tuto Details&lt;br /&gt;
|Main_Picture=Piano_automate_DSC03135.jpeg&lt;br /&gt;
|Main_Picture_annotation={&amp;quot;version&amp;quot;:&amp;quot;3.5.0&amp;quot;,&amp;quot;objects&amp;quot;:[{&amp;quot;type&amp;quot;:&amp;quot;image&amp;quot;,&amp;quot;version&amp;quot;:&amp;quot;3.5.0&amp;quot;,&amp;quot;originX&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;originY&amp;quot;:&amp;quot;top&amp;quot;,&amp;quot;left&amp;quot;:-166,&amp;quot;top&amp;quot;:-54,&amp;quot;width&amp;quot;:6000,&amp;quot;height&amp;quot;:3376,&amp;quot;fill&amp;quot;:&amp;quot;rgb(0,0,0)&amp;quot;,&amp;quot;stroke&amp;quot;:null,&amp;quot;strokeWidth&amp;quot;:0,&amp;quot;strokeDashArray&amp;quot;:null,&amp;quot;strokeLineCap&amp;quot;:&amp;quot;butt&amp;quot;,&amp;quot;strokeDashOffset&amp;quot;:0,&amp;quot;strokeLineJoin&amp;quot;:&amp;quot;miter&amp;quot;,&amp;quot;strokeMiterLimit&amp;quot;:4,&amp;quot;scaleX&amp;quot;:0.16,&amp;quot;scaleY&amp;quot;:0.16,&amp;quot;angle&amp;quot;:0,&amp;quot;flipX&amp;quot;:false,&amp;quot;flipY&amp;quot;:false,&amp;quot;opacity&amp;quot;:1,&amp;quot;shadow&amp;quot;:null,&amp;quot;visible&amp;quot;:true,&amp;quot;clipTo&amp;quot;:null,&amp;quot;backgroundColor&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;fillRule&amp;quot;:&amp;quot;nonzero&amp;quot;,&amp;quot;paintFirst&amp;quot;:&amp;quot;fill&amp;quot;,&amp;quot;globalCompositeOperation&amp;quot;:&amp;quot;source-over&amp;quot;,&amp;quot;transformMatrix&amp;quot;:null,&amp;quot;skewX&amp;quot;:0,&amp;quot;skewY&amp;quot;:0,&amp;quot;crossOrigin&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;cropX&amp;quot;:0,&amp;quot;cropY&amp;quot;:0,&amp;quot;src&amp;quot;:&amp;quot;https://wikifab.org/images/6/62/Piano_automate_DSC03135.jpeg&amp;quot;,&amp;quot;filters&amp;quot;:[]}],&amp;quot;height&amp;quot;:450,&amp;quot;width&amp;quot;:600}&lt;br /&gt;
|Licences=Attribution (CC BY)&lt;br /&gt;
|Description=&amp;lt;translate&amp;gt;Ce projet consiste en l’automatisation d’un mini-piano grâce à 15 servomoteurs alignés sur les touches, contrôlés par un Arduino. Chaque servomoteur actionne une touche, permettant de jouer des mélodies programmées de façon électronique. C’est une fusion entre électronique, programmation et musique DIY.&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Area=Art, Electronics, Music and Sound, Play and Hobbies, Robotics&lt;br /&gt;
|Type=Technique&lt;br /&gt;
|Difficulty=Medium&lt;br /&gt;
|Duration=5&lt;br /&gt;
|Duration-type=hour(s)&lt;br /&gt;
|Cost=20&lt;br /&gt;
|Currency=EUR (€)&lt;br /&gt;
|Tags=Arduino, Piano automatisé, Électronique, Servomoteur, Solénoïde, MIDI, Programmation, DIY, Robotique musicale&lt;br /&gt;
}}&lt;br /&gt;
{{Introduction&lt;br /&gt;
|Introduction=&amp;lt;translate&amp;gt;Ce projet automatise un mini-piano avec 15 servomoteurs contrôlés par un Arduino. Chaque servomoteur actionne une touche, permettant de jouer des mélodies programmées. Le tutoriel couvre &amp;lt;u&amp;gt;le matériel&amp;lt;/u&amp;gt;, &amp;lt;u&amp;gt;le câblage&amp;lt;/u&amp;gt;, &amp;lt;u&amp;gt;l’alimentation&amp;lt;/u&amp;gt;, &amp;lt;u&amp;gt;l’impression 3D des supports et le téléversement du code&amp;lt;/u&amp;gt;.&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Materials&lt;br /&gt;
|Step_Picture_00=Robot_nettoyeur_de_microbilles_plastiques_arduino.jpg&lt;br /&gt;
|Step_Picture_01=Mur_d_escalade_inclinable_et_programmable_V_rin_Mur_d_escalade_inclinable_et_personalisable_nm_cable-front.jpg&lt;br /&gt;
|Step_Picture_02=Syst_me_d_entrainement_pour_ping_pong_servomoteur.png&lt;br /&gt;
|Step_Picture_03=Piano_automate_16-Kanal-12Bit-PWM-Servomotor-Treiber-I2C-PCA9685-side_600x600.png&lt;br /&gt;
|Step_Picture_04=Concentrateur_solaire_likes_cable.png&lt;br /&gt;
|Material=&amp;lt;translate&amp;gt;'''Matériel nécessaire'''&lt;br /&gt;
&lt;br /&gt;
*Arduino Uno&lt;br /&gt;
*PCA9685 (module pilote de servomoteurs)&lt;br /&gt;
*15 servomoteurs&lt;br /&gt;
*Câble USB-A&lt;br /&gt;
*Câbles Dupont&lt;br /&gt;
*Alimentation 6V&lt;br /&gt;
*Supports imprimés en 3D pour servomoteurs&lt;br /&gt;
*Vis et écrous pour fixation&lt;br /&gt;
*Colle ou ruban adhésif double-face (optionnel, pour maintenir certains éléments)&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Tools=&amp;lt;translate&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
 '''Outils nécessaires'''&lt;br /&gt;
&lt;br /&gt;
* Ordinateur (pour programmer l’Arduino)&lt;br /&gt;
* Logiciel Arduino IDE&lt;br /&gt;
* Imprimante 3D (pour les supports des servomoteurs)&lt;br /&gt;
* Tournevis (pour vis et écrous)&lt;br /&gt;
* Pince coupante / pince à dénuder (pour câbles Dupont)&lt;br /&gt;
* Multimètre (optionnel, pour vérifier alimentation et câblage)&lt;br /&gt;
* Fer à souder et étain (optionnel, si certains câbles nécessitent une soudure)&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;le câblage et alimentation&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;*'''Alimentation des servomoteurs'''&lt;br /&gt;
**Connectez le '''+6V''' de votre alimentation externe à la broche '''V+''' du PCA9685.&lt;br /&gt;
**Connectez la '''masse (GND)''' de l’alimentation à la broche '''GND''' du PCA9685.&lt;br /&gt;
*'''Connexion I2C PCA9685 → Arduino'''&lt;br /&gt;
**Reliez la broche '''SDA''' du PCA9685 à la broche '''A4''' de l’Arduino Uno.&lt;br /&gt;
**Reliez la broche '''SCL''' du PCA9685 à la broche '''A5''' de l’Arduino Uno.&lt;br /&gt;
**Reliez également la '''GND''' du PCA9685 à la '''GND''' de l’Arduino pour partager la masse.&lt;br /&gt;
*'''Connexion des servomoteurs au PCA9685'''&lt;br /&gt;
**Chaque servomoteur a trois fils : '''VCC (+)''', '''GND (-)''' et '''signal'''.&lt;br /&gt;
**Branchez '''VCC''' à '''V+''' du PCA9685, '''GND''' à '''GND''' du PCA9685.&lt;br /&gt;
**Branchez le fil '''signal''' de chaque servomoteur à un canal de sortie du PCA9685&lt;br /&gt;
{{Warning|...L’alimentation des servomoteurs est critique : ne les alimentez jamais directement depuis l’Arduino, car cela pourrait endommager la carte. Utilisez toujours une source externe 6V capable de fournir suffisamment de courant pour tous les servomoteurs. Vérifiez que toutes les masses (GND) sont reliées entre elles pour éviter des différences de potentiel pouvant provoquer des comportements imprévisibles ou des dommages électroniques. Débranchez l’alimentation avant toute modification du câblage et évitez les courts-circuits lors de l’assemblage.}}&amp;lt;br /&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Piano_automate_Arduino-and-PCA9685-Circuit-Schematic.png&lt;br /&gt;
|Step_Picture_01=Piano_automate_DSC03146.jpeg&lt;br /&gt;
|Step_Picture_01_annotation={&amp;quot;version&amp;quot;:&amp;quot;3.5.0&amp;quot;,&amp;quot;objects&amp;quot;:[{&amp;quot;type&amp;quot;:&amp;quot;image&amp;quot;,&amp;quot;version&amp;quot;:&amp;quot;3.5.0&amp;quot;,&amp;quot;originX&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;originY&amp;quot;:&amp;quot;top&amp;quot;,&amp;quot;left&amp;quot;:-377,&amp;quot;top&amp;quot;:-294,&amp;quot;width&amp;quot;:6000,&amp;quot;height&amp;quot;:3376,&amp;quot;fill&amp;quot;:&amp;quot;rgb(0,0,0)&amp;quot;,&amp;quot;stroke&amp;quot;:null,&amp;quot;strokeWidth&amp;quot;:0,&amp;quot;strokeDashArray&amp;quot;:null,&amp;quot;strokeLineCap&amp;quot;:&amp;quot;butt&amp;quot;,&amp;quot;strokeDashOffset&amp;quot;:0,&amp;quot;strokeLineJoin&amp;quot;:&amp;quot;miter&amp;quot;,&amp;quot;strokeMiterLimit&amp;quot;:4,&amp;quot;scaleX&amp;quot;:0.22,&amp;quot;scaleY&amp;quot;:0.22,&amp;quot;angle&amp;quot;:0,&amp;quot;flipX&amp;quot;:false,&amp;quot;flipY&amp;quot;:false,&amp;quot;opacity&amp;quot;:1,&amp;quot;shadow&amp;quot;:null,&amp;quot;visible&amp;quot;:true,&amp;quot;clipTo&amp;quot;:null,&amp;quot;backgroundColor&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;fillRule&amp;quot;:&amp;quot;nonzero&amp;quot;,&amp;quot;paintFirst&amp;quot;:&amp;quot;fill&amp;quot;,&amp;quot;globalCompositeOperation&amp;quot;:&amp;quot;source-over&amp;quot;,&amp;quot;transformMatrix&amp;quot;:null,&amp;quot;skewX&amp;quot;:0,&amp;quot;skewY&amp;quot;:0,&amp;quot;crossOrigin&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;cropX&amp;quot;:0,&amp;quot;cropY&amp;quot;:0,&amp;quot;src&amp;quot;:&amp;quot;https://wikifab.org/images/2/2d/Piano_automate_DSC03146.jpeg&amp;quot;,&amp;quot;filters&amp;quot;:[]}],&amp;quot;height&amp;quot;:337.5,&amp;quot;width&amp;quot;:600}&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;l’impression 3D&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;Ouvrez le fichier '''STL''' des supports dans un slicer comme '''Cura''', configurez vos paramètres d’impression, générez le '''G-code''' et imprimez. Vérifiez que les pièces s’adaptent correctement aux servomoteurs avant le montage.&lt;br /&gt;
&lt;br /&gt;
La forme de votre axe de servomoteurs dépendra du piano donc il vaut mieux prendre une pièce .Stl et la multiplier suivant le nombres de moteurs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Voir lien pour model 3D en open source  [https://cults3d.com/fr/mot-clefs/servomoteur?srsltid=AfmBOorozMNpDMna9qxpem_y4irSU10zdUFVG2-up-iLrHlhWLFCDTCX ici .]&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Piano_automate_20251118_180944_1_.jpg&lt;br /&gt;
|Step_Picture_01=Piano_automate_rrr.JPG&lt;br /&gt;
|Step_Picture_02=Piano_automate_n.JPG&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;téléverser le code&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;arduino&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;Wire.h&amp;gt;                          // Bibliothèque pour la communication I2C&lt;br /&gt;
#include &amp;lt;Adafruit_PWMServoDriver.h&amp;gt;       // Bibliothèque pour piloter le PCA9685 (servomoteurs)&lt;br /&gt;
&lt;br /&gt;
// Création d'une instance du module PCA9685 à l'adresse 0x40&lt;br /&gt;
Adafruit_PWMServoDriver pca = Adafruit_PWMServoDriver(0x40);&lt;br /&gt;
&lt;br /&gt;
// Valeurs PWM correspondant aux positions repos et levée des servos&lt;br /&gt;
int SERVOMIN = 100;  // Position repos&lt;br /&gt;
int SERVOMAX = 200;  // Position levée complète&lt;br /&gt;
&lt;br /&gt;
// Valeur pour un mouvement plus puissant (~40°)&lt;br /&gt;
int SERVO_FRAPPE = SERVOMIN + ((SERVOMAX - SERVOMIN) / 4); // Position intermédiaire pour frapper&lt;br /&gt;
&lt;br /&gt;
// Délais utilisés pour frapper et revenir&lt;br /&gt;
#define DELAI_FRAPPE 200      // Durée pour lever le bras du servo&lt;br /&gt;
#define DELAI_RETOUR 250      // Durée pour revenir à la position repos&lt;br /&gt;
#define DELAI_SECURITE 50     // Petite pause pour éviter chevauchement des frappes&lt;br /&gt;
&lt;br /&gt;
// Durées des notes pour le rythme de la musique&lt;br /&gt;
#define NOIRE 350             // Durée d'une noire&lt;br /&gt;
#define CROCHE 175            // Durée d'une croche&lt;br /&gt;
#define BLANCHE 700           // Durée d'une blanche&lt;br /&gt;
&lt;br /&gt;
// Mapping des notes sur les 15 servos (de DO grave à DO aigu)&lt;br /&gt;
#define DO 0&lt;br /&gt;
#define RE 1&lt;br /&gt;
#define MI 2&lt;br /&gt;
#define FA 3&lt;br /&gt;
#define SOL 4&lt;br /&gt;
#define LA 5&lt;br /&gt;
#define SI 6&lt;br /&gt;
#define DO2 7&lt;br /&gt;
#define RE2 8&lt;br /&gt;
#define MI2 9&lt;br /&gt;
#define FA2 10&lt;br /&gt;
#define SOL2 11&lt;br /&gt;
#define LA2 12&lt;br /&gt;
#define SI2 13&lt;br /&gt;
#define DO3 14&lt;br /&gt;
&lt;br /&gt;
// -------- SETUP --------&lt;br /&gt;
void setup() {&lt;br /&gt;
  Serial.begin(115200);                        // Initialisation du port série pour debug&lt;br /&gt;
  Serial.println(&amp;quot;Piano 15 touches - Ne Pleure Pas Jeannette&amp;quot;);&lt;br /&gt;
  &lt;br /&gt;
  pca.begin();                                 // Démarrage du module PCA9685&lt;br /&gt;
  pca.setPWMFreq(50);                          // Fréquence standard servomoteur (50Hz)&lt;br /&gt;
  delay(100);&lt;br /&gt;
  &lt;br /&gt;
  // Initialisation des servos à la position repos&lt;br /&gt;
  Serial.println(&amp;quot;Initialisation des servos...&amp;quot;);&lt;br /&gt;
  for (int i = 0; i &amp;lt; 15; i++) {&lt;br /&gt;
    pca.setPWM(i, 0, SERVOMIN);               // Met chaque servo à la position repos&lt;br /&gt;
    delay(50);                                // Petite pause pour éviter surcharge I2C&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  delay(1000);&lt;br /&gt;
  Serial.println(&amp;quot;Pret! Demarrage dans 2 secondes...&amp;quot;);&lt;br /&gt;
  delay(2000);                                 // Pause avant le début&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// -------- LOOP PRINCIPAL --------&lt;br /&gt;
void loop() {&lt;br /&gt;
  jouerNePleurePasJeannette();                // Appel de la fonction qui joue la musique complète&lt;br /&gt;
  delay(3000);                                 // Pause entre les répétitions de la chanson&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// -------- FONCTIONS DE BASE --------&lt;br /&gt;
&lt;br /&gt;
// Frapper une touche spécifique&lt;br /&gt;
void frapperTouche(int servoNum) {&lt;br /&gt;
  if (servoNum &amp;lt; 0 || servoNum &amp;gt;= 15) return;  // Vérifie que le servo existe&lt;br /&gt;
  &lt;br /&gt;
  Serial.print(&amp;quot;Note: Servo &amp;quot;);&lt;br /&gt;
  Serial.println(servoNum);                     // Affiche dans le moniteur série pour debug&lt;br /&gt;
  &lt;br /&gt;
  pca.setPWM(servoNum, 0, SERVO_FRAPPE);       // Lever le bras du servo pour frapper&lt;br /&gt;
  delay(DELAI_FRAPPE);&lt;br /&gt;
  &lt;br /&gt;
  pca.setPWM(servoNum, 0, SERVOMIN);           // Revenir à la position repos&lt;br /&gt;
  delay(DELAI_RETOUR);&lt;br /&gt;
  delay(DELAI_SECURITE);                        // Pause pour sécurité&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Jouer une note avec sa durée&lt;br /&gt;
void jouerNote(int note, int duree) {&lt;br /&gt;
  frapperTouche(note);                          // Frapper la touche&lt;br /&gt;
  int tempsRestant = duree - (DELAI_FRAPPE + DELAI_RETOUR + DELAI_SECURITE);&lt;br /&gt;
  if (tempsRestant &amp;gt; 0) {&lt;br /&gt;
    delay(tempsRestant);                        // Attendre le reste de la durée de la note&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Silence / pause&lt;br /&gt;
void silence(int duree) {&lt;br /&gt;
  delay(duree);                                 // Simple pause pour un silence&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// -------- MUSIQUE : &amp;quot;Ne pleure pas Jeannette&amp;quot; --------&lt;br /&gt;
void jouerNePleurePasJeannette() {&lt;br /&gt;
  Serial.println(&amp;quot;=== Ne pleure pas Jeannette - Version Etendue ===&amp;quot;);&lt;br /&gt;
  &lt;br /&gt;
  // Introduction - graves (servos 0 à 4)&lt;br /&gt;
  jouerNote(DO, CROCHE);&lt;br /&gt;
  jouerNote(MI, CROCHE);&lt;br /&gt;
  jouerNote(SOL, CROCHE);&lt;br /&gt;
  jouerNote(DO2, CROCHE);&lt;br /&gt;
  &lt;br /&gt;
  // Partie principale - octave moyenne&lt;br /&gt;
  jouerNote(SOL, CROCHE);    &lt;br /&gt;
  jouerNote(SOL, CROCHE);    &lt;br /&gt;
  jouerNote(LA, CROCHE);     &lt;br /&gt;
  jouerNote(SI, CROCHE);     &lt;br /&gt;
  jouerNote(DO2, NOIRE);     &lt;br /&gt;
  jouerNote(SI, NOIRE);      &lt;br /&gt;
  &lt;br /&gt;
  // &amp;quot;Tra la la&amp;quot; - monte vers aigu&lt;br /&gt;
  jouerNote(LA, CROCHE);     &lt;br /&gt;
  jouerNote(SOL, CROCHE);    &lt;br /&gt;
  jouerNote(LA, CROCHE);     &lt;br /&gt;
  jouerNote(SI, CROCHE);     &lt;br /&gt;
  jouerNote(DO2, NOIRE);     &lt;br /&gt;
  jouerNote(RE2, NOIRE);     &lt;br /&gt;
  &lt;br /&gt;
  // Octave haute (servos 7-14)&lt;br /&gt;
  jouerNote(DO2, CROCHE);    &lt;br /&gt;
  jouerNote(RE2, CROCHE);    &lt;br /&gt;
  jouerNote(MI2, CROCHE);    &lt;br /&gt;
  jouerNote(FA2, CROCHE);    &lt;br /&gt;
  jouerNote(SOL2, NOIRE);    &lt;br /&gt;
  jouerNote(FA2, NOIRE);     &lt;br /&gt;
  &lt;br /&gt;
  // Descente rapide&lt;br /&gt;
  jouerNote(MI2, CROCHE);    &lt;br /&gt;
  jouerNote(RE2, CROCHE);    &lt;br /&gt;
  jouerNote(DO2, CROCHE);    &lt;br /&gt;
  jouerNote(SI, CROCHE);     &lt;br /&gt;
  jouerNote(LA, NOIRE);      &lt;br /&gt;
  jouerNote(SOL, NOIRE);     &lt;br /&gt;
  &lt;br /&gt;
  silence(300);               // Petite pause&lt;br /&gt;
  &lt;br /&gt;
  // Interlude - arpège complet&lt;br /&gt;
  jouerNote(DO, CROCHE);&lt;br /&gt;
  jouerNote(RE, CROCHE);&lt;br /&gt;
  jouerNote(MI, CROCHE);&lt;br /&gt;
  jouerNote(FA, CROCHE);&lt;br /&gt;
  jouerNote(SOL, CROCHE);&lt;br /&gt;
  jouerNote(LA, CROCHE);&lt;br /&gt;
  jouerNote(SI, CROCHE);&lt;br /&gt;
  jouerNote(DO2, CROCHE);&lt;br /&gt;
  jouerNote(RE2, CROCHE);&lt;br /&gt;
  jouerNote(MI2, CROCHE);&lt;br /&gt;
  jouerNote(FA2, CROCHE);&lt;br /&gt;
  jouerNote(SOL2, CROCHE);&lt;br /&gt;
  jouerNote(LA2, CROCHE);&lt;br /&gt;
  jouerNote(SI2, CROCHE);&lt;br /&gt;
  jouerNote(DO3, NOIRE);     // Note la plus haute&lt;br /&gt;
  &lt;br /&gt;
  silence(300);               // Petite pause&lt;br /&gt;
  &lt;br /&gt;
  // Refrain&lt;br /&gt;
  jouerNote(SI, CROCHE);     &lt;br /&gt;
  jouerNote(SI, CROCHE);     &lt;br /&gt;
  jouerNote(DO2, CROCHE);    &lt;br /&gt;
  jouerNote(RE2, CROCHE);    &lt;br /&gt;
  jouerNote(MI2, NOIRE);     &lt;br /&gt;
  jouerNote(RE2, NOIRE);     &lt;br /&gt;
  &lt;br /&gt;
  // Descente&lt;br /&gt;
  jouerNote(DO2, CROCHE);    &lt;br /&gt;
  jouerNote(SI, CROCHE);     &lt;br /&gt;
  jouerNote(LA, CROCHE);     &lt;br /&gt;
  jouerNote(SOL, CROCHE);    &lt;br /&gt;
  jouerNote(FA, NOIRE);      &lt;br /&gt;
  jouerNote(MI, NOIRE);      &lt;br /&gt;
  &lt;br /&gt;
  // Finale sur toute l’étendue&lt;br /&gt;
  jouerNote(SOL2, CROCHE);   &lt;br /&gt;
  jouerNote(FA2, CROCHE);    &lt;br /&gt;
  jouerNote(MI2, CROCHE);    &lt;br /&gt;
  jouerNote(RE2, CROCHE);    &lt;br /&gt;
  jouerNote(DO2, CROCHE);    &lt;br /&gt;
  jouerNote(SI, CROCHE);     &lt;br /&gt;
  jouerNote(LA, CROCHE);     &lt;br /&gt;
  jouerNote(SOL, CROCHE);    &lt;br /&gt;
  jouerNote(FA, CROCHE);&lt;br /&gt;
  jouerNote(MI, CROCHE);&lt;br /&gt;
  jouerNote(RE, CROCHE);&lt;br /&gt;
  jouerNote(DO, NOIRE);      // Retour grave&lt;br /&gt;
  &lt;br /&gt;
  silence(NOIRE);            // Petite pause&lt;br /&gt;
  &lt;br /&gt;
  // Final - accord rapide (3 notes simultanées)&lt;br /&gt;
  jouerNote(DO, CROCHE);&lt;br /&gt;
  delay(30);&lt;br /&gt;
  jouerNote(MI, CROCHE);&lt;br /&gt;
  delay(30);&lt;br /&gt;
  jouerNote(SOL, CROCHE);&lt;br /&gt;
  delay(30);&lt;br /&gt;
  jouerNote(DO2, NOIRE);&lt;br /&gt;
  &lt;br /&gt;
  Serial.println(&amp;quot;=== Fin ===&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;Téléverser le code arduino&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;*'''Installer le logiciel Arduino IDE'''  Téléchargez et installez l’'''Arduino IDE''' sur votre ordinateur (Windows / macOS / Linux). Cela vous permettra d’écrire, de vérifier et de téléverser votre code.&lt;br /&gt;
*'''Ouvrir votre code'''  Lancez l’IDE Arduino et ouvrez votre fichier '''.ino''' contenant le code de votre piano automatisé.&lt;br /&gt;
*'''Connecter l’Arduino'''  Branchez votre '''Arduino Uno ou clone''' à l’ordinateur avec un '''câble USB‑A''' (assurez‑vous que c’est un '''câble de données''', pas seulement de charge).&lt;br /&gt;
*'''Sélectionner la carte et le port'''&lt;br /&gt;
**Dans le menu '''Outils → Carte''', choisissez '''Arduino Uno''' (ou la version compatible de votre clone).&lt;br /&gt;
**Ensuite, allez dans '''Outils → Port''' et sélectionnez le port COM ou USB auquel votre carte est connectée.&lt;br /&gt;
*'''Vérifier le code'''   Avant de téléverser, cliquez sur le bouton '''Vérifier''' (icône avec une coche) pour compiler le code et détecter d’éventuelles erreurs.&lt;br /&gt;
*'''Téléverser le code'''  Appuyez sur le bouton '''Téléverser''' (icône avec une flèche vers la droite). L’IDE va compiler puis envoyer automatiquement le code à la carte. Les LED '''RX / TX''' de l’Arduino clignoteront pendant l’envoi, puis votre sketch commencera à s’exécuter une fois le téléversement terminé.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Piano_automate_fff.JPG&lt;br /&gt;
}}&lt;br /&gt;
{{Notes&lt;br /&gt;
|Notes=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{PageLang&lt;br /&gt;
|Language=fr&lt;br /&gt;
|SourceLanguage=none&lt;br /&gt;
|IsTranslation=0&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Status&lt;br /&gt;
|Complete=Published&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Enguerrand Justafré</name></author>
		
	</entry>
	<entry>
		<id>https://wikifab.org/w/index.php?title=Fichier:Piano_automate_DSC03146.jpeg&amp;diff=306811</id>
		<title>Fichier:Piano automate DSC03146.jpeg</title>
		<link rel="alternate" type="text/html" href="https://wikifab.org/w/index.php?title=Fichier:Piano_automate_DSC03146.jpeg&amp;diff=306811"/>
		<updated>2026-01-29T13:38:01Z</updated>

		<summary type="html">&lt;p&gt;Enguerrand Justafré : Piano_automate_DSC03146&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Piano_automate_DSC03146&lt;/div&gt;</summary>
		<author><name>Enguerrand Justafré</name></author>
		
	</entry>
	<entry>
		<id>https://wikifab.org/w/index.php?title=Fichier:Piano_automate_DSC03135.jpeg&amp;diff=306810</id>
		<title>Fichier:Piano automate DSC03135.jpeg</title>
		<link rel="alternate" type="text/html" href="https://wikifab.org/w/index.php?title=Fichier:Piano_automate_DSC03135.jpeg&amp;diff=306810"/>
		<updated>2026-01-29T13:37:44Z</updated>

		<summary type="html">&lt;p&gt;Enguerrand Justafré : Piano_automate_DSC03135&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Piano_automate_DSC03135&lt;/div&gt;</summary>
		<author><name>Enguerrand Justafré</name></author>
		
	</entry>
	<entry>
		<id>https://wikifab.org/w/index.php?title=Fichier:Piano_automate_DSC03133.jpeg&amp;diff=306809</id>
		<title>Fichier:Piano automate DSC03133.jpeg</title>
		<link rel="alternate" type="text/html" href="https://wikifab.org/w/index.php?title=Fichier:Piano_automate_DSC03133.jpeg&amp;diff=306809"/>
		<updated>2026-01-29T13:37:29Z</updated>

		<summary type="html">&lt;p&gt;Enguerrand Justafré : Piano_automate_DSC03133&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Piano_automate_DSC03133&lt;/div&gt;</summary>
		<author><name>Enguerrand Justafré</name></author>
		
	</entry>
	<entry>
		<id>https://wikifab.org/w/index.php?title=Fichier:Piano_automate_DSC03127.jpeg&amp;diff=306808</id>
		<title>Fichier:Piano automate DSC03127.jpeg</title>
		<link rel="alternate" type="text/html" href="https://wikifab.org/w/index.php?title=Fichier:Piano_automate_DSC03127.jpeg&amp;diff=306808"/>
		<updated>2026-01-29T13:37:14Z</updated>

		<summary type="html">&lt;p&gt;Enguerrand Justafré : Piano_automate_DSC03127&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Piano_automate_DSC03127&lt;/div&gt;</summary>
		<author><name>Enguerrand Justafré</name></author>
		
	</entry>
	<entry>
		<id>https://wikifab.org/w/index.php?title=Piano_automate&amp;diff=304526</id>
		<title>Piano automate</title>
		<link rel="alternate" type="text/html" href="https://wikifab.org/w/index.php?title=Piano_automate&amp;diff=304526"/>
		<updated>2026-01-11T22:35:43Z</updated>

		<summary type="html">&lt;p&gt;Enguerrand Justafré : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Tuto Details&lt;br /&gt;
|Licences=Attribution (CC BY)&lt;br /&gt;
|Description=&amp;lt;translate&amp;gt;Ce projet consiste en l’automatisation d’un mini-piano grâce à 15 servomoteurs alignés sur les touches, contrôlés par un Arduino. Chaque servomoteur actionne une touche, permettant de jouer des mélodies programmées de façon électronique. C’est une fusion entre électronique, programmation et musique DIY.&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Area=Art, Electronics, Music and Sound, Play and Hobbies, Robotics&lt;br /&gt;
|Type=Technique&lt;br /&gt;
|Difficulty=Medium&lt;br /&gt;
|Duration=5&lt;br /&gt;
|Duration-type=hour(s)&lt;br /&gt;
|Cost=20&lt;br /&gt;
|Currency=EUR (€)&lt;br /&gt;
|Tags=Arduino, Piano automatisé, Électronique, Servomoteur, Solénoïde, MIDI, Programmation, DIY, Robotique musicale&lt;br /&gt;
}}&lt;br /&gt;
{{Introduction&lt;br /&gt;
|Introduction=&amp;lt;translate&amp;gt;Ce projet automatise un mini-piano avec 15 servomoteurs contrôlés par un Arduino. Chaque servomoteur actionne une touche, permettant de jouer des mélodies programmées. Le tutoriel couvre &amp;lt;u&amp;gt;le matériel&amp;lt;/u&amp;gt;, &amp;lt;u&amp;gt;le câblage&amp;lt;/u&amp;gt;, &amp;lt;u&amp;gt;l’alimentation&amp;lt;/u&amp;gt;, &amp;lt;u&amp;gt;l’impression 3D des supports et le téléversement du code&amp;lt;/u&amp;gt;.&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Materials&lt;br /&gt;
|Step_Picture_00=Robot_nettoyeur_de_microbilles_plastiques_arduino.jpg&lt;br /&gt;
|Step_Picture_01=Mur_d_escalade_inclinable_et_programmable_V_rin_Mur_d_escalade_inclinable_et_personalisable_nm_cable-front.jpg&lt;br /&gt;
|Step_Picture_02=Syst_me_d_entrainement_pour_ping_pong_servomoteur.png&lt;br /&gt;
|Step_Picture_03=Piano_automate_16-Kanal-12Bit-PWM-Servomotor-Treiber-I2C-PCA9685-side_600x600.png&lt;br /&gt;
|Step_Picture_04=Concentrateur_solaire_likes_cable.png&lt;br /&gt;
|Material=&amp;lt;translate&amp;gt;'''Matériel nécessaire'''&lt;br /&gt;
&lt;br /&gt;
*Arduino Uno&lt;br /&gt;
*PCA9685 (module pilote de servomoteurs)&lt;br /&gt;
*15 servomoteurs&lt;br /&gt;
*Câble USB-A&lt;br /&gt;
*Câbles Dupont&lt;br /&gt;
*Alimentation 6V&lt;br /&gt;
*Supports imprimés en 3D pour servomoteurs&lt;br /&gt;
*Vis et écrous pour fixation&lt;br /&gt;
*Colle ou ruban adhésif double-face (optionnel, pour maintenir certains éléments)&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Tools=&amp;lt;translate&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
 '''Outils nécessaires'''&lt;br /&gt;
&lt;br /&gt;
* Ordinateur (pour programmer l’Arduino)&lt;br /&gt;
* Logiciel Arduino IDE&lt;br /&gt;
* Imprimante 3D (pour les supports des servomoteurs)&lt;br /&gt;
* Tournevis (pour vis et écrous)&lt;br /&gt;
* Pince coupante / pince à dénuder (pour câbles Dupont)&lt;br /&gt;
* Multimètre (optionnel, pour vérifier alimentation et câblage)&lt;br /&gt;
* Fer à souder et étain (optionnel, si certains câbles nécessitent une soudure)&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;le câblage et alimentation&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;*'''Alimentation des servomoteurs'''&lt;br /&gt;
**Connectez le '''+6V''' de votre alimentation externe à la broche '''V+''' du PCA9685.&lt;br /&gt;
**Connectez la '''masse (GND)''' de l’alimentation à la broche '''GND''' du PCA9685.&lt;br /&gt;
*'''Connexion I2C PCA9685 → Arduino'''&lt;br /&gt;
**Reliez la broche '''SDA''' du PCA9685 à la broche '''A4''' de l’Arduino Uno.&lt;br /&gt;
**Reliez la broche '''SCL''' du PCA9685 à la broche '''A5''' de l’Arduino Uno.&lt;br /&gt;
**Reliez également la '''GND''' du PCA9685 à la '''GND''' de l’Arduino pour partager la masse.&lt;br /&gt;
*'''Connexion des servomoteurs au PCA9685'''&lt;br /&gt;
**Chaque servomoteur a trois fils : '''VCC (+)''', '''GND (-)''' et '''signal'''.&lt;br /&gt;
**Branchez '''VCC''' à '''V+''' du PCA9685, '''GND''' à '''GND''' du PCA9685.&lt;br /&gt;
**Branchez le fil '''signal''' de chaque servomoteur à un canal de sortie du PCA9685&lt;br /&gt;
{{Warning|...L’alimentation des servomoteurs est critique : ne les alimentez jamais directement depuis l’Arduino, car cela pourrait endommager la carte. Utilisez toujours une source externe 6V capable de fournir suffisamment de courant pour tous les servomoteurs. Vérifiez que toutes les masses (GND) sont reliées entre elles pour éviter des différences de potentiel pouvant provoquer des comportements imprévisibles ou des dommages électroniques. Débranchez l’alimentation avant toute modification du câblage et évitez les courts-circuits lors de l’assemblage.}}&amp;lt;br /&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Piano_automate_Arduino-and-PCA9685-Circuit-Schematic.png&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;l’impression 3D&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;Ouvrez le fichier '''STL''' des supports dans un slicer comme '''Cura''', configurez vos paramètres d’impression, générez le '''G-code''' et imprimez. Vérifiez que les pièces s’adaptent correctement aux servomoteurs avant le montage.&lt;br /&gt;
&lt;br /&gt;
La forme de votre axe de servomoteurs dépendra du piano donc il vaut mieux prendre une pièce .Stl et la multiplier suivant le nombres de moteurs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Voir lien pour model 3D en open source  [https://cults3d.com/fr/mot-clefs/servomoteur?srsltid=AfmBOorozMNpDMna9qxpem_y4irSU10zdUFVG2-up-iLrHlhWLFCDTCX ici .]&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Piano_automate_20251118_180944_1_.jpg&lt;br /&gt;
|Step_Picture_01=Piano_automate_rrr.JPG&lt;br /&gt;
|Step_Picture_02=Piano_automate_n.JPG&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;téléverser le code&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;arduino&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;Wire.h&amp;gt;                          // Bibliothèque pour la communication I2C&lt;br /&gt;
#include &amp;lt;Adafruit_PWMServoDriver.h&amp;gt;       // Bibliothèque pour piloter le PCA9685 (servomoteurs)&lt;br /&gt;
&lt;br /&gt;
// Création d'une instance du module PCA9685 à l'adresse 0x40&lt;br /&gt;
Adafruit_PWMServoDriver pca = Adafruit_PWMServoDriver(0x40);&lt;br /&gt;
&lt;br /&gt;
// Valeurs PWM correspondant aux positions repos et levée des servos&lt;br /&gt;
int SERVOMIN = 100;  // Position repos&lt;br /&gt;
int SERVOMAX = 200;  // Position levée complète&lt;br /&gt;
&lt;br /&gt;
// Valeur pour un mouvement plus puissant (~40°)&lt;br /&gt;
int SERVO_FRAPPE = SERVOMIN + ((SERVOMAX - SERVOMIN) / 4); // Position intermédiaire pour frapper&lt;br /&gt;
&lt;br /&gt;
// Délais utilisés pour frapper et revenir&lt;br /&gt;
#define DELAI_FRAPPE 200      // Durée pour lever le bras du servo&lt;br /&gt;
#define DELAI_RETOUR 250      // Durée pour revenir à la position repos&lt;br /&gt;
#define DELAI_SECURITE 50     // Petite pause pour éviter chevauchement des frappes&lt;br /&gt;
&lt;br /&gt;
// Durées des notes pour le rythme de la musique&lt;br /&gt;
#define NOIRE 350             // Durée d'une noire&lt;br /&gt;
#define CROCHE 175            // Durée d'une croche&lt;br /&gt;
#define BLANCHE 700           // Durée d'une blanche&lt;br /&gt;
&lt;br /&gt;
// Mapping des notes sur les 15 servos (de DO grave à DO aigu)&lt;br /&gt;
#define DO 0&lt;br /&gt;
#define RE 1&lt;br /&gt;
#define MI 2&lt;br /&gt;
#define FA 3&lt;br /&gt;
#define SOL 4&lt;br /&gt;
#define LA 5&lt;br /&gt;
#define SI 6&lt;br /&gt;
#define DO2 7&lt;br /&gt;
#define RE2 8&lt;br /&gt;
#define MI2 9&lt;br /&gt;
#define FA2 10&lt;br /&gt;
#define SOL2 11&lt;br /&gt;
#define LA2 12&lt;br /&gt;
#define SI2 13&lt;br /&gt;
#define DO3 14&lt;br /&gt;
&lt;br /&gt;
// -------- SETUP --------&lt;br /&gt;
void setup() {&lt;br /&gt;
  Serial.begin(115200);                        // Initialisation du port série pour debug&lt;br /&gt;
  Serial.println(&amp;quot;Piano 15 touches - Ne Pleure Pas Jeannette&amp;quot;);&lt;br /&gt;
  &lt;br /&gt;
  pca.begin();                                 // Démarrage du module PCA9685&lt;br /&gt;
  pca.setPWMFreq(50);                          // Fréquence standard servomoteur (50Hz)&lt;br /&gt;
  delay(100);&lt;br /&gt;
  &lt;br /&gt;
  // Initialisation des servos à la position repos&lt;br /&gt;
  Serial.println(&amp;quot;Initialisation des servos...&amp;quot;);&lt;br /&gt;
  for (int i = 0; i &amp;lt; 15; i++) {&lt;br /&gt;
    pca.setPWM(i, 0, SERVOMIN);               // Met chaque servo à la position repos&lt;br /&gt;
    delay(50);                                // Petite pause pour éviter surcharge I2C&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  delay(1000);&lt;br /&gt;
  Serial.println(&amp;quot;Pret! Demarrage dans 2 secondes...&amp;quot;);&lt;br /&gt;
  delay(2000);                                 // Pause avant le début&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// -------- LOOP PRINCIPAL --------&lt;br /&gt;
void loop() {&lt;br /&gt;
  jouerNePleurePasJeannette();                // Appel de la fonction qui joue la musique complète&lt;br /&gt;
  delay(3000);                                 // Pause entre les répétitions de la chanson&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// -------- FONCTIONS DE BASE --------&lt;br /&gt;
&lt;br /&gt;
// Frapper une touche spécifique&lt;br /&gt;
void frapperTouche(int servoNum) {&lt;br /&gt;
  if (servoNum &amp;lt; 0 || servoNum &amp;gt;= 15) return;  // Vérifie que le servo existe&lt;br /&gt;
  &lt;br /&gt;
  Serial.print(&amp;quot;Note: Servo &amp;quot;);&lt;br /&gt;
  Serial.println(servoNum);                     // Affiche dans le moniteur série pour debug&lt;br /&gt;
  &lt;br /&gt;
  pca.setPWM(servoNum, 0, SERVO_FRAPPE);       // Lever le bras du servo pour frapper&lt;br /&gt;
  delay(DELAI_FRAPPE);&lt;br /&gt;
  &lt;br /&gt;
  pca.setPWM(servoNum, 0, SERVOMIN);           // Revenir à la position repos&lt;br /&gt;
  delay(DELAI_RETOUR);&lt;br /&gt;
  delay(DELAI_SECURITE);                        // Pause pour sécurité&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Jouer une note avec sa durée&lt;br /&gt;
void jouerNote(int note, int duree) {&lt;br /&gt;
  frapperTouche(note);                          // Frapper la touche&lt;br /&gt;
  int tempsRestant = duree - (DELAI_FRAPPE + DELAI_RETOUR + DELAI_SECURITE);&lt;br /&gt;
  if (tempsRestant &amp;gt; 0) {&lt;br /&gt;
    delay(tempsRestant);                        // Attendre le reste de la durée de la note&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Silence / pause&lt;br /&gt;
void silence(int duree) {&lt;br /&gt;
  delay(duree);                                 // Simple pause pour un silence&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// -------- MUSIQUE : &amp;quot;Ne pleure pas Jeannette&amp;quot; --------&lt;br /&gt;
void jouerNePleurePasJeannette() {&lt;br /&gt;
  Serial.println(&amp;quot;=== Ne pleure pas Jeannette - Version Etendue ===&amp;quot;);&lt;br /&gt;
  &lt;br /&gt;
  // Introduction - graves (servos 0 à 4)&lt;br /&gt;
  jouerNote(DO, CROCHE);&lt;br /&gt;
  jouerNote(MI, CROCHE);&lt;br /&gt;
  jouerNote(SOL, CROCHE);&lt;br /&gt;
  jouerNote(DO2, CROCHE);&lt;br /&gt;
  &lt;br /&gt;
  // Partie principale - octave moyenne&lt;br /&gt;
  jouerNote(SOL, CROCHE);    &lt;br /&gt;
  jouerNote(SOL, CROCHE);    &lt;br /&gt;
  jouerNote(LA, CROCHE);     &lt;br /&gt;
  jouerNote(SI, CROCHE);     &lt;br /&gt;
  jouerNote(DO2, NOIRE);     &lt;br /&gt;
  jouerNote(SI, NOIRE);      &lt;br /&gt;
  &lt;br /&gt;
  // &amp;quot;Tra la la&amp;quot; - monte vers aigu&lt;br /&gt;
  jouerNote(LA, CROCHE);     &lt;br /&gt;
  jouerNote(SOL, CROCHE);    &lt;br /&gt;
  jouerNote(LA, CROCHE);     &lt;br /&gt;
  jouerNote(SI, CROCHE);     &lt;br /&gt;
  jouerNote(DO2, NOIRE);     &lt;br /&gt;
  jouerNote(RE2, NOIRE);     &lt;br /&gt;
  &lt;br /&gt;
  // Octave haute (servos 7-14)&lt;br /&gt;
  jouerNote(DO2, CROCHE);    &lt;br /&gt;
  jouerNote(RE2, CROCHE);    &lt;br /&gt;
  jouerNote(MI2, CROCHE);    &lt;br /&gt;
  jouerNote(FA2, CROCHE);    &lt;br /&gt;
  jouerNote(SOL2, NOIRE);    &lt;br /&gt;
  jouerNote(FA2, NOIRE);     &lt;br /&gt;
  &lt;br /&gt;
  // Descente rapide&lt;br /&gt;
  jouerNote(MI2, CROCHE);    &lt;br /&gt;
  jouerNote(RE2, CROCHE);    &lt;br /&gt;
  jouerNote(DO2, CROCHE);    &lt;br /&gt;
  jouerNote(SI, CROCHE);     &lt;br /&gt;
  jouerNote(LA, NOIRE);      &lt;br /&gt;
  jouerNote(SOL, NOIRE);     &lt;br /&gt;
  &lt;br /&gt;
  silence(300);               // Petite pause&lt;br /&gt;
  &lt;br /&gt;
  // Interlude - arpège complet&lt;br /&gt;
  jouerNote(DO, CROCHE);&lt;br /&gt;
  jouerNote(RE, CROCHE);&lt;br /&gt;
  jouerNote(MI, CROCHE);&lt;br /&gt;
  jouerNote(FA, CROCHE);&lt;br /&gt;
  jouerNote(SOL, CROCHE);&lt;br /&gt;
  jouerNote(LA, CROCHE);&lt;br /&gt;
  jouerNote(SI, CROCHE);&lt;br /&gt;
  jouerNote(DO2, CROCHE);&lt;br /&gt;
  jouerNote(RE2, CROCHE);&lt;br /&gt;
  jouerNote(MI2, CROCHE);&lt;br /&gt;
  jouerNote(FA2, CROCHE);&lt;br /&gt;
  jouerNote(SOL2, CROCHE);&lt;br /&gt;
  jouerNote(LA2, CROCHE);&lt;br /&gt;
  jouerNote(SI2, CROCHE);&lt;br /&gt;
  jouerNote(DO3, NOIRE);     // Note la plus haute&lt;br /&gt;
  &lt;br /&gt;
  silence(300);               // Petite pause&lt;br /&gt;
  &lt;br /&gt;
  // Refrain&lt;br /&gt;
  jouerNote(SI, CROCHE);     &lt;br /&gt;
  jouerNote(SI, CROCHE);     &lt;br /&gt;
  jouerNote(DO2, CROCHE);    &lt;br /&gt;
  jouerNote(RE2, CROCHE);    &lt;br /&gt;
  jouerNote(MI2, NOIRE);     &lt;br /&gt;
  jouerNote(RE2, NOIRE);     &lt;br /&gt;
  &lt;br /&gt;
  // Descente&lt;br /&gt;
  jouerNote(DO2, CROCHE);    &lt;br /&gt;
  jouerNote(SI, CROCHE);     &lt;br /&gt;
  jouerNote(LA, CROCHE);     &lt;br /&gt;
  jouerNote(SOL, CROCHE);    &lt;br /&gt;
  jouerNote(FA, NOIRE);      &lt;br /&gt;
  jouerNote(MI, NOIRE);      &lt;br /&gt;
  &lt;br /&gt;
  // Finale sur toute l’étendue&lt;br /&gt;
  jouerNote(SOL2, CROCHE);   &lt;br /&gt;
  jouerNote(FA2, CROCHE);    &lt;br /&gt;
  jouerNote(MI2, CROCHE);    &lt;br /&gt;
  jouerNote(RE2, CROCHE);    &lt;br /&gt;
  jouerNote(DO2, CROCHE);    &lt;br /&gt;
  jouerNote(SI, CROCHE);     &lt;br /&gt;
  jouerNote(LA, CROCHE);     &lt;br /&gt;
  jouerNote(SOL, CROCHE);    &lt;br /&gt;
  jouerNote(FA, CROCHE);&lt;br /&gt;
  jouerNote(MI, CROCHE);&lt;br /&gt;
  jouerNote(RE, CROCHE);&lt;br /&gt;
  jouerNote(DO, NOIRE);      // Retour grave&lt;br /&gt;
  &lt;br /&gt;
  silence(NOIRE);            // Petite pause&lt;br /&gt;
  &lt;br /&gt;
  // Final - accord rapide (3 notes simultanées)&lt;br /&gt;
  jouerNote(DO, CROCHE);&lt;br /&gt;
  delay(30);&lt;br /&gt;
  jouerNote(MI, CROCHE);&lt;br /&gt;
  delay(30);&lt;br /&gt;
  jouerNote(SOL, CROCHE);&lt;br /&gt;
  delay(30);&lt;br /&gt;
  jouerNote(DO2, NOIRE);&lt;br /&gt;
  &lt;br /&gt;
  Serial.println(&amp;quot;=== Fin ===&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;Téléverser le code arduino&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;*'''Installer le logiciel Arduino IDE'''  Téléchargez et installez l’'''Arduino IDE''' sur votre ordinateur (Windows / macOS / Linux). Cela vous permettra d’écrire, de vérifier et de téléverser votre code.&lt;br /&gt;
*'''Ouvrir votre code'''  Lancez l’IDE Arduino et ouvrez votre fichier '''.ino''' contenant le code de votre piano automatisé.&lt;br /&gt;
*'''Connecter l’Arduino'''  Branchez votre '''Arduino Uno ou clone''' à l’ordinateur avec un '''câble USB‑A''' (assurez‑vous que c’est un '''câble de données''', pas seulement de charge).&lt;br /&gt;
*'''Sélectionner la carte et le port'''&lt;br /&gt;
**Dans le menu '''Outils → Carte''', choisissez '''Arduino Uno''' (ou la version compatible de votre clone).&lt;br /&gt;
**Ensuite, allez dans '''Outils → Port''' et sélectionnez le port COM ou USB auquel votre carte est connectée.&lt;br /&gt;
*'''Vérifier le code'''   Avant de téléverser, cliquez sur le bouton '''Vérifier''' (icône avec une coche) pour compiler le code et détecter d’éventuelles erreurs.&lt;br /&gt;
*'''Téléverser le code'''  Appuyez sur le bouton '''Téléverser''' (icône avec une flèche vers la droite). L’IDE va compiler puis envoyer automatiquement le code à la carte. Les LED '''RX / TX''' de l’Arduino clignoteront pendant l’envoi, puis votre sketch commencera à s’exécuter une fois le téléversement terminé.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Piano_automate_fff.JPG&lt;br /&gt;
}}&lt;br /&gt;
{{Notes&lt;br /&gt;
|Notes=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{PageLang&lt;br /&gt;
|Language=fr&lt;br /&gt;
|SourceLanguage=none&lt;br /&gt;
|IsTranslation=0&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Status&lt;br /&gt;
|Complete=Draft&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Enguerrand Justafré</name></author>
		
	</entry>
	<entry>
		<id>https://wikifab.org/w/index.php?title=Piano_automate&amp;diff=304525</id>
		<title>Piano automate</title>
		<link rel="alternate" type="text/html" href="https://wikifab.org/w/index.php?title=Piano_automate&amp;diff=304525"/>
		<updated>2026-01-11T22:33:40Z</updated>

		<summary type="html">&lt;p&gt;Enguerrand Justafré : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Tuto Details&lt;br /&gt;
|Licences=Attribution (CC BY)&lt;br /&gt;
|Description=&amp;lt;translate&amp;gt;Ce projet consiste en l’automatisation d’un mini-piano grâce à 15 servomoteurs alignés sur les touches, contrôlés par un Arduino. Chaque servomoteur actionne une touche, permettant de jouer des mélodies programmées de façon électronique. C’est une fusion entre électronique, programmation et musique DIY.&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Area=Art, Electronics, Music and Sound, Play and Hobbies, Robotics&lt;br /&gt;
|Type=Technique&lt;br /&gt;
|Difficulty=Medium&lt;br /&gt;
|Duration=5&lt;br /&gt;
|Duration-type=hour(s)&lt;br /&gt;
|Cost=20&lt;br /&gt;
|Currency=EUR (€)&lt;br /&gt;
|Tags=Arduino, Piano automatisé, Électronique, Servomoteur, Solénoïde, MIDI, Programmation, DIY, Robotique musicale&lt;br /&gt;
}}&lt;br /&gt;
{{Introduction&lt;br /&gt;
|Introduction=&amp;lt;translate&amp;gt;Ce projet automatise un mini-piano avec 15 servomoteurs contrôlés par un Arduino. Chaque servomoteur actionne une touche, permettant de jouer des mélodies programmées. Le tutoriel couvre &amp;lt;u&amp;gt;le matériel&amp;lt;/u&amp;gt;, &amp;lt;u&amp;gt;le câblage&amp;lt;/u&amp;gt;, &amp;lt;u&amp;gt;l’alimentation&amp;lt;/u&amp;gt;, &amp;lt;u&amp;gt;l’impression 3D des supports et le téléversement du code&amp;lt;/u&amp;gt;.&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Materials&lt;br /&gt;
|Step_Picture_00=Robot_nettoyeur_de_microbilles_plastiques_arduino.jpg&lt;br /&gt;
|Step_Picture_01=Mur_d_escalade_inclinable_et_programmable_V_rin_Mur_d_escalade_inclinable_et_personalisable_nm_cable-front.jpg&lt;br /&gt;
|Step_Picture_02=Syst_me_d_entrainement_pour_ping_pong_servomoteur.png&lt;br /&gt;
|Step_Picture_03=Piano_automate_16-Kanal-12Bit-PWM-Servomotor-Treiber-I2C-PCA9685-side_600x600.png&lt;br /&gt;
|Step_Picture_04=Concentrateur_solaire_likes_cable.png&lt;br /&gt;
|Material=&amp;lt;translate&amp;gt;'''Matériel nécessaire'''&lt;br /&gt;
&lt;br /&gt;
*Arduino Uno&lt;br /&gt;
*PCA9685 (module pilote de servomoteurs)&lt;br /&gt;
*15 servomoteurs&lt;br /&gt;
*Câble USB-A&lt;br /&gt;
*Câbles Dupont&lt;br /&gt;
*Alimentation 6V&lt;br /&gt;
*Supports imprimés en 3D pour servomoteurs&lt;br /&gt;
*Vis et écrous pour fixation&lt;br /&gt;
*Colle ou ruban adhésif double-face (optionnel, pour maintenir certains éléments)&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Tools=&amp;lt;translate&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
 '''Outils nécessaires'''&lt;br /&gt;
&lt;br /&gt;
* Ordinateur (pour programmer l’Arduino)&lt;br /&gt;
* Logiciel Arduino IDE&lt;br /&gt;
* Imprimante 3D (pour les supports des servomoteurs)&lt;br /&gt;
* Tournevis (pour vis et écrous)&lt;br /&gt;
* Pince coupante / pince à dénuder (pour câbles Dupont)&lt;br /&gt;
* Multimètre (optionnel, pour vérifier alimentation et câblage)&lt;br /&gt;
* Fer à souder et étain (optionnel, si certains câbles nécessitent une soudure)&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;le câblage et alimentation&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;*'''Alimentation des servomoteurs'''&lt;br /&gt;
**Connectez le '''+6V''' de votre alimentation externe à la broche '''V+''' du PCA9685.&lt;br /&gt;
**Connectez la '''masse (GND)''' de l’alimentation à la broche '''GND''' du PCA9685.&lt;br /&gt;
*'''Connexion I2C PCA9685 → Arduino'''&lt;br /&gt;
**Reliez la broche '''SDA''' du PCA9685 à la broche '''A4''' de l’Arduino Uno.&lt;br /&gt;
**Reliez la broche '''SCL''' du PCA9685 à la broche '''A5''' de l’Arduino Uno.&lt;br /&gt;
**Reliez également la '''GND''' du PCA9685 à la '''GND''' de l’Arduino pour partager la masse.&lt;br /&gt;
*'''Connexion des servomoteurs au PCA9685'''&lt;br /&gt;
**Chaque servomoteur a trois fils : '''VCC (+)''', '''GND (-)''' et '''signal'''.&lt;br /&gt;
**Branchez '''VCC''' à '''V+''' du PCA9685, '''GND''' à '''GND''' du PCA9685.&lt;br /&gt;
**Branchez le fil '''signal''' de chaque servomoteur à un canal de sortie du PCA9685&lt;br /&gt;
{{Warning|...L’alimentation des servomoteurs est critique : ne les alimentez jamais directement depuis l’Arduino, car cela pourrait endommager la carte. Utilisez toujours une source externe 6V capable de fournir suffisamment de courant pour tous les servomoteurs. Vérifiez que toutes les masses (GND) sont reliées entre elles pour éviter des différences de potentiel pouvant provoquer des comportements imprévisibles ou des dommages électroniques. Débranchez l’alimentation avant toute modification du câblage et évitez les courts-circuits lors de l’assemblage.}}&amp;lt;br /&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Piano_automate_Arduino-and-PCA9685-Circuit-Schematic.png&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;l’impression 3D&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;Ouvrez le fichier '''STL''' des supports dans un slicer comme '''Cura''', configurez vos paramètres d’impression, générez le '''G-code''' et imprimez. Vérifiez que les pièces s’adaptent correctement aux servomoteurs avant le montage.&lt;br /&gt;
&lt;br /&gt;
La forme de votre axe de servomoteurs dépendra du piano donc il vaut mieux prendre une pièce .Stl et la multiplier suivant le nombres de moteurs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Voir lien pour model 3D en open source  [https://cults3d.com/fr/mot-clefs/servomoteur?srsltid=AfmBOorozMNpDMna9qxpem_y4irSU10zdUFVG2-up-iLrHlhWLFCDTCX ici .]&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Piano_automate_20251118_180944_1_.jpg&lt;br /&gt;
|Step_Picture_01=Piano_automate_rrr.JPG&lt;br /&gt;
|Step_Picture_02=Piano_automate_n.JPG&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;Téléverser le code arduino&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;*'''Installer le logiciel Arduino IDE'''  Téléchargez et installez l’'''Arduino IDE''' sur votre ordinateur (Windows / macOS / Linux). Cela vous permettra d’écrire, de vérifier et de téléverser votre code.&lt;br /&gt;
*'''Ouvrir votre code'''  Lancez l’IDE Arduino et ouvrez votre fichier '''.ino''' contenant le code de votre piano automatisé.&lt;br /&gt;
*'''Connecter l’Arduino'''  Branchez votre '''Arduino Uno ou clone''' à l’ordinateur avec un '''câble USB‑A''' (assurez‑vous que c’est un '''câble de données''', pas seulement de charge).&lt;br /&gt;
*'''Sélectionner la carte et le port'''&lt;br /&gt;
**Dans le menu '''Outils → Carte''', choisissez '''Arduino Uno''' (ou la version compatible de votre clone).&lt;br /&gt;
**Ensuite, allez dans '''Outils → Port''' et sélectionnez le port COM ou USB auquel votre carte est connectée.&lt;br /&gt;
*'''Vérifier le code'''   Avant de téléverser, cliquez sur le bouton '''Vérifier''' (icône avec une coche) pour compiler le code et détecter d’éventuelles erreurs.&lt;br /&gt;
*'''Téléverser le code'''  Appuyez sur le bouton '''Téléverser''' (icône avec une flèche vers la droite). L’IDE va compiler puis envoyer automatiquement le code à la carte. Les LED '''RX / TX''' de l’Arduino clignoteront pendant l’envoi, puis votre sketch commencera à s’exécuter une fois le téléversement terminé.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Piano_automate_fff.JPG&lt;br /&gt;
}}&lt;br /&gt;
{{Notes&lt;br /&gt;
|Notes=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{PageLang&lt;br /&gt;
|Language=fr&lt;br /&gt;
|SourceLanguage=none&lt;br /&gt;
|IsTranslation=0&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Status&lt;br /&gt;
|Complete=Draft&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Enguerrand Justafré</name></author>
		
	</entry>
	<entry>
		<id>https://wikifab.org/w/index.php?title=Fichier:Piano_automate_fff.JPG&amp;diff=304524</id>
		<title>Fichier:Piano automate fff.JPG</title>
		<link rel="alternate" type="text/html" href="https://wikifab.org/w/index.php?title=Fichier:Piano_automate_fff.JPG&amp;diff=304524"/>
		<updated>2026-01-11T22:24:05Z</updated>

		<summary type="html">&lt;p&gt;Enguerrand Justafré : Piano_automate_fff&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Piano_automate_fff&lt;/div&gt;</summary>
		<author><name>Enguerrand Justafré</name></author>
		
	</entry>
	<entry>
		<id>https://wikifab.org/w/index.php?title=Fichier:Piano_automate_n.JPG&amp;diff=304522</id>
		<title>Fichier:Piano automate n.JPG</title>
		<link rel="alternate" type="text/html" href="https://wikifab.org/w/index.php?title=Fichier:Piano_automate_n.JPG&amp;diff=304522"/>
		<updated>2026-01-11T22:17:07Z</updated>

		<summary type="html">&lt;p&gt;Enguerrand Justafré : Piano_automate_n&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Piano_automate_n&lt;/div&gt;</summary>
		<author><name>Enguerrand Justafré</name></author>
		
	</entry>
	<entry>
		<id>https://wikifab.org/w/index.php?title=Fichier:Piano_automate_rrr.JPG&amp;diff=304521</id>
		<title>Fichier:Piano automate rrr.JPG</title>
		<link rel="alternate" type="text/html" href="https://wikifab.org/w/index.php?title=Fichier:Piano_automate_rrr.JPG&amp;diff=304521"/>
		<updated>2026-01-11T22:17:06Z</updated>

		<summary type="html">&lt;p&gt;Enguerrand Justafré : Piano_automate_rrr&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Piano_automate_rrr&lt;/div&gt;</summary>
		<author><name>Enguerrand Justafré</name></author>
		
	</entry>
	<entry>
		<id>https://wikifab.org/w/index.php?title=Fichier:Piano_automate_20251118_180944_1_.jpg&amp;diff=304520</id>
		<title>Fichier:Piano automate 20251118 180944 1 .jpg</title>
		<link rel="alternate" type="text/html" href="https://wikifab.org/w/index.php?title=Fichier:Piano_automate_20251118_180944_1_.jpg&amp;diff=304520"/>
		<updated>2026-01-11T22:12:21Z</updated>

		<summary type="html">&lt;p&gt;Enguerrand Justafré : Piano_automate_20251118_180944_1_&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Piano_automate_20251118_180944_1_&lt;/div&gt;</summary>
		<author><name>Enguerrand Justafré</name></author>
		
	</entry>
	<entry>
		<id>https://wikifab.org/w/index.php?title=Piano_automate&amp;diff=304519</id>
		<title>Piano automate</title>
		<link rel="alternate" type="text/html" href="https://wikifab.org/w/index.php?title=Piano_automate&amp;diff=304519"/>
		<updated>2026-01-11T22:04:48Z</updated>

		<summary type="html">&lt;p&gt;Enguerrand Justafré : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Tuto Details&lt;br /&gt;
|Licences=Attribution (CC BY)&lt;br /&gt;
|Description=&amp;lt;translate&amp;gt;Ce projet consiste en l’automatisation d’un mini-piano grâce à 15 servomoteurs alignés sur les touches, contrôlés par un Arduino. Chaque servomoteur actionne une touche, permettant de jouer des mélodies programmées de façon électronique. C’est une fusion entre électronique, programmation et musique DIY.&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Area=Art, Electronics, Music and Sound, Play and Hobbies, Robotics&lt;br /&gt;
|Type=Technique&lt;br /&gt;
|Difficulty=Medium&lt;br /&gt;
|Duration=5&lt;br /&gt;
|Duration-type=hour(s)&lt;br /&gt;
|Cost=20&lt;br /&gt;
|Currency=EUR (€)&lt;br /&gt;
|Tags=Arduino, Piano automatisé, Électronique, Servomoteur, Solénoïde, MIDI, Programmation, DIY, Robotique musicale&lt;br /&gt;
}}&lt;br /&gt;
{{Introduction&lt;br /&gt;
|Introduction=&amp;lt;translate&amp;gt;Ce projet automatise un mini-piano avec 15 servomoteurs contrôlés par un Arduino. Chaque servomoteur actionne une touche, permettant de jouer des mélodies programmées. Le tutoriel couvre &amp;lt;u&amp;gt;le matériel&amp;lt;/u&amp;gt;, &amp;lt;u&amp;gt;le câblage&amp;lt;/u&amp;gt;, &amp;lt;u&amp;gt;l’alimentation&amp;lt;/u&amp;gt;, &amp;lt;u&amp;gt;l’impression 3D des supports et le téléversement du code&amp;lt;/u&amp;gt;.&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Materials&lt;br /&gt;
|Step_Picture_00=Robot_nettoyeur_de_microbilles_plastiques_arduino.jpg&lt;br /&gt;
|Step_Picture_01=Mur_d_escalade_inclinable_et_programmable_V_rin_Mur_d_escalade_inclinable_et_personalisable_nm_cable-front.jpg&lt;br /&gt;
|Step_Picture_02=Syst_me_d_entrainement_pour_ping_pong_servomoteur.png&lt;br /&gt;
|Step_Picture_03=Piano_automate_16-Kanal-12Bit-PWM-Servomotor-Treiber-I2C-PCA9685-side_600x600.png&lt;br /&gt;
|Step_Picture_04=Concentrateur_solaire_likes_cable.png&lt;br /&gt;
|Material=&amp;lt;translate&amp;gt;'''Matériel nécessaire'''&lt;br /&gt;
&lt;br /&gt;
*Arduino Uno&lt;br /&gt;
*PCA9685 (module pilote de servomoteurs)&lt;br /&gt;
*15 servomoteurs&lt;br /&gt;
*Câble USB-A&lt;br /&gt;
*Câbles Dupont&lt;br /&gt;
*Alimentation 6V&lt;br /&gt;
*Supports imprimés en 3D pour servomoteurs&lt;br /&gt;
*Vis et écrous pour fixation&lt;br /&gt;
*Colle ou ruban adhésif double-face (optionnel, pour maintenir certains éléments)&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Tools=&amp;lt;translate&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
 '''Outils nécessaires'''&lt;br /&gt;
&lt;br /&gt;
* Ordinateur (pour programmer l’Arduino)&lt;br /&gt;
* Logiciel Arduino IDE&lt;br /&gt;
* Imprimante 3D (pour les supports des servomoteurs)&lt;br /&gt;
* Tournevis (pour vis et écrous)&lt;br /&gt;
* Pince coupante / pince à dénuder (pour câbles Dupont)&lt;br /&gt;
* Multimètre (optionnel, pour vérifier alimentation et câblage)&lt;br /&gt;
* Fer à souder et étain (optionnel, si certains câbles nécessitent une soudure)&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;le câblage et alimentation&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;*'''Alimentation des servomoteurs'''&lt;br /&gt;
**Connectez le '''+6V''' de votre alimentation externe à la broche '''V+''' du PCA9685.&lt;br /&gt;
**Connectez la '''masse (GND)''' de l’alimentation à la broche '''GND''' du PCA9685.&lt;br /&gt;
*'''Connexion I2C PCA9685 → Arduino'''&lt;br /&gt;
**Reliez la broche '''SDA''' du PCA9685 à la broche '''A4''' de l’Arduino Uno.&lt;br /&gt;
**Reliez la broche '''SCL''' du PCA9685 à la broche '''A5''' de l’Arduino Uno.&lt;br /&gt;
**Reliez également la '''GND''' du PCA9685 à la '''GND''' de l’Arduino pour partager la masse.&lt;br /&gt;
*'''Connexion des servomoteurs au PCA9685'''&lt;br /&gt;
**Chaque servomoteur a trois fils : '''VCC (+)''', '''GND (-)''' et '''signal'''.&lt;br /&gt;
**Branchez '''VCC''' à '''V+''' du PCA9685, '''GND''' à '''GND''' du PCA9685.&lt;br /&gt;
**Branchez le fil '''signal''' de chaque servomoteur à un canal de sortie du PCA9685&lt;br /&gt;
{{Warning|...L’alimentation des servomoteurs est critique : ne les alimentez jamais directement depuis l’Arduino, car cela pourrait endommager la carte. Utilisez toujours une source externe 6V capable de fournir suffisamment de courant pour tous les servomoteurs. Vérifiez que toutes les masses (GND) sont reliées entre elles pour éviter des différences de potentiel pouvant provoquer des comportements imprévisibles ou des dommages électroniques. Débranchez l’alimentation avant toute modification du câblage et évitez les courts-circuits lors de l’assemblage.}}&amp;lt;br /&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Piano_automate_Arduino-and-PCA9685-Circuit-Schematic.png&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;l’impression 3D&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;Ouvrez le fichier '''STL''' des supports dans un slicer comme '''Cura''', configurez vos paramètres d’impression, générez le '''G-code''' et imprimez. Vérifiez que les pièces s’adaptent correctement aux servomoteurs avant le montage.&lt;br /&gt;
&lt;br /&gt;
La forme de votre axe de servomoteurs dépendra du piano donc il vaut mieux prendre une pièce .Stl et la multiplier suivant le nombres de moteurs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Voir lien pour model 3D en open source  [https://cults3d.com/fr/mot-clefs/servomoteur?srsltid=AfmBOorozMNpDMna9qxpem_y4irSU10zdUFVG2-up-iLrHlhWLFCDTCX ici .]&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;l’impression 3D&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Notes&lt;br /&gt;
|Notes=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{PageLang&lt;br /&gt;
|Language=fr&lt;br /&gt;
|SourceLanguage=none&lt;br /&gt;
|IsTranslation=0&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Status&lt;br /&gt;
|Complete=Draft&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Enguerrand Justafré</name></author>
		
	</entry>
	<entry>
		<id>https://wikifab.org/w/index.php?title=Piano_automate&amp;diff=304518</id>
		<title>Piano automate</title>
		<link rel="alternate" type="text/html" href="https://wikifab.org/w/index.php?title=Piano_automate&amp;diff=304518"/>
		<updated>2026-01-11T21:54:57Z</updated>

		<summary type="html">&lt;p&gt;Enguerrand Justafré : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Tuto Details&lt;br /&gt;
|Licences=Attribution (CC BY)&lt;br /&gt;
|Description=&amp;lt;translate&amp;gt;Ce projet consiste en l’automatisation d’un mini-piano grâce à 15 servomoteurs alignés sur les touches, contrôlés par un Arduino. Chaque servomoteur actionne une touche, permettant de jouer des mélodies programmées de façon électronique. C’est une fusion entre électronique, programmation et musique DIY.&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Area=Art, Electronics, Music and Sound, Play and Hobbies, Robotics&lt;br /&gt;
|Type=Technique&lt;br /&gt;
|Difficulty=Medium&lt;br /&gt;
|Duration=5&lt;br /&gt;
|Duration-type=hour(s)&lt;br /&gt;
|Cost=20&lt;br /&gt;
|Currency=EUR (€)&lt;br /&gt;
|Tags=Arduino, Piano automatisé, Électronique, Servomoteur, Solénoïde, MIDI, Programmation, DIY, Robotique musicale&lt;br /&gt;
}}&lt;br /&gt;
{{Introduction&lt;br /&gt;
|Introduction=&amp;lt;translate&amp;gt;Ce projet automatise un mini-piano avec 15 servomoteurs contrôlés par un Arduino. Chaque servomoteur actionne une touche, permettant de jouer des mélodies programmées. Le tutoriel couvre &amp;lt;u&amp;gt;le matériel&amp;lt;/u&amp;gt;, &amp;lt;u&amp;gt;le câblage&amp;lt;/u&amp;gt;, &amp;lt;u&amp;gt;l’alimentation&amp;lt;/u&amp;gt;, &amp;lt;u&amp;gt;l’impression 3D des supports et le téléversement du code&amp;lt;/u&amp;gt;.&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Materials&lt;br /&gt;
|Step_Picture_00=Robot_nettoyeur_de_microbilles_plastiques_arduino.jpg&lt;br /&gt;
|Step_Picture_01=Mur_d_escalade_inclinable_et_programmable_V_rin_Mur_d_escalade_inclinable_et_personalisable_nm_cable-front.jpg&lt;br /&gt;
|Step_Picture_02=Syst_me_d_entrainement_pour_ping_pong_servomoteur.png&lt;br /&gt;
|Step_Picture_03=Piano_automate_16-Kanal-12Bit-PWM-Servomotor-Treiber-I2C-PCA9685-side_600x600.png&lt;br /&gt;
|Step_Picture_04=Concentrateur_solaire_likes_cable.png&lt;br /&gt;
|Material=&amp;lt;translate&amp;gt;'''Matériel nécessaire'''&lt;br /&gt;
&lt;br /&gt;
* Arduino Uno&lt;br /&gt;
* PCA9685 (module pilote de servomoteurs)&lt;br /&gt;
* 15 servomoteurs&lt;br /&gt;
* Câble USB-A&lt;br /&gt;
* Câbles Dupont&lt;br /&gt;
* Alimentation 6V&lt;br /&gt;
* Supports imprimés en 3D pour servomoteurs&lt;br /&gt;
* Vis et écrous pour fixation&lt;br /&gt;
* Colle ou ruban adhésif double-face (optionnel, pour maintenir certains éléments)&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Tools=&amp;lt;translate&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
 '''Outils nécessaires'''&lt;br /&gt;
&lt;br /&gt;
* Ordinateur (pour programmer l’Arduino)&lt;br /&gt;
* Logiciel Arduino IDE&lt;br /&gt;
* Imprimante 3D (pour les supports des servomoteurs)&lt;br /&gt;
* Tournevis (pour vis et écrous)&lt;br /&gt;
* Pince coupante / pince à dénuder (pour câbles Dupont)&lt;br /&gt;
* Multimètre (optionnel, pour vérifier alimentation et câblage)&lt;br /&gt;
* Fer à souder et étain (optionnel, si certains câbles nécessitent une soudure)&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;le câblage&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;*'''Alimentation des servomoteurs'''&lt;br /&gt;
**Connectez le '''+6V''' de votre alimentation externe à la broche '''V+''' du PCA9685.&lt;br /&gt;
**Connectez la '''masse (GND)''' de l’alimentation à la broche '''GND''' du PCA9685.&lt;br /&gt;
*'''Connexion I2C PCA9685 → Arduino'''&lt;br /&gt;
**Reliez la broche '''SDA''' du PCA9685 à la broche '''A4''' de l’Arduino Uno.&lt;br /&gt;
**Reliez la broche '''SCL''' du PCA9685 à la broche '''A5''' de l’Arduino Uno.&lt;br /&gt;
**Reliez également la '''GND''' du PCA9685 à la '''GND''' de l’Arduino pour partager la masse.&lt;br /&gt;
*'''Connexion des servomoteurs au PCA9685'''&lt;br /&gt;
**Chaque servomoteur a trois fils : '''VCC (+)''', '''GND (-)''' et '''signal'''.&lt;br /&gt;
**Branchez '''VCC''' à '''V+''' du PCA9685, '''GND''' à '''GND''' du PCA9685.&lt;br /&gt;
**Branchez le fil '''signal''' de chaque servomoteur à un canal de sortie du PCA9685&lt;br /&gt;
{{Warning|...L’alimentation des servomoteurs est critique : ne les alimentez jamais directement depuis l’Arduino, car cela pourrait endommager la carte. Utilisez toujours une source externe 6V capable de fournir suffisamment de courant pour tous les servomoteurs. Vérifiez que toutes les masses (GND) sont reliées entre elles pour éviter des différences de potentiel pouvant provoquer des comportements imprévisibles ou des dommages électroniques. Débranchez l’alimentation avant toute modification du câblage et évitez les courts-circuits lors de l’assemblage.}}&amp;lt;br /&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Picture_00=Piano_automate_Arduino-and-PCA9685-Circuit-Schematic.png&lt;br /&gt;
}}&lt;br /&gt;
{{Notes&lt;br /&gt;
|Notes=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{PageLang&lt;br /&gt;
|Language=fr&lt;br /&gt;
|SourceLanguage=none&lt;br /&gt;
|IsTranslation=0&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Status&lt;br /&gt;
|Complete=Draft&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Enguerrand Justafré</name></author>
		
	</entry>
	<entry>
		<id>https://wikifab.org/w/index.php?title=Fichier:Piano_automate_Arduino-and-PCA9685-Circuit-Schematic.png&amp;diff=304517</id>
		<title>Fichier:Piano automate Arduino-and-PCA9685-Circuit-Schematic.png</title>
		<link rel="alternate" type="text/html" href="https://wikifab.org/w/index.php?title=Fichier:Piano_automate_Arduino-and-PCA9685-Circuit-Schematic.png&amp;diff=304517"/>
		<updated>2026-01-11T21:52:04Z</updated>

		<summary type="html">&lt;p&gt;Enguerrand Justafré : Piano_automate_Arduino-and-PCA9685-Circuit-Schematic&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Piano_automate_Arduino-and-PCA9685-Circuit-Schematic&lt;/div&gt;</summary>
		<author><name>Enguerrand Justafré</name></author>
		
	</entry>
	<entry>
		<id>https://wikifab.org/w/index.php?title=Fichier:Piano_automate_16-Kanal-12Bit-PWM-Servomotor-Treiber-I2C-PCA9685-side_600x600.png&amp;diff=304516</id>
		<title>Fichier:Piano automate 16-Kanal-12Bit-PWM-Servomotor-Treiber-I2C-PCA9685-side 600x600.png</title>
		<link rel="alternate" type="text/html" href="https://wikifab.org/w/index.php?title=Fichier:Piano_automate_16-Kanal-12Bit-PWM-Servomotor-Treiber-I2C-PCA9685-side_600x600.png&amp;diff=304516"/>
		<updated>2026-01-11T21:41:55Z</updated>

		<summary type="html">&lt;p&gt;Enguerrand Justafré : Piano_automate_16-Kanal-12Bit-PWM-Servomotor-Treiber-I2C-PCA9685-side_600x600&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Piano_automate_16-Kanal-12Bit-PWM-Servomotor-Treiber-I2C-PCA9685-side_600x600&lt;/div&gt;</summary>
		<author><name>Enguerrand Justafré</name></author>
		
	</entry>
	<entry>
		<id>https://wikifab.org/w/index.php?title=Piano_automate&amp;diff=304515</id>
		<title>Piano automate</title>
		<link rel="alternate" type="text/html" href="https://wikifab.org/w/index.php?title=Piano_automate&amp;diff=304515"/>
		<updated>2026-01-11T21:37:05Z</updated>

		<summary type="html">&lt;p&gt;Enguerrand Justafré : Page créée avec « {{Tuto Details |Licences=Attribution (CC BY) |Description=&amp;lt;translate&amp;gt;Ce projet consiste en l’automatisation d’un mini-piano grâce à 15 servomoteurs alignés sur les... »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Tuto Details&lt;br /&gt;
|Licences=Attribution (CC BY)&lt;br /&gt;
|Description=&amp;lt;translate&amp;gt;Ce projet consiste en l’automatisation d’un mini-piano grâce à 15 servomoteurs alignés sur les touches, contrôlés par un Arduino. Chaque servomoteur actionne une touche, permettant de jouer des mélodies programmées de façon électronique. C’est une fusion entre électronique, programmation et musique DIY.&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Area=Art, Electronics, Music and Sound, Play and Hobbies, Robotics&lt;br /&gt;
|Type=Technique&lt;br /&gt;
|Difficulty=Medium&lt;br /&gt;
|Duration=5&lt;br /&gt;
|Duration-type=hour(s)&lt;br /&gt;
|Cost=20&lt;br /&gt;
|Currency=EUR (€)&lt;br /&gt;
|Tags=Arduino, Piano automatisé, Électronique, Servomoteur, Solénoïde, MIDI, Programmation, DIY, Robotique musicale&lt;br /&gt;
}}&lt;br /&gt;
{{Introduction&lt;br /&gt;
|Introduction=&amp;lt;translate&amp;gt;Ce projet automatise un mini-piano avec 15 servomoteurs contrôlés par un Arduino. Chaque servomoteur actionne une touche, permettant de jouer des mélodies programmées. Le tutoriel couvre &amp;lt;u&amp;gt;le matériel&amp;lt;/u&amp;gt;, &amp;lt;u&amp;gt;le câblage&amp;lt;/u&amp;gt;, &amp;lt;u&amp;gt;l’alimentation&amp;lt;/u&amp;gt;, &amp;lt;u&amp;gt;l’impression 3D des supports et le téléversement du code&amp;lt;/u&amp;gt;.&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Materials&lt;br /&gt;
|Material=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Tools=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Step&lt;br /&gt;
|Step_Title=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
|Step_Content=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Notes&lt;br /&gt;
|Notes=&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{PageLang&lt;br /&gt;
|SourceLanguage=none&lt;br /&gt;
|IsTranslation=0&lt;br /&gt;
|Language=fr&lt;br /&gt;
}}&lt;br /&gt;
{{Tuto Status&lt;br /&gt;
|Complete=Draft&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Enguerrand Justafré</name></author>
		
	</entry>
</feed>