The Arduino distance meter that I made doesn't display the correct distance. It just displays "0.0 inches".
Here's the code I used:
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
int pingPin = 7;
int inPin = 6;
long duration, inches, cm;
int indec, cmdec;
int inchconv = 147;
int cmconv = 59;
String s1, s2;
void setup() {
lcd.begin(16, 2);
pinMode(pingPin, OUTPUT);
pinMode(inPin, INPUT);
}
void loop()
{
digitalWrite(pingPin, LOW);
delayMicroseconds(2);
digitalWrite(pingPin, HIGH);
delayMicroseconds(10);
digitalWrite(pingPin, LOW);
duration = pulseIn(inPin, HIGH);
inches = microsecondsToInches(duration);
indec = (duration - inches * inchconv) * 10 / inchconv;
cm = microsecondsToCentimeters(duration);
cmdec = (duration - cm * cmconv) * 10 / cmconv;
s1 = String(inches) + "." + String(indec) + "in" + " ";
s2 = String(cm) + "." + String(cmdec) + "cm" + " ";
lcd.setCursor(0, 0);
lcd.print(s1);
lcd.setCursor(0,1);
lcd.print(s2);
delay(100);
}
long microsecondsToInches(long microseconds)
{
return microseconds / inchconv;
}
long microsecondsToCentimeters(long microseconds)
{
return microseconds / cmconv;
}
Here's the wiring diagram:
Might there be a problem in my code, or in my wiring?