Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Clavier de piano électronique avec morceaux prédéfinis

Composants et fournitures

Arduino UNO
× 1
Adafruit Standard LCD - 16x2 Blanc sur Bleu
× 1
Interrupteur à bouton-poussoir SparkFun 12mm
× 8
Résistance 220 ohm
× 4
Résistance 560 ohm
× 1
Résistance 1k ohm
× 1
Résistance 4.7K ohm
× 1
Résistance 10k ohm
× 3
Résistance 1M ohm
× 1
Sonnerie
× 1
LED (générique)
× 1
Potentiomètre à un tour - 10k ohms
× 1
Câbles de raccordement (générique)
× 1
Planche à pain (générique)
× 1

À propos de ce projet

Présentation

Pour commencer, je dois vous dire que je suis complètement nouveau dans le monde de l'électronique. J'ai une bonne formation en codage, ce qui m'aide, mais je suis toujours ouvert aux nouvelles idées et suggestions pour tous les projets que j'ai créés.

Récemment, j'en ai appris davantage sur le Piezo Buzzer et le codage impliqué, et c'est ma création basée sur ce que j'ai appris jusqu'à présent. Il y a beaucoup de place pour l'extension avec de nouvelles fonctionnalités ou de nouveaux commutateurs, ce que je prévois de faire plus tard, mais pour l'instant, je passe au prochain défi !

Vous trouverez ci-dessous une vidéo du fonctionnement de l'appareil, y compris le menu des chansons prédéfinies. J'admets que techniquement les chansons 4 et 5 sont les mêmes, mais que puis-je dire, j'ai envie de créer des choses plus grandes et meilleures et écrire le code musical pour plus de chansons n'en faisait pas partie ! Le codage de base des boucles principales et des boucles de chansons individuelles est assez facile à adapter à vos propres idées, alors n'hésitez pas à changer comme bon vous semble.

Voyez-le en action !

Comment configurer le matériel

Les touches du piano...

Les interrupteurs à touches du piano étaient connectés à l'aide d'une échelle de résistances. Les résistances sont placées dans un ordre séquentiel, connectant chaque interrupteur à l'alimentation. Pour mon projet, j'ai choisi d'utiliser (en ohms) 1M, 10k, 4,7K, 1K, 560 et 220.  Le premier interrupteur du piano (à gauche) est connecté à l'alimentation, ainsi qu'au prochain interrupteur du circuit. Le deuxième commutateur est connecté à la plus petite résistance, et chaque commutateur suivant se connecte à la plus grande résistance suivante de la série. Le dernier commutateur met la connexion à la terre via une résistance de 10 kohms et connecte également les 7 commutateurs à la broche "analogique" A0 de l'Arduino. L'esquisse principale définit les fréquences de notes de musique associées à chaque touche de piano. Pour ce projet, j'ai utilisé C4, D4, E4, F4, G4, A4 et B4, C4 étant le commutateur le plus à gauche. Modifiez les valeurs de fréquence ou ajoutez des commutateurs supplémentaires pour personnaliser entièrement votre propre projet !

L'écran LCD...

Connectez les broches LCD selon le schéma de circuit ci-dessous. Connectez la broche LCD 3 au potentiomètre pour le contrôle du contraste de l'écran. Les broches extérieures du potentiomètre sont connectées à l'alimentation et à la terre pour compléter ce circuit. La broche LCD 15 est connectée à l'alimentation via une résistance de 220 ohms. Si l'une de ces broches change sur votre propre projet, mettez à jour le code en conséquence.

Le commutateur de menu...

Connectez le commutateur de menu à l'alimentation et mettez-le à la terre via une résistance de 10K ohms. Ce commutateur doit également être connecté à la broche 7 de l'Arduino afin que vous puissiez le contrôler via le codage.

La LED...

