domingo, 10 de febrero de 2019

Prueba Arduino+Sensor de movimiento+buzzer por Juanjo Ventura Ayora, Gerard Amela Batiste y Francisco Vinos Zapata.

Hoy vamos a interactuar con una de las muchas posibilidades que tiene nuestro Arduino.
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
Resultado de imagen de arduino uno
Un sensor de distancia
Parallax Inc Kit de desarrollo de sensores para Sensor ultrasónico de distancia, 28015

Y por último un Buzzer
Resultado de imagen de 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;                     
                    // altavoz a GND y pin 13
int c[5]={131,262,523,1046,2093};       // frecuencias 4 octavas de Do
int cs[5]={139,277,554,1108,2217};      // Do#
int d[5]={147,294,587,1175,2349};       // Re
int ds[5]={156,311,622,1244,2489};    // Re#
int e[5]={165,330,659,1319,2637};      // Mi
int f[5]={175,349,698,1397,2794};       // Fa
int fs[5]={185,370,740,1480,2960};     // Fa#
int g[5]={196,392,784,1568,3136};     // Sol
int gs[5]={208,415,831,1661,3322};   // Sol#
int a[5]={220,440,880,1760,3520};      // La
int as[5]={233,466,932,1866,3729};    // La#
int b[5]={247,494,988,1976,3951};      // Si



     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);              // Para asegurarnos de que el trigger esta LOW
            digitalWrite(trigPin, HIGH);       // Activamos el pulso de salida
            delayMicroseconds(10);             // Esperamos 10µs. El pulso sigue active este tiempo
            digitalWrite(trigPin, LOW);        // Cortamos el pulso y a esperar el echo
            duracion = pulseIn(echoPin, HIGH) ;
            distancia = duracion / 2 / 29.1  ;
            Serial.println(String(distancia) + " cm.") ;
            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 )
                                                                (nota(b[2],1000));
       noTone (spk);
        }
Tenemos que definir todos los pines donde vayan conectados los elementos.
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.