Table des matières:
- Étape 1: convertir la partition musicale en notes numériques: valeurs de délai
- Étape 2: Convertir la partition musicale en notes numériques: valeurs Hertz
- Étape 3: Conception de circuits
- Étape 4: Téléchargement de code: mode d'emploi
- Étape 5: Téléchargement de code: qu'est-ce que tout cela signifie ?
- Étape 6: Terminé !
Vidéo: Numériser une chanson avec Arduino : 6 étapes
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:09
Je voulais créer un projet qui combine deux de mes matières préférées: la science et la musique. J'ai pensé à toutes les façons dont je pourrais combiner ces deux domaines, et, j'ai pensé qu'il serait intéressant de faire jouer à un Arduino Fur Elise tout en affichant la hauteur de la note en Hertz. Maintenant, commençons à construire !
Vous aurez besoin d'un Arduino Uno ou Mega, de nombreux câbles de démarrage, d'un buzzer Piezo, d'une maquette, d'un écran LCD 16 * 2 avec toutes les broches d'essuie-glace en place et d'un potentiomètre 10k (vous pouvez également les entendre être appelés potmètres). Il est préférable de rassembler toutes ces fournitures avant de commencer la construction.
Étape 1: convertir la partition musicale en notes numériques: valeurs de délai
Il y a deux étapes pour transcrire numériquement une note de la partition dans son équivalent numérique. Tout d'abord, nous devrons écrire la durée de la note en millisecondes. J'ai utilisé un tableau trouvé en ligne pour cette tâche. Selon qu'une note était une blanche, une noire, une croche, etc., j'ai transcrit la longueur de la note en millisecondes. Vous pouvez voir ces nombres dans mon code comme le delay(); fonction et le nombre entre parenthèses sera la valeur de retard en millisecondes que nous avons déterminée à cette étape.
Étape 2: Convertir la partition musicale en notes numériques: valeurs Hertz
Avant de commencer cette étape, permettez-moi de définir quelques termes techniques. La "valeur" d'une note peut être utilisée de manière interchangeable avec les mots "hauteur", "valeur" et "note". Maintenant, vous devez lire chaque note de la chanson à partir de la partition. Vous devrez ensuite traduire chaque note en Hertz à l'aide d'une table de musique en Hertz, que vous pouvez facilement trouver en ligne. Une chose à retenir est que le do médian est répertorié comme C4 sur la table, et une octave plus haut est C5, et ainsi de suite. Une fois que ces notes sont toutes transcrites en Hertz, vous placerez les valeurs dans la fonction tone(x, y, z); où X est le numéro de broche ou const int, une façon de définir des variables que j'expliquerai plus tard. Y sera la valeur Hertz que vous venez de transcrire, et Z sera la durée de la note en millisecondes arrondie au centième le plus proche. Le délai(); les valeurs seront la durée de la note. Maintenant, concevons le circuit qui peut jouer la musique.
Étape 3: Conception de circuits
Maintenant que nous avons traduit toutes les notes en valeurs numériques qu'un ordinateur peut comprendre, il est temps de construire le circuit. Commencez par prendre une maquette et placez l'écran LCD avec la première broche (GND) de la rangée 14. Placez le buzzer où vous le souhaitez et placez un potentiomètre à côté. Le but est de tout aligner, pour minimiser l'encombrement des fils. Placez l'Arduino à côté de la planche à pain et connectez la broche 5v au rail positif de la planche à pain et la broche de terre au rail négatif. Maintenant, nous sommes prêts à connecter des cavaliers entre l'Arduino et les composants.
Parlons maintenant des broches de l'écran LCD et de la manière de les câbler.
GND signifie masse, c'est le fil négatif en courant continu. Câblez GND au rail négatif de la maquette.
VCC signifie Voltage at the Common Collector, et c'est là que vous connectez votre source d'alimentation de 5 volts (le rail d'alimentation positif).
VO signifie Contraste, connectez-le à la broche centrale du potentiomètre. Connectez la broche gauche du potentiomètre au rail d'alimentation positif et la broche droite au rail d'alimentation au sol.
RS signifie Register Select, et il est utilisé par l'Arduino pour indiquer à l'écran où stocker les données. Connectez cette broche à la broche 12 de l'Arduino.
RW signifie broche de lecture/écriture, que l'Arduino utilise pour vérifier si l'écran affiche ce que vous l'avez programmé pour afficher. Connectez cette broche au rail négatif de la planche à pain.
E signifie Activer, qui indique à l'écran LCD quels pixels activer (activer) ou désactiver (désactiver). Connectez cette broche à la broche Arduino 11.
D4, D5, D6 et D7 sont des broches d'affichage qui contrôlent les caractères et les lettres affichés. Connectez-les aux broches Arduino 5, 4, 3 et 2, respectivement.
La broche A, parfois étiquetée LED, est l'anode LED pour le rétroéclairage. Connectez-le au rail d'alimentation positif avec un fil ou avec une résistance de 220 ohms. La résistance est préférable pour une utilisation plus longue car elle épargne l'écran LCD, mais si l'appareil ne doit pas être utilisé jour et nuit, vous n'avez pas besoin de la résistance.
La broche K, parfois aussi étiquetée (de manière confuse) LED, est la broche de terre de la LED. Connectez-le au rail d'alimentation au sol.
Étape 4: Téléchargement de code: mode d'emploi
Branchez votre Arduino sur le port USB de votre ordinateur. Téléchargez le code suivant à l'aide du programmeur Arduino IDE.
#comprendre
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2; LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
void setup() {
// configure le nombre de colonnes et de lignes de l'écran LCD: lcd.begin(16, 2); // Imprime un message sur l'écran LCD. lcd.print("Hertz Pas: !"); retard(1000); void loop() { // lecture du délai e4 (600); // pause pendant 0,6 seconde tonalité (10, 329,63, 300); // lecture e sur le buzzer à la broche 10, dure 0,3 seconde lcd.print(" 329.63");//afficher un message sur l'écran LCD "329.63"
délai (350); // délai de 0,35 seconde
lcd.clear();//clear LCD et reset pour le prochain message // play d4# tone (10, 311.13, 300); lcd.print("311.13"); retard (350); lcd.clear(); // joue le ton e4 (10, 329,63, 300); lcd.print("329.63"); retard (350); lcd.clear(); // joue d4# ton (10, 311.13, 300); lcd.print("311.13"); retard (350); lcd.clear(); // joue le ton e4 (10, 329,63, 300); lcd.print("329.63"); retard (350); lcd.clear(); // joue le ton b3 (10, 246.94, 300); lcd.print("246.94"); retard (400); lcd.clear(); // joue le ton d4 (10, 293,66, 300); lcd.print("293.66"); retard (400); lcd.clear(); // joue le ton c4 (10, 261.63, 300); lcd.print("261.63"); retard (400); lcd.clear(); // joue un ton a3 (10, 220, 900); lcd.print("220.0"); retard(1000); lcd.clear();//line60//helpsave//avrdude.failure.eeprom // joue le ton d3 (10, 146,83, 300); lcd.print("146.63"); retard (350); lcd.clear(); //jouer le ton f3 (10, 174.61, 300); lcd.print("174.61"); retard (400); lcd.clear(); //joue un ton a3 (10, 220, 300); lcd.print("220"); retard (400); lcd.clear(); // joue le ton b3 (10, 246.94, 900); lcd.print("246.94"); retard(1000); lcd.clear();
// joue e3
ton (10, 164,81, 300); lcd.print("164.81"); retard (400); lcd.clear(); // joue g3# ton (10, 207,65, 300); lcd.print("207.65"); retard (400); lcd.clear(); // joue le ton b3 (10, 246.94, 300); lcd.print("246.94"); retard (400); lcd.clear(); // joue le ton c4 (10, 261.63, 900); lcd.print("261.63"); retard(1000); lcd.clear(); //joue un ton (10, 164.81, 300); lcd.print("164.81"); retard (400); lcd.clear(); // joue le ton e4 (10, 329,63, 300); lcd.print("329.63"); retard (400); lcd.clear(); // joue d4# ton (10, 311.13, 300); lcd.print("311.13"); retard (400); lcd.clear(); // joue le ton e4 (10, 329,63, 300); lcd.print("329.63"); retard (400); lcd.clear(); // joue d4# ton (10, 311.13, 300); lcd.print("311.13"); retard (400); lcd.clear(); // joue le ton e4 (10, 329,63, 300); lcd.print("329.63"); retard (400); lcd.clear(); // joue le ton b3 (10, 246.94, 300); lcd.print("246.94"); retard (400); lcd.clear(); // joue le ton d4 (10, 293,66, 300); lcd.print("293.66"); retard (400); lcd.clear(); // joue le ton c4 (10, 261.63, 300); lcd.print("261.63"); retard (400); lcd.clear(); // joue a3 ton (10, 220, 900); lcd.print("220.0"); retard(1000); lcd.clear(); // joue le ton d3 (10, 146,83, 300); lcd.print("146.83"); retard (400); lcd.clear(); // joue le ton f3 (10, 174,61, 300); //eeprom 20--6 oui non, flash 65--0 non lcd.print("174.61"); retard (400); lcd.clear(); // joue a3 tone (10, 220, 300); lcd.print("220.0"); retard (400); lcd.clear(); // joue le ton b3 (10, 246.94, 900); lcd.print("246.94"); retard(1000); lcd.clear(); // joue le ton f3 (10, 174,61, 300); lcd.print("174.61"); retard (400); lcd.clear(); // joue le ton c4 (10, 261.63, 300); lcd.print("261.63"); retard (400); lcd.clear(); // joue le ton b3 (10, 246.94, 300); lcd.print("246.94"); retard (400); lcd.clear(); // joue a3 ton (10, 220, 900); lcd.print("220.0"); retard(1000); lcd.clear(); // joue le ton b3 (10, 246.94, 300); lcd.print("246.94"); retard (400); lcd.clear(); // joue le ton c4 (10, 261.63, 300); lcd.print("261.63"); retard (400); lcd.clear(); // joue le ton d4 (10, 293,66, 300); lcd.print("293.66"); retard (400); lcd.clear(); // joue le ton e4 (10, 329,63, 900); lcd.print("329.63"); retard(1000); lcd.clear(); // joue le ton g3 (10, 196, 300); lcd.print("196.0"); retard (400); lcd.clear(); // joue le ton f4 (10, 349,23, 300); lcd.print("349.23"); retard (400); lcd.clear(); //joue le ton e4 (10, 329,23, 300); lcd.print("329.23"); retard (400); lcd.clear(); // joue le ton d4 (10, 293,63, 900); lcd.print("293.63"); retard(1000); lcd.clear(); // joue le ton e3 (10, 164,81, 300); lcd.print("164.81"); retard (400); lcd.clear(); // joue le ton e4 (10, 329,63, 300); lcd.print("329.63"); retard (400); lcd.clear(); // joue le ton d4 (10, 293,63, 300); lcd.print("293.63"); retard (400); lcd.clear(); // joue le ton c4 (10, 261.63, 900); lcd.print("261.63"); retard(1000); lcd.clear(); // joue le ton d3 (10, 146,83, 300); lcd.print("146.83"); retard (400); lcd.clear(); // joue le ton d4 (10, 293,63, 300); lcd.print("293.63"); retard (400); lcd.clear(); // joue le ton c4 (10, 261.63, 300); lcd.print("261.63"); retard (400); lcd.clear(); // joue le ton b3 (10, 246.94, 900); lcd.print("246.94"); retard(1000); lcd.clear(); // joue le ton e4 (10, 329,63, 300); lcd.print("329.63"); retard (400); lcd.clear(); // joue d4# ton (10, 311.13, 300); lcd.print("311.13"); retard (350); lcd.clear(); // joue le ton e4 (10, 329,63, 300); lcd.print("329.63"); retard (350); lcd.clear(); // joue d4# ton (10, 311.13, 300); lcd.print("311.13"); retard (350); lcd.clear(); // joue le ton e4 (10, 329,63, 300); lcd.print("329.63"); retard (350); lcd.clear(); // joue le ton b3 (10, 246.94, 300); lcd.print("246.94"); retard (400); lcd.clear(); // joue le ton d4 (10, 293,66, 300); lcd.print("293.66"); retard (400); lcd.clear(); // joue le ton c4 (10, 261.63, 300); lcd.print("261.63"); retard (400); lcd.clear(); // joue un ton a3 (10, 220, 900); lcd.print("220.0"); retard(1000); lcd.clear(); // joue le ton d3 (10, 146,83, 300); lcd.print("146.83"); retard (350); lcd.clear(); //jouer le ton f3 (10, 174,61, 300); lcd.print("174.61"); retard (400); lcd.clear(); //joue un ton a3 (10, 220, 300); lcd.print("220.0"); retard (400); // joue à b3 lcd.clear(); ton (10, 246.94, 900); lcd.print("246.94"); retard(1000); lcd.clear(); // joue le ton e3 (10, 164,81, 300); lcd.print("164.81"); retard (400); lcd.clear(); // joue le ton g#3 (10, 207,65, 300); lcd.print("207.65"); retard (400); lcd.clear(); // joue le ton b3 (10, 246.94, 300); lcd.print("246.94"); retard (400); lcd.clear(); // joue le ton c4 (10, 261.63, 900); lcd.print("261.63"); retard(1000); retard (300); lcd.clear(); //jouer le ton e3 (10, 164,81, 300); lcd.print("164.81"); retard (400); lcd.clear(); // joue le ton e4 (10, 329,63, 300); lcd.print("329.63"); retard (400); lcd.clear(); // joue d4# ton (10, 311.13, 300); lcd.print("311.13"); retard (400); lcd.clear(); // joue le ton e4 (10, 329,63, 300); lcd.print("329.63"); retard (400); lcd.clear(); // joue d4# ton (10, 311.13, 300); lcd.print("311.13"); retard (400); lcd.clear(); // joue le ton e4 (10, 329,63, 300); lcd.print("329.63"); retard (400); lcd.clear(); // joue le ton b3 (10, 246.94, 300); lcd.print("246.94"); retard (400); lcd.clear(); // joue le ton d4 (10, 293,66, 300); lcd.print("293.66"); retard (400); lcd.clear(); // joue le ton c4 (10, 261.63, 300); lcd.print("261.63"); retard (400); lcd.clear(); // joue un ton a3 (10, 220, 900); lcd.print("220.0"); retard(1000); lcd.clear(); // joue le ton d3 (10, 146,83, 300); lcd.print("146.83"); retard (400); lcd.clear(); // joue le ton f3 (10, 174,61, 300); lcd.print("174.61"); retard (400); lcd.clear(); // joue a3 tone (10, 220, 300); lcd.print("220.0"); retard (400); lcd.clear(); // joue le ton b3 (10, 246.94, 900); lcd.print("246.94"); retard(1000); lcd.clear(); // joue le ton f3 (10, 174.61, 300); lcd.print("174.61"); retard (400); lcd.clear(); // joue le ton c4 (10, 261.63, 300); lcd.print("261.63"); retard (400); lcd.clear(); // joue le ton b3 (10, 246.94, 300); lcd.print("246.94"); retard (400); lcd.clear(); // joue a3 ton (10, 220, 900); lcd.print("220.0"); retard(1000); lcd.clear(); }
Étape 5: Téléchargement de code: qu'est-ce que tout cela signifie ?
Définissons quelques fonctions en anglais, afin que vous puissiez comprendre le code.
ton(x, y, z); = jouer une tonalité avec une hauteur de y Hertz, à un buzzer à la broche x, pendant z millisecondes.
lcd.print("XYZ"); = imprimer un message avec les caractères XYZ sur l'écran LCD. (par exemple, afficher le pas de Hertz)
retard(x); = pause de x millisecondes.
const int X=Y = définissez une variable constante X sur la broche Y et utilisez X ou Y pour affecter des tâches à l'appareil.
lcd.clear(); = effacer l'écran LCD et réinitialiser pour un nouvel affichage
pinMode(X, SORTIE); = définir la broche X pour le mode de sortie
Une fois que vous avez compris toutes ces fonctions, vous pouvez facilement remplacer les variables par les données que vous collectez lors de la traduction d'une chanson, et vous pouvez ensuite coder votre propre chanson !
Étape 6: Terminé !
Soit vous avez un Arduino qui joue Fur Elise et affiche les valeurs des notes en Hertz, soit vous avez fait un Arduino qui joue la mélodie de la chanson que vous avez choisie et affiche le texte que vous souhaitez afficher. Merci d'avoir visité ce tutoriel, et je vous souhaite ce projet sur l'Arduino.
Conseillé:
Comment numériser des diapositives et des négatifs de films avec un reflex numérique : 12 étapes (avec photos)
Comment numériser des diapositives et des négatifs de film avec un reflex numérique : une configuration polyvalente et stable pour numériser des diapositives et des négatifs avec un reflex numérique ou tout autre appareil photo avec une option macro. Cette instructable est une mise à jour de Comment numériser des négatifs 35 mm (téléchargé en juillet 2011) avec plusieurs améliorations pour étendre son
Chanson à thème PUBG + Animation avec Arduino ! : 13 étapes (avec photos)
Chanson de thème PUBG + Animation avec Arduino ! : Bonjour et bienvenue dans cette amusante instructable ! J'espère que vous allez tous bien et que vous restez en bonne santé. Ce petit mais étonnant projet consiste à jouer la chanson thème de PUBG et même à créer des animations de jeu à l'aide d'arduino. Les composants utilisés sont très e
Comment coder une chanson à l'aide de partitions dans Sonic Pi : 5 étapes
Comment coder une chanson à l'aide de partitions dans Sonic Pi : cette instructable va décrire quelques étapes de base et des morceaux de code à utiliser lors du codage d'une chanson dans Sonic Pi à l'aide de partitions ! Il y a un million d'autres morceaux de code pour essayer d'ajouter de la saveur à votre morceau fini, alors assurez-vous également de jouer autour de vous
Enregistrer une chanson sur un iPad : 11 étapes (avec photos)
Enregistrer une chanson sur un IPad : Une de mes amies m'a récemment demandé comment elle pouvait enregistrer certaines de ses chansons avec juste une guitare et un iPad. Je lui ai demandé si elle avait un autre matériel d'enregistrement tel qu'un microphone et une interface d'enregistrement. Malheureusement, la réponse était non, et elle n'est pas
Réveil LED Sunrise avec alarme de chanson personnalisable : 7 étapes (avec photos)
Réveil LED Sunrise avec alarme de chanson personnalisable : ma motivation Cet hiver, ma petite amie a eu beaucoup de mal à se réveiller le matin et semblait souffrir de TAS (trouble affectif saisonnier). Je remarque même à quel point il est plus difficile de se réveiller en hiver puisque le soleil n'est pas venu