Cómo funciona un Sensor SR04
En el programa, queremos calcular la distancia de un objeto delante del sensor ultrasónico. Este sensor puede enviar un "ping" en un momento dado y recibir el ping rebotando sobre un objeto en otro momento.
Un ping no es más que un sonido que es inaudible para el oído humano y por esta razón este sensor se llama "ultrasónica".
El sensor envía un ping en un tiempo t1 y recibir el ping que despide en un tiempo t2.
Sabiendo la velocidad del sonido, el Δt de diferencia de tiempo = t2 - t1 nos puede dar una idea de la distancia de un objeto.
Ejemplo, si Δt = 500 microsegundos, sabemos que tomó 250 microsegundos para el ping golpear un objeto y otro 250 microsegundos a volver.
La velocidad aproximada del sonido en aire seco viene dada por la fórmula:
c = 331.5 + 0,6 * [temperatura del aire en grados Celsius]
A 20° C, c = 331.5 + 0.6 * 20 = 343,5 m/s
Si convertimos la velocidad en centímetros por microsegundos obtenemos:
c = 343.5 * 100 / 1000000 = 0,03435 cm/ss
La distancia es por lo tanto, D = (Δt/2) * c
o D = 250 * 0.03435 = 8,6 cm
En lugar de utilizar la velocidad del sonido, también podemos usar el "ritmo de sonido".
El ritmo del sonido = 1 / velocidad del sonido = 1 / 0.03435 = 29,1 ss/cm
En este caso se convierte la ecuación para calcular la distancia: D = (Δt/2) / paso del sonido
y para el ejemplo anterior: D = 250 / 29,1 = 8,6 cm
Deja comienzo! Aquí está el código!
_______________________________________________________________________________________________
incluir el código de biblioteca:
#include
#define trigPin 0
#define echoPin 7
inicializar la biblioteca con los números de los pines de interfaz
LiquidCrystal lcd (2, 1, 5, 4, 3, 2);
void setup() {}
pinMode (trigPin, salida);
pinMode (echoPin, entrada);
}
void loop() {}
establecer el cursor a la columna 0, línea 1
(Nota: la línea 1 es la segunda fila, ya que cuenta comienza con 0):
lcd.setCursor (0, 1);
imprimir el número de segundos desde puesta a cero:
int duración, distancia;
digitalWrite (trigPin, HIGH);
delayMicroseconds(1000);
digitalWrite (trigPin, LOW);
duración = pulseIn (echoPin, HIGH);
distancia = (duración/2) / 29,1;
Si (distancia > = 200 || distancia < = 0) {}
LCD.Print ("Wobot: D");
}
Else {}
LCD.Print(Distance);
LCD.Print ("cm");
}
Delay(500);
}
________________________________________________________________________________________________
Éste se enganchará a su 16 X 2 LCD e imprimir la distancia
gancho para arriba LCD para RS = Pin 2 E = Pin 1 D4 = Pin 5 D5 = D6 Pin4 = Pin 3 D7 = Pin 2
SR04 Disparo al Pin 0
SR04 Echo al Pin 7
Espero que esto ayude!
el código no utiliza la pantalla LCD, pero imprime las lecturas de CM en el monitor Serial en herramientas en el cargador de programa de Arduino.
________________________________________________________________________________________
/*
Sensor de distancia HC-SR04 Ping]
VCC a arduino 5v GND a GND de arduino
Echo que el Arduino pin 13 Trig a Arduino pin 12
Más información en: http://goo.gl/kJ8Gl
*/
#define trigPin 0
#define echoPin 7
void setup() {}
Serial.Begin (9600);
pinMode (trigPin, salida);
pinMode (echoPin, entrada);
}
void loop() {}
int duración, distancia;
digitalWrite (trigPin, HIGH);
delayMicroseconds(1000);
digitalWrite (trigPin, LOW);
duración = pulseIn (echoPin, HIGH);
distancia = (duración/2) / 29,1;
Si (distancia > = 200 || distancia < = 0) {}
Serial.println ("fuera de rango");
}
Else {}
Serial.Print(Distance);
Serial.println ("cm");
}
Delay(500);
}
_____________________________________________________________________________________________