Arduino Mario Bros. Chanson à thème: 4 étapes

Arduino Mario Bros. Chanson à thème: 4 étapes

Table des matières:

Anonim

Quoi de neuf, dans ce projet, nous allons recréer le célèbre SUPER MARIO BROS. CHANSON DU THÈME!!!! Nous allons faire cela en utilisant un arduino et un haut-parleur piézo, amusez-vous!

Provisions:

Étape 1: ce dont vous aurez besoin

Pour ce projet, vous aurez besoin de:

Un arduino

Fils de connexion

Clips alligator

Un arduino piezo - haut-parleur

Une planche à pain (facultatif)

Votre A - JEU

Note: je n'utiliserai pas de planche à pain dans ce projet

Étape 2: Configuration

Sur votre arduino, vous attachez une extrémité de l’un des cavaliers à D3 et une extrémité de l’autre à la terre (GND)

Ensuite, en utilisant vos pinces crocodiles; attache une extrémité de chaque clip à l’autre extrémité du cavalier D3 ou du cavalier GND

L’autre côté de la pince crocodile connectée à GND est clipsé sur le côté droit de la partie argentée située au bas de l’enceinte (comme indiqué sur l’image fournie) et sur l’autre extrémité du clip relié à D3 du côté gauche. la partie en argent

Ensuite, branchez votre Arduino sur un ordinateur, ouvrez l’EDI Arduino et préparez-vous à coder!

Étape 3: codage

/*

Arduino Mario Bros accorde le buzzer piézo et le PWM Connectez le côté positif du buzzer à la broche 3, puis le côté négatif à une résistance de 1k ohm. Connectez l’autre côté de la résistance de 1 k ohm à la broche de terre (GND) de l’Arduino. par: Dipto Pratyaksa Dernière mise à jour: 31/3/13 * / / ********************************* ************** * Constantes publiques ********************************* **************** / #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 # 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_Fin 98 #define NOTE_GS2 104 #define NOTE_A2 110 #define NOTE_AS2 117 #define NOTE_B2 123 #define NOTE_C3 131 #define NOTE_FIN 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_E4 33 0 #define NOTE_F4 définissez NOTE_F5 698 #define NOTE_FS5 740 #define NOTE 1397 #define NOTE_FS6 1480 #define NOTE_G6 1568 #define NOTE_GS6 1661 define NOTE_FS7 2960 #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_D829 lodyPin 3 // mélodie du thème principal de Mario 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, 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_E7, NOTE_G7, NOTE_G7, NOTE_G7, NOTE_A7, NOTE_A7, NOTE_A7, NOTE_A7, NOTE_G7, NOTE_G7, NOTE_G7, NOTE_G6 NOTE_F7, NOTE_G7, 0, NOTE_E7, 0, NOTE_C7, NOTE_D7, NOTE_B6, 0, 0}; // Mario main them tempo int tempo = {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, 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, 12, 12, 12, 12, 12, 9, 9, 9, 9, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,}; // Underworld melody underworld_melody = {NOTE_C4, NOTE_C5, NOTE_A3, NOTE_A4, NOTE_AS3, NOTE_AS4, 0, 0, NOTE_C4, NOTE_A3, NOTE_A4, NOTE_AS3, NOTE_AS3, NOTE_F3, NOTE_DS3, NOTE_DS4, 0, 0, NOTE_F3, NOTE_F4, NOTE_D3, NOTE_D4, NOTE_DS3, NOTE_DS4, 0, 0, NOTE_DS4, NOTE_G NOTE_AS4, NOTE_A4, NOTE_GS4, NOTE_DS4, NOTE_B3, NOTE_AS3, NOTE_A3, NOTE_GS3, 0, 0, 0}; // Underworld Tempo Int Underworld_Tempo = {12, 12, 12, 12, 12, 12, 6, 3, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 6, 3, 12, 12, 12, 12, 12, 12, 6, 6, 6, 18, 18, 18, 18, 6, 6, 6, 6, 6, 6, 6, 18, 18, 18, 18, 18, 18, 10, 10, 10, 10, 10, 10, 3, 3, 3}; void setup (void) {pinMode (3, OUTPUT); // buzzer pinMode (13, OUTPUT); // indicateur clignotant lorsque vous chantez une note} void loop () {// chantez les mélodies sing (1); chanter (1); chanter (2); } int song = 0; void sing (int s) {// itère sur les notes de la mélodie: song = s; if (song == 2) {Serial.println ("'Underworld Theme'"); int size = sizeof (underworld_melody) / sizeof (int); for (int thisNote = 0; thisNote <taille; thisNote ++) {// pour calculer la durée de la note, prenez une seconde // divisée par le type de note. //par exemple. quart de note = 1000/4, croche = 1000/8, etc. int noteDurée = 1000 / underworld_tempo thisNote; buzz (melodyPin, underworld_melody thisNote, noteDurée); // pour distinguer les notes, définissez un délai minimal entre elles. // la durée de la note + 30% semble bien fonctionner: int pauseBetweenNotes = noteDuration * 1.30; délai (pauseBetweenNotes); // arrête la lecture du son: buzz (melodyPin, 0, noteDuration); }} else {Serial.println ("'Mario Theme'"); int size = sizeof (mélodie) / sizeof (int); for (int thisNote = 0; thisNote <taille; thisNote ++) {// pour calculer la durée de la note, prenez une seconde // divisée par le type de note. //par exemple. quart de note = 1000/4, croche = 1000/8, etc. int noteDurée = 1000 / tempo thisNote; buzz (melodyPin, melody thisNote, noteDuration); // pour distinguer les notes, définissez un délai minimal entre elles. // la durée de la note + 30% semble bien fonctionner: int pauseBetweenNotes = noteDuration * 1.30; délai (pauseBetweenNotes); // arrête la lecture du son: buzz (melodyPin, 0, noteDuration); }}} void buzz (int targetPin, longue fréquence, longue durée) {digitalWrite (13, HIGH); long delayValue = 1000000 / fréquence / 2; // calcule la valeur de délai entre les transitions //// 1 seconde de microsecondes, divisée par la fréquence, puis divisée en deux car //// il y a deux phases à chaque cycle long numCycles = frequency * length / 1000; // calcule le nombre de cycles pour une synchronisation correcte //// multiplie la fréquence, qui est en réalité des cycles par seconde, par le nombre de secondes pour //// obtenir le nombre total de cycles à produire pour (long i = 0; i <numCycles; i ++) {// pour la durée calculée … digitalWrite (targetPin, HIGH); // écrit la broche supérieure du signal sonore pour extraire le diaphram delayMicroseconds (delayValue); // attend la valeur de délai calculée digitalWrite (targetPin, LOW); // écrit la broche buzzer sur le niveau bas pour extraire le diaphram delayMicroseconds (delayValue); // attend à nouveau ou la valeur de retard calculée} digitalWrite (13, LOW); }

Remarque: dans le code ci-dessus, un voyant est utilisé, vous pouvez le faire aussi si vous le souhaitez.

Étape 4: Terminé !!

Wow, vous l'avez fait! Donnez-vous une grande tape dans le dos et profitez de votre musique de Mario