La siguiente rutina permite usar Arduino como un generador de tonos de frecuencia ajustable, se emite un tono seguido de su octava más baja. El prototipo cuenta con LED de operación.
// TREN DE TONOS CON OCTAVA Y LED DE OPERACIÓN
// Este programa controla el sonido emitido usando la funcion tone, a partir de la lectura de un potenciometro,
// conectando los extremos entre tierra y los 5V, y su pata central en el pin análogo A0
// se controla la frecuencia de un tono, 0hz - 1024hz, seguido por otro tono con justo la mitad de la frecuencia del original
// un tren de pulsos que se emiten por un pequeño parlante conectado al pin digital 13 y a tierra.
// El parámetro temporal de la duración de cada pulso, y del tiempo entre pulsos y pulso se varía desde esta rutina.
// Adicionalmente un LED conectado al pin 12 titila con la emisión de cada pulso.
// sencilla rutina preparada para el proyecto FreeAudioLab- por Johan Bocanegra. https://freeaudiolab.wordpress.com
int sensorPin = A0; // seleccione el pin para lectura del potenciometro
int soundPin = 13; // seleccione el pin por el que se emiten los tonos
int ledPin = 12; // seleccione el pin de conexión para el LED de operación
int sensorValue = 0; // variablble para almacenar la lectura del potenciometro
int timer = 200; // variable que controla la duración del pulso, milisegundos.
void setup() {
// declara los pines como SALIDAS:
pinMode(soundPin, OUTPUT);
pinMode(ledPin, OUTPUT);
}
void loop() {
// Lee el valor del sensor:
sensorValue = analogRead(sensorPin);
noTone(13);
digitalWrite(ledPin, HIGH); // prende el LED
tone(soundPin, sensorValue, timer); //emite un sonido con frecuencia ajustable desde la lectura del potenciometro, y duración igual al valor de timer
tone(soundPin, sensorValue/2, timer); // emite un segundo sonido de la misma duración, con una frecuencia igual a la mitad del valor del sensor
digitalWrite(ledPin, LOW); // apaga el LED
delay(timer); // espera por un tiempo igual al valor del parámetro timer.
}