Bueno amigos, la semana pasada subi un video donde probábamos la eficacia de un sensor de proximidad. El sensor de proximidad, para ser precisos, el SRF-05, está pensado para conectarse con un microcontrolador PIC, pero nosotros tenemos una arduino, por lo tanto, tuvimos que adaptar unas cuantas cosas al arduino. El esquema del SRF-05 es así:
solo se conectan las patillas que se encuentran en este lugar, en el lado izquierdo, pero tenemos que tener cuidado con la posición del sensor.
El código es el siguiente, ya explicado:
//Código que enciende y apaga un led dependiendo de lo cerca que un sensor (SRF-05) detecte un objeto a una cierta distancia. Realizado por José Ángel Salvador//
int led = 13; /* Declaramos la variable entera con el número de pin en que se conectará el led */
int echoPin = 3; /* Este es el pin echo output en la figura del blog de arriba, conectaremos, por tanto el echo output al pin número 3 de nuestra arduino */
int initPin = 2; /* Este es el pin trigger input, por el que introduciremos un pulso de 10 microsegundos al sensor, para que se active y empiece a emitir radio. Conectado al pin 2 */
int minn = 35; /* Aquí indicamos la distancia en centímetros (puesto que el sensor está más o menos calibrado) a la que queremos que el sensor se active */
unsigned long pulseTime = 0; /* Declaramos esta variable como un entero largo sin signo, en el que más tarde guardaremos el valor en microsegundos de lo que tarda el pulso de ultra sonidos en volver al receptor */
void setup() {
pinMode(initPin, OUTPUT); /* Incialicamos pin led, y initPin (activacion del sensor) como salidas, y el de lectura del eco, de entrada */
pinMode(echoPin, INPUT);
pinMode(led, OUTPUT);
Serial.begin(9600); /* Comenzamos el monitor serial, para que se nos muestre en pantalla la distancia a la que está el objeto */
}
void loop() {
digitalWrite(initPin, HIGH); /* Inicializamos el pin de activación con valor lógico alto, y lo mantenemos 10 microsegundos hasta desactivarlo */
delayMicroseconds(10);
digitalWrite(initPin, LOW);
pulseTime = pulseIn(echoPin, HIGH); /* Definimos la variable pulseTime como el valor en microsegundos de lo que tarda el sensor en recibir el haz de ultrasonidos */
int distancia = pulseTime/61; /* Esta variable es únicamente para calibrar */
Serial.println(distancia, DEC); /* Imprime en pantalla la distancia en centímetros a la que se encuentra el objeto */
if (distancia < minn) { /* Declaramos la condición para que se encienda el led, en este caso, que la distancia hasta el objeto sea menor que la distancia indicada */
digitalWrite(led, HIGH);
}
else {
digitalWrite(led, LOW);
}
}
// Si podemos cambiar la distancia cambiando el valor de la variable minn, indicando un numero en centímetros. La calibración que le hice es altamente precisa entre 4-35 centímetros. //
// Un saludo a todos. Hasta luego. //
Si este código lo copiáis, y lo pegáis en el compilador de arduino, funcionará perfectamente. En caso contrario, dejad un comentario y os solucionaré la duda ;)
Hasta luego!
No hay comentarios:
Publicar un comentario
¿Quieres opinar? ?¿O preguntarme algo?
Pregunta, sin miedo ;)