UNIDAD EDUCATIVA JEAN PIAGET
HOJA DE TALLERES
PERIODO LECTIVO 2018 – 2019
ROBOTICA
NOMBRES: CALIFICACION
CURSO: PRIMERO INFORMATICA
FECHA: JULIO 17 DEL 2018
TALLER Nº 1
TOCA MARIO BROS TUNES EN ARDUINO CON UN ZUMBADOR PIEZOELÉCTRICO
1. Conecte su cable rojo Piezo Buzzer (+) en el pin digital Arduino n. ° 3 y el cable negro (-) en el
pin de tierra.
2. Ajuste el Led en el pin # 13 para parpadear. Esto parpadeará cuando se toque una nota.
3. Las canciones de este ejercicio fueron adaptadas de los juegos de Super Mario Bros. en los años
80 cuando NES aún era el rey de las consolas. Portado y traducido de sus hojas de puntaje de la
banda sonora original , hay dos canciones entre las que puede elegir: tema principal y tema
Underworld. Siempre puede agregar y modificar las melodías (dado el permiso por escrito de su
propietario de los derechos de autor;). Asegúrese de que las notas coincidan con sus tempos
correspondientes.
4. Descargue el archivo pitches.h del dominio público Arduino: [Link]
5. Use y cargue los siguientes códigos en su placa Arduino.
/ *
Arduino Mario Bros Tunes
Con Piezo Buzzer y PWM
por: Dipto Pratyaksa
última actualización: 31/3/13
* /
#include <campos.h>
#define melodyPin 3
// Melodía del tema principal de Mario
int melodía [] = {
NOTE_E7, NOTE_E7, 0, NOTE_E7,
0, NOTA_C7, NOTA_E7, 0,
NOTE_G7, 0, 0, 0,
NOTE_G6, 0, 0, 0,
NOTE_C7, 0, 0, NOTE_G6,
0, 0, NOTE_E6, 0,
0, NOTA_A6, 0, NOTA_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, NOTA_A6, 0, NOTA_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 tiene el tempo principal
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,
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,
};
//
// melodía del inframundo
int underworld_melody [] = {
NOTA_C4, NOTA_C5, NOTA_A3, NOTA_A4,
NOTE_AS3, NOTE_AS4, 0,
0,
NOTA_C4, NOTA_C5, NOTA_A3, NOTA_A4,
NOTE_AS3, NOTE_AS4, 0,
0,
NOTA_F3, NOTA_F4, NOTA_D3, NOTA_D4,
NOTE_DS3, NOTE_DS4, 0,
0,
NOTA_F3, NOTA_F4, NOTA_D3, NOTA_D4,
NOTE_DS3, NOTE_DS4, 0,
0, NOTA_DS4, NOTA_CS4, NOTA_D4,
NOTE_CS4, NOTE_DS4,
NOTE_DS4, NOTE_GS3,
NOTE_G3, NOTE_CS4,
NOTA_C4, NOTA_FS4, NOTA_F4, NOTA_E3, NOTA_AS4, NOTA_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, 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
};
ajuste de vacío (vacío)
{
pinMode (3, OUTPUT); // zumbador
pinMode (13, OUTPUT); // indicador led al cantar una nota
}
void loop ()
{
// canta las canciones
cantar (1);
cantar (1);
cantar (2);
}
int canción = 0;
void sing (int s) {
// iterar sobre las notas de la melodía:
canción = s;
if (canción == 2) {
[Link] ("'Tema Underworld'");
int size = sizeof (underworld_melody) / sizeof (int);
for (int thisNote = 0; thisNote <size; thisNote ++) {
// para calcular la duración de la nota, tomar un segundo
// dividido por el tipo de nota.
// ej. negra = 1000/4, corchea = 1000/8, etc.
int noteDuration = 1000 / underworld_tempo [thisNote];
zumbido (melodyPin, underworld_melody [thisNote],
noteDuration);
// para distinguir las notas, establezca un tiempo mínimo
entre ellas.
// la duración de la nota + 30% parece funcionar bien:
int pauseBetweenNotes = noteDuration * 1.30;
retraso (pauseBetweenNotes);
// detiene el tono de reproducción:
zumbido (melodyPin, 0, noteDuration);
}más{
[Link] ("'Mario Theme'");
int size = sizeof (melodía) / sizeof (int);
for (int thisNote = 0; thisNote <size; thisNote ++) {
// para calcular la duración de la nota, tomar un segundo
// dividido por el tipo de nota.
// ej. negra = 1000/4, corchea = 1000/8, etc.
int noteDuration = 1000 / tempo [thisNote];
zumbido (melodía, melodía [thisNote], noteDuration);
// para distinguir las notas, establezca un tiempo mínimo
entre ellas.
// la duración de la nota + 30% parece funcionar bien:
int pauseBetweenNotes = noteDuration * 1.30;
retraso (pauseBetweenNotes);
// detiene el tono de reproducción:
zumbido (melodyPin, 0, noteDuration);
}
}
}
zumbido vacío (int targetPin, long frequency, long length) {
digitalWrite (13, ALTO);
long delayValue = 1000000 / frequency / 2; // calcula el valor de
demora entre transiciones
//// 1 segundo vale microsegundos, dividido por la frecuencia,
luego se divide a la mitad desde
//// hay dos fases para cada ciclo
long numCycles = frecuencia * longitud / 1000; // calcula el
número de ciclos para el tiempo apropiado
//// multiplicar frecuencia, que en realidad es ciclos por
segundo, por el número de segundos para
//// obtener el número total de ciclos para producir
for (long i = 0; i <numCycles; i ++) {// durante el tiempo
calculado ...
digitalWrite (targetPin, ALTO); // escribe el zumbador alto
para expulsar el diafragma
delayMicroseconds (delayValue); // espera el valor de retraso
calculado
digitalWrite (targetPin, BAJO); // escribe el zumbador pin bajo
para retirar el diafragma
delayMicroseconds (delayValue); // espera otra vez o el valor
de retraso calculado
}
digitalWrite (13, BAJO);