Paso 2: Piezo - componentes de altavoz
Este componente nos permitirá producir nuestras canciones de Navidad:).
¿Cómo elctronico?
-Como se verá en la hoja de datos del altavoz piezoeléctrico, requiere 8mA, así que para este caso, utilizaremos una resistencia de 100Ohms (marrón-negro-marrón) con el fin de reducir la corriente que fluye a través de este componente.
-Vamos a utilizar el pin 8 de Arduino para enviar la frecuencia específica que nos permitirá producir tonos.
-Seguir el esquema para conectar cada pin del altavoz piezoeléctrico correctamente.
Código
Aquí voy a explicar que partes del código nos permitirá producir estos tonos.
Primero importamos el archivo "pitches.h". Define la frecuencia con un nombre que representan nuestras notas.
Por ejemplo NOTE_D3 = 147
#include "pitches.h"
Este para la constantes representan el número de notas que tienen nuestras canciones. Puesto que tenemos dos temas, uno tiene 24 notas y el otro tiene 14
#define SONG1_SIZE 24
#define SONG2_SIZE 14
Esta tabla es sólo una matriz de frecuencia que daba el fichero pitches.h
Notas de la melodía 1:
int melody1 [] = {}
NOTE_D3, NOTE_B3, NOTE_A3, NOTE_G3, NOTE_D3,
NOTE_D3, NOTE_D3, NOTE_D3, NOTE_B3, NOTE_A3, NOTE_G3, NOTE_E3, 0,
NOTE_E3, NOTE_C4, NOTE_B3, NOTE_A3, NOTE_FS3, 0,
NOTE_D4, NOTE_D4, NOTE_C4, NOTE_A3, NOTE_B3
};
Notas de la melodía 2:
int melody2 [] = {NOTE_F4, NOTE_E4, NOTE_D4, NOTE_C3, NOTE_AS3, NOTE_A3, NOTE_G3, NOTE_F3,
NOTE_C4, NOTE_D4, NOTE_D4, NOTE_E4, NOTE_E4, NOTE_F4
};
La duración de cada nota se especifica en las siguientes matrices para cada canción (1 -> 1 seg, 4 > corchea... etc.)
Tenga en cuenta las duraciones de melodía 1:4 = cuarto nota, 8 = corchea, etc..:
int noteDurations1 [] = {}
4, 4, 4, 4, 2.5,
8, 8, 4, 4, 4, 4, 2.5, 2,
4, 4, 4, 4, 2.5, 2,
4, 4, 4, 4, 1};
/ / Nota de la duración de la melodía 2:4 = cuarto nota, 8 = corchea, etc.:
int noteDurations2 [] = {}
2, 2.5, 8, 1.5, 4, 2, 2, 1.5,
4, 1.8, 4, 1.8, 4, 1};
Dentro del método loop(), nos encontraremos con un bucle-para. Esto pasará por cada nota de nuestro melody1 o melody2
para (int thisNote = 0; thisNote < songSizeS; thisNote ++) {}
.....
// para calcular la duración de la nota, tomar un segundo
dividido por el tipo de nota.
por ejemplo, trimestre Nota = 1000 / 4, corchea = 1000/8, etc..
menoteDuration nt = 1000/noteDurationS [thisNote];
función de tono se producen el tono y enviar pin de canal 8 con su duracióntono (pin, frecuencia, duración)
tono (8, melodyS[thisNote],noteDuration);
....
/ / para distinguir las notas, establecer un tiempo mínimo entre ellos.
duración de la nota será de handel por la variable de tiempo que es variable dependiendo del potenciómetro (paso 5)
int pauseBetweenNotes = noteDuration * tempo;
Delay(pauseBetweenNotes);
/ / detener la reproducción de tono:
noTone(8);
.....
}