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:
Crea unha nova lapela premendo na frecha que hai na parte superior do editor, ponlle o nome pitches.h e copia alí o contido da librería pitches.h.
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.