Circuit Diagram
Program Code
#include <LiquidCrystal.h>
LiquidCrystal lcd(11, 10, 9, 7, 6, 5, 4);
int pingPin = 13;
int inPin = 12;
int duration,inches,cm;
void setup() {
Serial.begin(9600);
lcd.begin(16, 2);
lcd.print("testing...");
}
void loop() {
// Establish variables for duration of the ping,
// and the distance result in inches and centimeters:
// long duration, inches, cm;
// The PING))) is triggered by a HIGH pulse of 2 ms or more
// Give a short LOW pulse beforehand to ensure a clean HIGH pulse:
pinMode(pingPin, OUTPUT);
digitalWrite(pingPin, LOW);
delayMicroseconds(2);
digitalWrite(pingPin, HIGH);
delayMicroseconds(10);
digitalWrite(pingPin, LOW);
// The same pin is used to read the signal from the PING))):
// a HIGH pulse whose duration is the time (in microseconds)
// from the sending of the ping to the reception of its echo off
// of an object.
pinMode(inPin, INPUT);
duration = pulseIn(inPin, HIGH);
// Convert the time into a distance
inches = microsecondsToInches(duration);
cm = microsecondsToCentimeters(duration);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(inches);
lcd.print("in, ");
lcd.print(cm);
lcd.print("cm");
delay(100);
Serial.print(inches);
Serial.print("in, ");
Serial.print(cm);
Serial.print("cm");
Serial.println();
delay(100);
}
long microsecondsToInches(long microseconds) {
// According to Parallax's datasheet for the PING))),
// there are 73.746 ms/in (i.e. sound travels at 1130 fps).
// This gives the distance traveled by the ping, outbound,
// and return, so divide by 2 to get the distance of the obstacle.
return (microseconds/74)/2;
}
long microsecondsToCentimeters(long microseconds) {
// The speed of sound is 340 m/s or 29 ms/cm.
// The ping travels out and back, so to find the distance
// of the object, take half of the distance traveled.
return (microseconds/29)/2;
}
Ultra Sonic Sensor HEX file:
No comments:
Post a Comment