Descrición:
Imos crear unha melodía utilizando a librería pitches.h. Nela xa veñen definidas as notas coa súa correspondente frecuencia. (Fai clic aquí para ver a correspondencia entre as notas e nomes)
Programas:

Na lapela do programa, incluímos a librería escribindo #include “pitches.h” ao principio. Despois, na función tone(pin, frecuencia, duración) ou tone(pin,frecuencia) no canto das frecuencias, escribimos o nome da nota que queremos. Por exemplo: tone(altofalante,NOTE_C4,300); ou tone(4,NOTE_G3);
1. Melodía
Imos definir unha función para a melodía que desexamos que soe. Despois invocámola cando queiramos executar a función.
#include "pitches.h"
// Declaración de variables:
const int pulsador = 2;
const int altofalante = 4;
int estado = 0;
// Configuración:
void setup() {
pinMode(altofalante, OUTPUT);
}
// Programa:
void melodia(){
tone(altofalante,NOTE_C4,300);
delay(100);
tone(altofalante,NOTE_G3,200);
delay(100);
tone(altofalante,NOTE_A3,300);
delay(100);
tone(altofalante,NOTE_G3,400);
delay(100);
tone(altofalante,NOTE_C4,300);
delay(100);
tone(altofalante,NOTE_D4,500);
noTone(altofalante);
}
void loop() {
estado = digitalRead(pulsador);
if(estado == 1) { // Cando prememos o botón soa a melodía 3 veces
for (int n=0;n<3;n++) {
melodia();
delay(300);
}
}
}
2. Melodía con arrays
Podemos definir a melolodía utilizando dous arrays, un coas notas da librería pitches que queremos que soen e outro cos tempos de duración de cada nota. Despois imos percorrendo os arrays mediante unha función for.
#include "pitches.h" // Librería Notas
// Declaración de variables:
int melodia[] = {NOTE_C4, NOTE_G3, NOTE_G3, NOTE_A3, NOTE_G3,0, NOTE_B3, NOTE_C4}; // Notas
int tempos[] = {4, 8, 8, 4, 4, 4, 4, 4}; // cuarta, oitava, etc.
const int zumbador = 4;
const int pulsador=2;
// Configuración:
void setup() {
pinMode(zumbador, OUTPUT);
}
// Programa
void loop() {
int estado = digitalRead(pulsador); // comeza a melodía ao premer no pulsador
if(estado==HIGH){
for (int nota = 0; nota < 8; nota++) { // Imos percorrendo os arrays de 0 a 7
int duracion = 1000/tempos[nota]; // calculamos o tempo de duración de cada nota en ms
tone(zumbador, melodia[nota], duracion); // Soa a nota correspondente
int pausaNota = duracion * 1.30; // Deixa de soar a nota
delay(pausaNota);
noTone(zumbador);
}
}
}
Propostas:
- Varias melodías: Crea varias melodías diferentes mediante funcións. Temos varios pulsadores e cada un fai soar unha melodía diferente.