Rutina ARDUINO No.3 Tren de tonos con frecuencia y duración ajustable

La siguiente rutina permite controlar desde un potenciometro el tono y la duración de un tren de tonos. El prototipo cuenta con LED de operación.

// TREN DE TONOS Y DURACIÓN VARIABLE 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 se multiplica por el valor del sensor de modo que la duración de cada pulso depende del sensor.
// 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 * sensorValue); //emite un sonido con frecuencia ajustable desde la lectura del potenciometro, y duración igual al valor de timer
  tone(soundPin, sensorValue / 2, timer * sensorValue); // 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 * sensorValue);  // espera por un tiempo igual al valor del parámetro timer. 
}

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s