Arduino Mario Bros. Tema canción: 4 pasos

Arduino Mario Bros. Tema canción: 4 pasos

Tabla de contenido:

Anonim

Qué tal, en este proyecto estaremos recreando el famoso SUPER MARIO BROS. ¡¡¡¡TEMA MUSICAL!!!! Haremos esto usando un arduino y un piezoeléctrico, ¡diviértete!

Suministros:

Paso 1: Lo que necesitarás

Para este proyecto necesitarás:

Un arduino

Cables de puente

Pinzas de cocodrilo

Un arduino piezo - hablante

Una tabla de pan (opcional)

Tu A - JUEGO

Nota: no voy a utilizar una tabla de pan en este proyecto

Paso 2: Configuración

En tu arduino, unirás un extremo de uno de los puentes a D3 y un extremo del otro a tierra (GND)

Luego, usando tus pinzas de cocodrilo; sujete un extremo de cada clip al otro extremo del puente D3 o al puente GND

El otro lado del clip de cocodrilo conectado a GND se recortará en el lado derecho de la parte plateada ubicada en la parte inferior del altavoz (como se ve en la imagen provista) y el otro extremo del clip D3 - conectado al lado izquierdo la parte de plata

Luego, conecte su arduino a una computadora, abra el IDE de arduino y ¡prepárese para codificar!

Paso 3: Codificación

