domingo, 17 de febrero de 2019


Theremin con Arduino, Buzzer y Sensor de distancia

En clase de tecnología se nos pidió realizar un instrumento musical utilizando:

  • Placa Arduino

  • Buzzer

  •  Sensor de distancia

Descripción
Para empezar con el programa, declaramos las diferentes variables o pines, que 
son el Trigger y el Echo del S.Proximidad; el Buzzer; y las diferentes notas de la 
escala con su frecuencia.

En el setup establecemos si las variables que hemos introducido anteriormente 
son de entrada o salida (INPUT o OUTPUT), junto al tiempo o “delay” que tarda 
en iniciar el programa.

Si la distancia es mayor que 0 pero menor que 10, sonará un DO y así 
sucesivamente con todas las notas de la escala, sin alteraciones. Para identificar 
la distancia a la que se encuentra el objeto (la mano en este caso), el sensor de 
distancia lanzará un pulso con el Pin del Trigger, sabiendo la velocidad a la que se 
desplaza el sonido y midiendo el tiempo que el pulso tarda en regresar al Pin Echo
podremos realizar una transformación:  (duration(tiempo respuesta) * 10 / 292/ 2),
la cual nos permitirá saber la distancia en centímetros. Sabiendo ya la distancia 
en centímetros, podemos hacer sonar cada nota de la escala moviendo la mano
hacia arriba y hacia abajo (dependiendo de los intervalos de distancias que hemos
establecido anteriormente). Cada nota tardará en cambiar 300 milisegundos y 
durará hasta que se retire la mano.

 Montaje 

Empezaremos con el montaje de todos los elementos. En primer lugar, acoplamos  

el Buzzer y el sensor de ultrasonidos a la protoboard, y mediante cables los conectaremos a

los diferentes pines de la placa. El Trigger del sensor de ultrasonidos irá conectado al PIN 10;

el Echo al PIN 9; la pata positiva del Buzzer se conectará al PIN 11. Conectaremos un cable 

desde la corriente de 5v de la placa a una línea de la protoboard representada con un “+” y 

color rojo, y haremos lo mismo con el GND pero en la línea azul con un “-”. En cualquier 

agujero de la línea azul con el GND conectado pasaremos un cable hasta la pata del sensor 

de ultrasonidos donde está escrito GND y haremos lo mismo en la pata negativa del Buzzer. 

A continuación, conectaremos un cable a la línea roja de 5v que vaya hasta la pata del sensor 

que esté indicada con un “5v”.

    

El programa que hemos utilizado es el siguiente:
int EchoPin = 9;
int TriggerPin = 10;
int Buzzer = 11;
int Do = 523;
int Re = 587;
int Mi = 659;
int Fa = 698;
int Sol = 784;
int La = 880;
int Si = 988;
int Dos = 1046;


void setup() {
  Serial.begin(9600);
  pinMode(TriggerPin, OUTPUT);
  pinMode(EchoPin, INPUT);
  pinMode(Buzzer, OUTPUT);
  
}
void loop() {
  int cm = ping(TriggerPin, EchoPin);
  Serial.print("Distancia: ");
  Serial.println(cm);
  delay(300);
     if (cm > 0 && cm<10)
    tone(Buzzer, Do);
     if (cm > 10 && cm<20)
    tone(Buzzer, Re);
     if (cm > 20 && cm<30)
    tone(Buzzer, Mi);
     if (cm > 30 && cm<40)
    tone(Buzzer, Fa);
     if (cm > 40 && cm<50)
    tone(Buzzer, Sol);
     if (cm > 50 && cm<60)
    tone(Buzzer, La);
     if (cm > 60 && cm<70)
    tone(Buzzer, Si);
     if (cm > 70 && cm<80)
    tone(Buzzer, Dos);
     if (cm>80)
    noTone(Buzzer);

}
int ping(int TriggerPin, int EchoPin) {
  long duration, distanceCm;
  
  digitalWrite(TriggerPin, LOW);  
  delayMicroseconds(4);
  digitalWrite(TriggerPin, HIGH);  
  delayMicroseconds(10);
  digitalWrite(TriggerPin, LOW);
  
  duration = pulseIn(EchoPin, HIGH);
  
  distanceCm = duration * 10 / 292/ 2;
  return distanceCm;
  
}