Para comenzar, un Arduino es una placa programable donde nosotros podemos idear el código para nuestros propósitos.
El objetivo de esta práctica es que mediante un sensor de distancia y un Buzzer podamos detectar la distancia y reproducir un sonido en concreto dependiendo de la distancia.
Para ello, utilizaremos el programa Arduino IDE que está disponible para descargar en cualquier ordenador.
Para conseguir nuestro objetivo, necesitaremos:
Un Arduino
Un sensor de distancia
Y por último un Buzzer
Lo primero que tenemos que hacer es iniciar nuestro programa Arduino.
Tenemos que asegurarnos que el puerto que hayamos seleccionado para nuestra placa Arduino esté seleccionada en el USB donde conectaremos nuestro Arduino.
El código que hemos ideado es el siguiente:
#define trigPin 11
#define echoPin 12
#define led 2
int spk=13;
int c[5]={131,262,523,1046,2093};
int cs[5]={139,277,554,1108,2217};
int d[5]={147,294,587,1175,2349};
int ds[5]={156,311,622,1244,2489};
int e[5]={165,330,659,1319,2637};
int f[5]={175,349,698,1397,2794};
int fs[5]={185,370,740,1480,2960};
int g[5]={196,392,784,1568,3136};
int gs[5]={208,415,831,1661,3322};
int a[5]={220,440,880,1760,3520};
int as[5]={233,466,932,1866,3729};
int b[5]={247,494,988,1976,3951};
void setup()
{ Serial.begin (9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(led, OUTPUT);
}
void nota(int frec, int t)
{
tone(spk,frec); // suena la nota frec recibida
delay(t); // para despues de un tiempo t
}
void loop()
{ long duracion, distancia ;
digitalWrite(trigPin, LOW); // Nos aseguramos de que el trigger está desactivado
delayMicroseconds(2);
digitalWrite(trigPin, HIGH); // Activamos el pulso de salida
delayMicroseconds(10);
digitalWrite(trigPin, LOW); // Cortamos el pulso y a esperar el echo
duracion = pulseIn(echoPin, HIGH) ;
distancia = duracion / 2 / 29.1 ;
Serial.println(String(
int Limite = 200 ; // Medida en vacío del sensor
// Para limitar el número de mediciones
if ((distancia)<5)
(nota(262,1000));
else if(distancia<10 )
(nota(d[2],1000));
else if((distancia)<15)
(nota(e[2],1000));
else if((distancia)<20 ) (nota(f[2],1000));
else if((distancia)<25 )
(nota(g[2],1000));
else if((distancia)<30)
(nota(a[2],1000));
else if((distancia)<35 )
noTone (spk);
}
Usaremos el comando if y else para que el programa nos detecte la distancia y pueda reproducir una nota diferente según la distancia, pero antes deberemos definir todas las notas que queramos reproducir, en este caso la escala de Do.
Al final, conseguiremos reproducir esta escala según la distancia.
Os dejamos con un vídeo de demostración de este programa.
Como podemos ver, este código funciona a la perfección. Espero que os haya gustado.
Trabajo hecho por: Juanjo Ventura Ayora, Gerard Amela Batiste y Francisco Vinos Zapata.