Diferència entre revisions de la pàgina «Theremin»
(Es crea la pàgina amb «== Introducción == Consiste en conectar a Arduino un sensor de proximidad que transmite un ultrasonido...».) |
|||
Línia 107: | Línia 107: | ||
== Enlace a video == | == Enlace a video == | ||
− | [ | + | [https://www.youtube.com/watch?v=Pfql7gjtD9c Video Theremin] |
== Webgrafia == | == Webgrafia == | ||
− | [ | + | [http://elcajondeardu.blogspot.com.es/2014/03/tutorial-sensor-ultrasonidos-hc-sr04.html Sensor ultrasonidos] |
− | + | [https://proyectos2bach.wordpress.com/arduino-sensor-de-distancia-alvaro-cordero-y-pablo-aguilar Arduino Sensor] | |
− | [ | ||
[[Category:Arduino]] | [[Category:Arduino]] |
Revisió del 16:53, 17 maig 2016
Introducción
Consiste en conectar a Arduino un sensor de proximidad que transmite un ultrasonido, con objetivo de conseguir diferentes notas musicales que conseguimos por el tiempo que transcurre entre el envío y la recepción del ultrasonido.
Material Necesario
Para elaborar el proyecto, necesitamos:
- Placa Protoboard (opcional)
- Sensor de proximidad (modelo HC-SR04)
Objetivos del proyecto
Aprovechando que la velocidad del ultrasonido del sensor de proximidad en el aire es de valor 340 m/s, o 0,034 cm/microseg. Para calcular la distancia, resolveremos v=d/t despejamos d=v·t, siendo v la constante anteriormente citada y t el valor devuelto por el sensor a la placa Arduino. También habrá que dividir el resultado entre 2 dado que el tiempo recibido es el tiempo de ida y vuelta.
Conexion
Conectamos el zumbador a la placa protoboard de forma vertical. Después conectamos dos cables al lado de cada pata del zumbador (tienen que estar a la derecha o izquierda, no arriba o abajo), un extremo al Arduino en el pin del tierra (gnd) y otro en uno de los pins digitales de salida o entrada (pin 12 en nuestro caso).
Por otro lado Conectamos el sensor de proximidad al Arduino de la siguiente manera:
conectamos el extremo Vcc del sensor al pin de 5V del Arduino, el extremo Trig al pin 9, el extremo Echo al pin 8 y por ultimo el extremo GND del sensor al GND del Arduino.
Código
long distancia;
long tiempo;
int speakerPin = 12;
int numTones = 8;
int tones[] = {261, 294, 329, 349, 392, 440, 493, 523};
// mid C D E F G A B C
void setup(){
Serial.begin(9600);
pinMode(9, OUTPUT); /*activación del pin 9 como salida: para el pulso ultrasónico*/
pinMode(8, INPUT); /*activación del pin 8 como entrada: tiempo del rebote del ultrasonido*/}
void loop(){
digitalWrite(9,LOW); /* Por cuestión de estabilización del sensor*/
delayMicroseconds(5);
digitalWrite(9, HIGH); /* envío del pulso ultrasónico*/
delayMicroseconds(10);
tiempo=pulseIn(8, HIGH); /* Función para medir la longitud del pulso entrante. Mide el tiempo que transcurrido entre el envío
del pulso ultrasónico y cuando el sensor recibe el rebote, es decir: desde que el pin 12 empieza a recibir el rebote, HIGH, hasta que
deja de hacerlo, LOW, la longitud del pulso entrante*/
distancia= int(0.017*tiempo); /*fórmula para calcular la distancia obteniendo un valor entero*/
/*Monitorización en centímetros por el monitor serial*/
Serial.print("Distancia ");
Serial.print(distancia);
Serial.println(" cm");
delay(100);
if (distancia>5 && distancia<10)
{
tone(speakerPin, tones[0]);
delay(500);
}
if (distancia>10 && distancia<15)
{
tone(speakerPin, tones[1]);
delay(500);
}
if (distancia>15 && distancia<20)
{
tone(speakerPin, tones[2]);
delay(500);
}
if (distancia>20 && distancia<25)
{
tone(speakerPin, tones[3]);
delay(500);
}
if (distancia>25 && distancia<30)
{
tone(speakerPin, tones[4]);
delay(500);
}
if (distancia>30 && distancia<35)
{
tone(speakerPin, tones[5]);
delay(500);
}
if (distancia>35 && distancia<40)
{
tone(speakerPin, tones[6]);
delay(500);
}
if (distancia>40 && distancia<50)
{
tone(speakerPin, tones[7]);
delay(500);
}
}