/*

Arduino Mario Bros Tunes con piezo zumbador y PWM Conecte el lado positivo del zumbador al pin 3, luego el lado negativo a una resistencia de 1 kohm. Conecte el otro lado del pin de resistencia de 1 kohm a tierra (GND) en el Arduino. por: Dipto Pratyaksa última actualización: 31/3/13 * / / *********************************** ************** * Constantes públicas ********************************* **************** / #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_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 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 definir 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 349 #define NOTE_FS4 370 #define NOTE_G4 392 #define NOTE_GS4 415 #define NOTE_A4 440 #define NOTE_AS4 466 #define NOTE_B4 494lucina de la Calla de la Cerveza. define NOTE_F5 698 #define NOTE_FS5 740 #define NOTE_G5 784 #define NOTE_GS5 831 #define NOTE_A5 880 #define NOTE_AS5 932 #define NOTE_B5 988 #Control para que se celebre el evento en el hogar. 1397 #define NOTE_FS6 1480 #define NOTE_G6 1568 #define NOTE_GS6 1661 #define NOTE_A6 1760 #define NOTE_AS6 1865 #define NOTE_B6 1976 #define NOTE_C7_contactos_pina_c7_pel.pel.inclúltimo! defina 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_D8 468 #define NOTE_C8 lodyPin 3 // Tema principal de Mario melodía int melodía = {NOTE_E7, NOTE_E7, 0, NOTE_E7, 0, NOTE_C7, NOTE_E7, 0, NOTE_G7, 0, 0, 0, NOTE_G6, 0, 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}; // Mario main 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, 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, 9, 9, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,}; // Underworld melody int underworld_melody = {NOTE_C4, NOTE_C5, NOTE_A3, NOTE_A4, NOTE_AS3, NOTE_AS4, 0, 0, NOTE_C4, NOTE_C5, NOTE_A3, NOTE_A4, NOTE_A4, CONTACTO_A4, 3_F4, Y_4_4_4_4_4_4_4_4_4_4_4_4_4_4_4_4_4_4_4_4_4_4_4_4_4_4_4_4_4_4_4_4_4_4_4_4_4_4_4_4_4_4_4_4_4_4_4_4_4_4_4_4_4_4_4_4_4_4_4_4_4_4_4_4_4_4_4_4_4_4_4_4_4_4_04_04_02 NOTE_DS3, NOTE_DS4, 0, 0, NOTE_F3, NOTE_F4, NOTE_D3, NOTE_D4, NOTE_DS3, NOTE_DS4, 0, NOTE_DS4, NOTE_CS4, Thank_GS3,Pack_P4P.P.P.P.P.P.P.P.P.P.P.P.P.P.P.! NOTE_AS4, NOTE_A4, NOTE_GS4, NOTE_DS4, NOTE_B3, NOTE_AS3, NOTE_A3, NOTE_GS3, 0, 0, 0}; // Underwolrd tempo int underworld_tempo = {12, 12, 12, 12, 12, 12, 6, 3, 12, 12, 12, 12, 12, 6, 3, 12, 12, 12, 12, 12, 12, 6, 3, 12, 12, 12, 12, 12, 6, 6, 18, 18, 18, 6, 6, 6, 6, 6, 18, 18, 18, 18, 18, 18, 10, 10, 10, 10, 10, 10, 3, 3, 3}; configuración de void (void) {PinMode (3, OUTPUT); // buzzer pinMode (13, OUTPUT); // indicador luminoso cuando se canta una nota} void loop () {// sing the tunes sing (1); cantar (1); cantar (2); } int song = 0; void sing (int s) {// iterar sobre las notas de la melodía: song = s; if (song == 2) {Serial.println ("'Underworld Theme'"); int size = sizeof (underworld_melody) / sizeof (int); para (int thisNote = 0; thisNote <size; thisNote ++) {// para calcular la duración de la nota, tome un segundo // dividido por el tipo de nota. //p.ej. cuarto de nota = 1000/4, octava nota = 1000/8, etc. int noteDuration = 1000 / underworld_tempo thisNote; buzz (melodyPin, underworld_melody thisNote, noteDuration); // para distinguir las notas, establecer un tiempo mínimo entre ellas. // la duración de la nota + 30% parece funcionar bien: int pauseBetweenNotes = noteDuration * 1.30; retraso (pauseBetweenNotes); // Detener la reproducción del tono: buzz (melodyPin, 0, noteDuration); }} else else {Serial.println ("'Mario Theme'"); int size = sizeof (melody) / sizeof (int); para (int thisNote = 0; thisNote <size; thisNote ++) {// para calcular la duración de la nota, tome un segundo // dividido por el tipo de nota. //p.ej. cuarto de nota = 1000/4, octava nota = 1000/8, etc. int noteDuration = 1000 / tempo thisNote; buzz (melodyPin, melody thisNote, noteDuration); // para distinguir las notas, establecer un tiempo mínimo entre ellas. // la duración de la nota + 30% parece funcionar bien: int pauseBetweenNotes = noteDuration * 1.30; retraso (pauseBetweenNotes); // Detener la reproducción del tono: buzz (melodyPin, 0, noteDuration); }}} void buzz (int targetPin, long frequency, long length) {digitalWrite (13, HIGH); valor de retardo largo = 1000000 / frecuencia / 2; // calcule el valor de retardo entre transiciones //// el valor de 1 segundo de microsegundos, dividido por la frecuencia, luego divídalo a la mitad, ya que //// hay dos fases en cada ciclo. Ciclos largos = frecuencia * longitud / 1000; // calcule el número de ciclos para la sincronización adecuada //// multiplique la frecuencia, que es realmente ciclos por segundo, por el número de segundos para //// obtener el número total de ciclos para producir (long i = 0; i <numCycles; i ++) {// para el tiempo calculado … digitalWrite (targetPin, HIGH); // escriba el pin del zumbador alto para expulsar el diafragmaMicrosegundos (delayValue); // espera el valor de retardo calculado digitalWrite (targetPin, LOW); // escriba el pin del zumbador bajo para retirar el diafragmaMicrosegundos (delayValue); // espere de nuevo o el valor de retardo calculado} digitalWrite (13, LOW); }

Nota: en el código anterior se está utilizando un LED, también puede hacerlo si lo desea.

Paso 4: ¡¡Terminado !!

Wow, lo hiciste !! Dése una palmadita en la espalda y disfrute de la banda sonora de Mario.