La LED est utilisée pour indiquer lorsque vous êtes en "mode menu", et que les touches du piano ont été désactivées. La lumière LED s'allume une fois que l'interrupteur de menu est enfoncé. Connectez l'anode (positive) de la LED à la broche 6 de l'Arduino et mettez la LED à la terre via une résistance de 220 ohms.

Le buzzer Piezo...

Pour intégrer le Piezo Buzzer, connectez simplement une extrémité à la broche Arduino 8 et l'autre côté à la terre via une résistance de 220 ohms. La fonction "tone" dans le code va chercher cette broche afin de jouer la note appelée.

Comment fonctionne le code

La mise en place...

  • L'esquisse commence par importer les bibliothèques « LiquidCrystal.h » et « pitchs.h » afin que nous puissions en référencer divers éléments plus tard dans le code
  • Ensuite, le code est configuré en définissant un nom pour le commutateur de menu, en déterminant quelles broches sont des entrées par rapport aux sorties et en définissant les valeurs de fréquence pour chacune des 7 touches du piano
  • Un nouvel onglet a été créé pour chaque chanson afin de garder mon code quelque peu organisé et plus facile à comprendre, et de le développer plus tard. Si vous souhaitez supprimer ou ajouter d'autres chansons, assurez-vous simplement de modifier également le code dans l'esquisse principale du "Clavier électronique".

La boucle principale...

  • Le clavier commence avec la LED éteinte et toutes les touches du piano actives
  • Une fois que la boucle détecte que le bouton de menu a été enfoncé, elle désactivera les touches du piano et allumera la LED pour indiquer que vous êtes en "mode menu"

Accès au menu...

  • Appuyez sur le bouton de menu pour parcourir les chansons présentes et appuyez sur l'une des touches du piano pour commencer à jouer la chanson affichée sur l'écran LCD
  • L'écran LCD affichera la chanson en cours de lecture, puis reviendra au même point dans le menu une fois la lecture de la chanson terminée. À partir de là, vous pouvez soit rejouer, soit continuer dans la liste des chansons disponibles.
  • Un double-clic sur le bouton du menu redémarrera le menu depuis le début
  • Pour revenir à l'utilisation des touches du piano, parcourez le reste des chansons dans le menu. Une fois l'écran LCD vide et la LED éteinte, les touches du piano fonctionneront à nouveau.

Code

  • Clavier électronique
  • Chanson1
  • Chanson2
  • Chanson3
  • Chanson4
  • Chanson5
  • emplacements.h
Clavier électroniqueArduino
Le code principal
// Écran LCD, commutateur et configuration LED#include #include "pitchs.h"LiquidCrystal lcd(12, 11, 5, 4, 3, 2);const int LCDswitchPin =7; // définit le nom du commutateur de menu/LCDint LCDswitchState =0; // définit l'état du commutateur de menu/LCD sur off/lowint prevLCDswitchState =0;int blueLED =6;int LCDswitchCounter =0; // compteur du nombre de pressions sur les boutons de menu // (ce code compte les pressions sur les boutons de menu, les affiche sur votre ordinateur, // et recommence à zéro après avoir terminé le "mode menu". n'a actuellement aucun autre effet // sur cette esquisse , mais c'est un bon point de départ pour développer le projet avec // de nouvelles fonctionnalités plus tard // Touches de notes de musique - Définir les valeurs de fréquenceint notes[] ={262, 294, 330, 349, 392, 440, 494} ; // Définir notes do, ré, mi, fa, sol, la, si////////////////////////////////// //////////void setup() { Serial.begin (9600); lcd.begin (16, 2); pinMode (LCDswitchPin, INPUT); pinMode (blueLED, OUTPUT); digitalWrite (blueLED, LOW ); // La LED reste éteinte tant que les touches du piano sont allumées } // terminer la configuration/////////////////////////////// /////////////void loop() { LCDswitchState =digitalRead(LCDswitchPin); int keyVal =analogRead(A0); Serial.println(keyVal); lcd.noDisplay(); digitalWrite(blueLED, LOW); // Éteindre la LED à chaque démarrage de la boucle principale // ************** DÉMARRER "LCDstart" LORSQUE LE BOUTON MENU EST APPUYÉ ******** *** if (LCDswitchState ==HIGH) { digitalWrite(blueLED, HIGH); // Allumez la LED pour montrer que les touches du piano sont désactivées et que l'appareil est en "mode menu" lcd.display(); lcd.clear(); LCDstart(); } // ************************************************* ************************ ////// NOTES SUR LE CLAVIER ET DÉCLARATIONS DE FRÉQUENCE //////// Utilisez l'échelle de résistances que vous avez créée pour changer la tension de chaque touche de piano // 220 ohm =C5 // 560 ohm =D5 // 1K ohm =E5 // etc... if(keyVal ==1023) { tone(8, notes[0]); // C } // fin if else if(keyVal>=990 &keyVal <=1010) { tone(8, notes[1]); // D } // fin else if else if(keyVal>=960 &&keyVal <=980) { tone(8, notes[2]); // E } // fin else if else if(keyVal>=900 &&keyVal <=945) { tone(8, notes[3]); // F } // fin else if else if(keyVal>=650 &&keyVal <=710) { tone(8, notes[4]); // G } // fin else if else if(keyVal>=500 &&keyVal <=550) { tone(8, notes[5]); // A } // fin else if else if(keyVal>=5 &&keyVal <=10) { tone(8, notes[6]); // B } // fin else if else if(keyVal <=1) { // si aucun commutateur n'est enfoncé, ne joue pas le ton noTone(8); } // fin else if} // fin de la boucle de fréquence de tonalité/////////////////////////////////// ////////////////void LCDstart() { int keyVal =analogRead(A0); LCDswitchState =digitalRead(LCDswitchPin); // vérifie l'état du bouton de menu pendant que (LCDswitchState ==LOW) { // continue la boucle tant que le bouton de menu n'est pas enfoncé LCDswitchState =digitalRead(LCDswitchPin); // vérifier l'état du bouton de menu à chaque démarrage de la boucle //************* START SONG 1 TITLE LOOP ******************* * if (LCDswitchState ==HIGH) { // si le bouton de menu est enfoncé, alors... LCDswitchCounter++; // définit le nombre de boutons sur 1 Serial.print("nombre de pressions sur les boutons :"); Serial.println(LCDswitchCounter); retard (300); // min. le temps jusqu'à ce que les comptes ajoutent 1 plus Song1title(); lcd.clear(); Pause; } //****************** ELSE SHOW MENU ************** else { // si le bouton de menu n'est pas enfoncé, alors... LCDswitchCounter=0; // définit le nombre de boutons de menu à 0 lcd.clear(); lcd.setCursor(0, 0); lcd.print("QUELLE CHANSON SERAIT"); lcd.setCursor(0, 1); lcd.print("VOUS AIMEZ JOUER"); retard (50); // retour à main } } // fin while } // fin LCDstart boucle // ************* SONG 1 LOOP STARTS HERE ************* * void Song1title() { int keyVal =analogRead (A0); LCDswitchState =digitalRead(LCDswitchPin); // vérifie à nouveau l'état du bouton de menu tandis que (LCDswitchState ==LOW) { // continue la boucle tant que le bouton de menu n'est pas enfoncé LCDswitchState =digitalRead(LCDswitchPin); // vérifier à nouveau l'état du bouton de menu //************* START SONG 2 TITLE LOOP ******************** if ( LCDswitchState ==HIGH) { // si le bouton de menu est enfoncé, alors... LCDswitchCounter++; // définit le nombre de boutons sur 2 Serial.print("nombre de pressions sur les boutons :"); Serial.println (LCDswitchCounter); retard (300); // min. le temps jusqu'à ce que compte ajoute 1 plus Song2title (); lcd.clear(); Pause; } else { // si le bouton de menu n'est pas enfoncé int keyVal =analogRead(A0); Serial.println(keyVal); if(keyVal>=2) { digitalWrite(blueLED, LOW); Chanson1(); Pause; } // fin si lcd.clear(); lcd.setCursor(0, 0); lcd.print("SUPER MARIO BROS"); lcd.setCursor(0, 1); lcd.print(" THEME CHANSON"); retard (50); } } // termine pendant que la chanson 1 -> 2 } // termine la boucle Song1title// ************* LA BOUCLE DE LA CHANSON 2 COMMENCE ICI ************* * void Song2title() { int keyVal =analogRead (A0); LCDswitchState =digitalRead(LCDswitchPin); // vérifie à nouveau l'état du bouton de menu tandis que (LCDswitchState ==LOW) { // continue la boucle tant que le bouton de menu n'est pas enfoncé LCDswitchState =digitalRead(LCDswitchPin); // vérifier à nouveau l'état du bouton de menu //************* START SONG 3 TITLE LOOP ******************** if ( LCDswitchState ==HIGH) { // si le bouton de menu est enfoncé, alors... LCDswitchCounter++; // définit le nombre de boutons sur 3 Serial.print("nombre de pressions sur les boutons :"); Serial.println (LCDswitchCounter); retard (300); // min. le temps jusqu'à ce que compte ajoute 1 plus Song3title(); lcd.clear(); Pause; } else { // si le bouton de menu n'est pas enfoncé int keyVal =analogRead(A0); Serial.println(keyVal); if(keyVal>=2) { digitalWrite(blueLED, LOW); Chanson2(); Pause; } // fin si lcd.clear(); lcd.setCursor(0, 0); lcd.print("SUPER MARIO BROS"); lcd.setCursor(0, 1); lcd.print("SOUS-MONDE"); retard (50); } } // termine pendant que la chanson 2 -> 3 } // termine la boucle Song2title// ************* LA BOUCLE DE LA CHANSON 3 COMMENCE ICI ************* * void Song3title() { int keyVal =analogRead (A0); LCDswitchState =digitalRead(LCDswitchPin); // vérifie à nouveau l'état du bouton de menu tandis que (LCDswitchState ==LOW) { // continue la boucle tant que le bouton de menu n'est pas enfoncé LCDswitchState =digitalRead(LCDswitchPin); // vérifier à nouveau l'état du bouton de menu //************* START SONG 4 TITLE LOOP ******************** if ( LCDswitchState ==HIGH) { // si le bouton de menu est enfoncé, alors... LCDswitchCounter++; // définit le nombre de boutons sur 4 Serial.print("nombre de pressions sur les boutons :"); Serial.println(LCDswitchCounter); retard (300); // min. le temps jusqu'à ce que compte ajoute 1 plus Song4title(); lcd.clear(); Pause; } else { // si le bouton de menu n'est pas enfoncé int keyVal =analogRead(A0); Serial.println(keyVal); if(keyVal>=2) { digitalWrite(blueLED, LOW); Chanson3(); Pause; } // fin si lcd.clear(); lcd.setCursor(0, 0); lcd.print(" RISQUE "); lcd.setCursor(0, 1); lcd.print(" THEME CHANSON"); retard (50); } } // termine pendant que la chanson 3 -> 4 } // termine la boucle Song3title// ************* LA BOUCLE DE LA CHANSON 4 COMMENCE ICI ************* * void Song4title() { int keyVal =analogRead (A0); LCDswitchState =digitalRead(LCDswitchPin); // vérifie à nouveau l'état du bouton de menu tandis que (LCDswitchState ==LOW) { // continue la boucle tant que le bouton de menu n'est pas enfoncé LCDswitchState =digitalRead(LCDswitchPin); // vérifier à nouveau l'état du bouton de menu //************* START SONG 5 TITLE LOOP ******************** if ( LCDswitchState ==HIGH) { // si le bouton de menu est enfoncé, alors... LCDswitchCounter++; // définit le nombre de boutons sur 5 Serial.print("nombre de pressions sur les boutons :"); Serial.println (LCDswitchCounter); retard (300); // min. le temps jusqu'à ce que compte ajoute 1 plus Song5title(); lcd.clear(); Pause; } else { // si le bouton de menu n'est pas enfoncé int keyVal =analogRead(A0); Serial.println(keyVal); if(keyVal>=2) { digitalWrite(blueLED, LOW); Chanson4(); Pause; } // fin si lcd.clear(); lcd.setCursor(0, 0); lcd.print(" CHANSON 4"); lcd.setCursor(0, 1); lcd.print(" TITRE ICI "); retard (50); } } // termine pendant que la chanson 4 -> 5 } // termine la boucle Song4title// ************* LA BOUCLE DE LA CHANSON 5 COMMENCE ICI ************* * void Song5title() { int keyVal =analogRead (A0); LCDswitchState =digitalRead(LCDswitchPin); // vérifie à nouveau l'état du bouton de menu tandis que (LCDswitchState ==LOW) { // continue la boucle tant que le bouton de menu n'est pas enfoncé LCDswitchState =digitalRead(LCDswitchPin); // vérifier à nouveau l'état du bouton de menu //************* START SONG 4 TITLE LOOP ******************** if ( LCDswitchState ==HIGH) { // si le bouton de menu est enfoncé, alors... LCDswitchCounter=0; // définit le nombre de boutons sur 0 Serial.print("nombre de pressions sur les boutons :"); Serial.println(LCDswitchCounter); retard (300); // min. le temps jusqu'à ce que les comptes ajoutent 1 lcd.clear(); } else { // si le bouton de menu n'est pas enfoncé int keyVal =analogRead(A0); Serial.println(keyVal); if(keyVal>=2) { digitalWrite(blueLED, LOW); Chanson5(); Pause; } // fin si lcd.clear(); lcd.setCursor(0, 0); lcd.print(" CHANSON 5"); lcd.setCursor(0, 1); lcd.print(" TITRE ICI "); retard (50); } } // termine pendant la chanson 4 -> 5 } // termine la boucle Song5title
Song1Arduino
Code pour la 1ère chanson. La chanson thème de Mario Bros est actuellement chargée.
//****************** SONG 1 NOTES HERE ******************* ***********///////////////////////////////////// ////////////////////////////////////////////////////////////// ////////////////////// LE TUTORIEL COMPLET SUR LA CRÉATION DES CHANSONS DE MARIO PEUT ÊTRE TROUVÉ ICI :///////////// //////////////////// http://www.linuxcircle.com/2013/03/31/playing-mario-bros-tune-with-arduino-and -piezo-buzzer/ /////////////////////////////////////////// ////////////////////////////////////////////////////////////// ////////void Song1() { lcd.clear();// notes dans la mélodie:int melody[] ={ NOTE_E7, NOTE_E7, 0, NOTE_E7, 0, NOTE_C7, NOTE_E7, 0, NOTE_G7, 0, 0, 0, NOTE_G6, 0, 0, 0, NOTE_C7, 0, 0, NOTE_G6, 0, 0, NOTE_E6, 0, 0, NOTE_A6, 0, NOTE_B6, 0, NOTE_AS6, NOTE_A6, 0, NOTE_G6, NOTE_E7, NOTE_G7, NOTE_A7, 0, NOTE_F7, NOTE_G7, 0, NOTE_E7, 0, NOTE_C7, NOTE_D7, NOTE_B6, 0, 0, NOTE_C7, 0, 0, NOTE_G6, 0, 0, NOTE_E6, 0, 0, NOTE_A6, 0, NOTE_B6, 0, NOTE_AS6, NOTE_A6, 0, NOTE_G6, NOTE_E7, NOTE_G7 , NOTE_A7, 0, NOTE_F7, NOTE_G7, 0, NOTE_E7, 0, NOTE_C7, NOTE_D7, NOTE_B6, 0, 0} ;// durées des notes :4 =noire, 8 =croche, etc.:int noteDurations[] ={ 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 9, 9, 9, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 9, 9, 9, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,} ; lcd.setCursor(1, 0); lcd.print("En cours de lecture..."); lcd.setCursor(0, 1); lcd.print("CHANSON THÉMATIQUE DE MARIO"); int size =sizeof(melody) / sizeof(int); for (int thisNote =0; thisNote  
Song2Arduino
Code pour la 2ème chanson. La chanson de Mario Bros Underworld est actuellement chargée.
//******************* SONG 2 NOTES HERE ******************* ***********///////////////////////////////////// ////////////////////////////////////////////////////////////// ////////////////////// LE TUTORIEL COMPLET SUR LA CRÉATION DES CHANSONS DE MARIO PEUT ÊTRE TROUVÉ ICI :///////////// //////////////////// http://www.linuxcircle.com/2013/03/31/playing-mario-bros-tune-with-arduino-and -piezo-buzzer/ /////////////////////////////////////////// ////////////////////////////////////////////////////////////// ////////void Song2() { lcd.clear();// notes dans la mélodie:int melody[] ={ NOTE_C4, NOTE_C5, NOTE_A3, NOTE_A4, NOTE_AS3, NOTE_AS4, 0, 0, NOTE_C4, NOTE_C5, NOTE_A3, NOTE_A4, NOTE_AS3, NOTE_AS4, 0, 0, NOTE_F3, NOTE_F4, NOTE_D3, NOTE_D4, NOTE_DS3, NOTE_DS4, 0, 0, NOTE_F3, NOTE_F4, NOTE_D3, NOTE_D4, NOTE_DS3, NOTE_DS4, 0, 0, NOTE_DS4, NOTE_CS NOTE_D4, NOTE_CS4, NOTE_DS4, NOTE_DS4, NOTE_GS3, NOTE_G3, NOTE_CS4, NOTE_C4, NOTE_FS4, NOTE_F4, NOTE_E3, NOTE_AS4, NOTE_A4, NOTE_GS4, NOTE_DS4, NOTE_B3, NOTE_AS3, NOTE_A3, NOTE_GS3, 0, 0, 0} ;// durées des notes :4 =noire, 8 =croche, etc.:int noteDurations[] ={ 12, 12, 12, 12, 12 , 12, 6, 3, 12, 12, 12, 12, 12, 12, 6, 3, 12, 12, 12, 12, 12, 12, 6, 3, 12, 12, 12, 12, 12, 12 , 6, 6, 18, 18, 18, 6, 6, 6, 6, 6, 6, 18, 18, 18, 18, 18, 18, 10, 10, 10, 10, 10, 10, 3, 3 , 3} ; lcd.setCursor(1, 0); lcd.print("En cours de lecture..."); lcd.setCursor(0, 1); lcd.print("MARIO UNDERWORLD"); int size =sizeof(melody) / sizeof(int); for (int thisNote =0; thisNote  
Song3Arduino
Code de la 3ème chanson. La chanson thème Jeopardy est actuellement chargée.
//****************** SONG 3 NOTES HERE ****************** **********void Song3() { lcd.clear();// notes dans la mélodie:int melody[] ={ NOTE_C2, NOTE_F3, NOTE_C3, NOTE_A2, NOTE_A2, NOTE_C3, NOTE_F3, NOTE_C3, NOTE_C3, NOTE_F3, NOTE_C3, NOTE_F3, NOTE_AS3, NOTE_G3, NOTE_F3, NOTE_E3, NOTE_D3, NOTE_CS3, NOTE_C2, NOTE_F3, NOTE_C3, NOTE_A2, NOTE_A2, // répéter les lignes 1 et 2 NOTE_C3, NOTE_F3, NOTE_C3, NOTE_AS3, 0, NOTE_G3, NOTE_F3 , NOTE_E3, NOTE_D3, NOTE_CS3, NOTE_C3} ;// durées des notes :4 =noire, 8 =croche, etc.:int noteDurations[] ={ 4, 4, 4, 8, 8, 4, 4, 2, 4, 4, 4, 4, 3, 8, 8, 8, 8, 8, 4, 4, 4, 8, 8, // répéter les lignes 1 et 2 4, 4, 2, 4, 8, 8, 4 , 4, 4, 4, 4, 4, 0} ; lcd.setCursor(1, 0); lcd.print("En cours de lecture..."); lcd.setCursor(0, 1); lcd.print(" RISQUE "); for (int thisNote =0; noteDurations[thisNote] !=0; thisNote++) { // pour calculer la durée de la note, prenez une seconde // divisée par le type de note. //par exemple. noire =1000/4, croche =1000/8, etc. int noteDuration =2000/noteDurations[thisNote] ; tone(8, melody[thisNote],noteDuration * 0.9); // pour distinguer les notes, définissez un temps minimum entre elles. // la durée de la note + 30% semble bien fonctionner ://int pauseBetweenNotes =noteDuration * 1.30; //delay(pauseBetweenNotes); delay(noteDurée); }Titre3chanson(); } // termine la boucle Song3
Song4Arduino
Code pour la 4ème chanson. A actuellement une courte mélodie générique chargée.
//****************** SONG 4 NOTES HERE *************** ***********void Song4() { lcd.clear();// notes dans la mélodie:int melody[] ={ NOTE_C4, NOTE_G3, NOTE_G3, NOTE_A3, NOTE_G3, 0, NOTE_B3, NOTE_C4 } ;// durées des notes :4 =noire, 8 =croche, etc.:int noteDurations[] ={ 4, 8, 8, 4, 4, 4, 4, 4} ; lcd.setCursor(1, 0); lcd.print("En cours de lecture..."); lcd.setCursor(0, 1); lcd.print(" TITRE DE LA CHANSON 4"); int thisNote =0; // pour calculer la durée de la note, prenez une seconde // divisée par le type de note. //par exemple. noire =1000 / 4, croche =1000/8, etc. pour (int thisNote =0; thisNote <8; thisNote++) { // pour calculer la durée de la note, prenez une seconde // divisée par le type de note. //par exemple. noire =1000 / 4, croche =1000/8, etc. int noteDuration =1000 / noteDurations[thisNote] ; tone(8, melody[thisNote], noteDuration); // pour distinguer les notes, définissez un temps minimum entre elles. // la durée de la note + 30% semble bien fonctionner :int pauseBetweenNotes =noteDuration * 1.30; delay(pauseBetweenNotes); pas de tonalité(8) ; // arrête la lecture du son :} // end forSong4title(); } // termine la boucle Song4
Song5Arduino
Code pour la 5ème chanson. A actuellement une courte mélodie générique chargée.
//****************** SONG 5 NOTES HERE *************** ***********void Song5() { lcd.clear();// notes dans la mélodie:int melody[] ={ NOTE_C4, NOTE_G3, NOTE_G3, NOTE_A3, NOTE_G3, 0, NOTE_B3, NOTE_C4 } ;// durées des notes :4 =noire, 8 =croche, etc.:int noteDurations[] ={ 4, 8, 8, 4, 4, 4, 4, 4} ; lcd.setCursor(1, 0); lcd.print("En cours de lecture..."); lcd.setCursor(0, 1); lcd.print(" TITRE DE LA CHANSON 5"); int thisNote =0; // pour calculer la durée de la note, prenez une seconde // divisée par le type de note. //par exemple. noire =1000 / 4, croche =1000/8, etc. pour (int thisNote =0; thisNote <8; thisNote++) { // pour calculer la durée de la note, prenez une seconde // divisée par le type de note. //par exemple. noire =1000 / 4, croche =1000/8, etc. int noteDuration =1000 / noteDurations[thisNote] ; tone(8, melody[thisNote], noteDuration); // pour distinguer les notes, définissez un temps minimum entre elles. // la durée de la note + 30% semble bien fonctionner :int pauseBetweenNotes =noteDuration * 1.30; delay(pauseBetweenNotes); pas de tonalité(8) ; // arrête la lecture du son :} // end forSong5title(); } // termine la boucle Song5
pitchs.hArduino
Bibliothèque de notes de musique pour les chansons. Enregistrez dans le même dossier que vos autres croquis de clavier/chanson.
//************************************ *******************//** DÉFINIR DES NOTES DE MUSIQUE//************************ *************************#define NOTE_B0 31#define NOTE_C1 33#define NOTE_CS1 35#define NOTE_D1 37#define NOTE_DS1 39#define NOTE_E1 41# define NOTE_F1 44#define NOTE_FS1 46#define NOTE_G1 49#define NOTE_GS1 52#define NOTE_A1 55#define NOTE_AS1 58#define NOTE_B1 62#define NOTE_C2 65#define NOTE_CS2 69#define NOTE_D2 73#define NOTE_DS2 78#define NOTE_E_2 82#define 87#define NOTE_FS2 93#define NOTE_G2 98#define NOTE_GS2 104#define NOTE_A2 110#define NOTE_AS2 117#define NOTE_B2 123#define NOTE_C3 131#define NOTE_CS3 139#define NOTE_D3 147#define NOTE_DS3#75#define NOTE_E_ NOTE_F3#define define NOTE_FS3 185#define NOTE_G3 196#define NOTE_GS3 208#define NOTE_A3 220#define NOTE_AS3 233#define NOTE_B3 247#define NOTE_C4 262#define NOTE_CS4 277#define NOTE_D4 294#define NOTE_DS4 311#define# NOTE_E_ NOTEF 330 349#define NOTE_FS4 370#define NOTE_G4 392#define NOTE_GS4 415#define NOTE_A4 440#define NOTE_AS4 466#define NOTE_B4 494#define NOTE_C5 523#define NOTE_CS5 554#define NOTE_D5 587#define NOTE_DS5 622# 6define#F define NOTE_FS5 740#define NOTE_G5 784#define NOTE_GS5 831#define NOTE_A5 880#define NOTE_AS5 932#define NOTE_B5 988#define NOTE_C6 1047#define NOTE_CS6 1109#define NOTE_D6 1175#define NOTE_DS6 13#1245#define# NOTE_Edefine 131919 1480#define NOTE_G6 1568#define NOTE_GS6 1661#define NOTE_A6 1760#define NOTE_AS6 1865#define NOTE_B6 1976#define NOTE_C7 2093#define NOTE_CS7 2217#define NOTE_D7 2349#define NOTE_DS7 2489#define NOTE_E7 267#define NOTE_E7 267#define NOTE_F60 define NOTE_G7 3136#define NOTE_GS7 3322#define NOTE_A7 3520#define NOTE_AS7 3729#define NOTE_B7 3951#define NOTE_C8 4186#define NOTE_CS8 4435#define NOTE_D8 4699#define NOTE_DS8 4978

Schémas


Processus de fabrication

  1. Premiers pas avec TJBot
  2. Alarme de soif d'usine
  3. Horloge de mots italienne
  4. Arduino + LED + Clavier MIDI + MuseScore =Tuteur de piano
  5. Capteur d'obstacles simple avec Arduino
  6. Compteur kWh Sigfox
  7. Moniteur de température Bluetooth
  8. Mini radio stéréo avec RDA5807
  9. Mesurez votre temps de réaction