I used an ultrasonic sensor, an lcd display and a potentiometer to calibrate the display.
On the lcd the minimum and maximum distance measured are displayed. However, for the maximum distance the measurements are constantly wrong.
Here is my code:
#include<LiquidCrystal.h>
LiquidCrystal lcd(12,11,5,4,3,2);
const int trigPin = 7;
const int echoPin = 8;
const int sound = 340;
float distance;
float duration;
float maxdistance = 0;
float mindistance = 100;
float timeA;
void setup(){
lcd.begin(16,2);
lcd.print("Measure Dis");
delay(5);
lcd.clear();
pinMode(trigPin,OUTPUT);
pinMode(echoPin,INPUT);
lcd.setCursor(0,0);
lcd.print("Distance");
Serial.begin(9600);
}
void loop(){
digitalWrite(trigPin,LOW);
delayMicroseconds(2);
digitalWrite(trigPin,HIGH);
delayMicroseconds(10);
digitalWrite(trigPin,LOW);
duration = pulseIn(echoPin,HIGH);
duration = duration/2;
distance = duration * sound/1000000;//distance measured in meters
Serial.println(mindistance);
if(distance > maxdistance){
lcd.setCursor(9,0);
maxdistance = distance;
}
if(distance < mindistance){
lcd.setCursor(9,1);
mindistance = distance;
}
lcd.setCursor(0,0);
lcd.print("MnDistance:");
lcd.print(mindistance);
lcd.setCursor(0,1);
lcd.print("MxDistance:");
lcd.print(maxdistance);
delayMicroseconds(10);
}
Please read the guidelines how to post code. These are on top of every section.
Thanks.
W.R.O.N.G = Wide Range Offset (is) No Good ?
Here is the code
#include<LiquidCrystal.h>
LiquidCrystal lcd(12,11,5,4,3,2);
const int trigPin = 7;
const int echoPin = 8;
const int sound = 340;
float distance;
float duration;
float maxdistance = 0;
float mindistance = 100;
float timeA;
void setup(){
lcd.begin(16,2);
lcd.print("Measure Dis");
delay(5);
lcd.clear();
pinMode(trigPin,OUTPUT);
pinMode(echoPin,INPUT);
lcd.setCursor(0,0);
lcd.print("Distance");
Serial.begin(9600);
}
void loop(){
digitalWrite(trigPin,LOW);
delayMicroseconds(2);
digitalWrite(trigPin,HIGH);
delayMicroseconds(10);
digitalWrite(trigPin,LOW);
duration = pulseIn(echoPin,HIGH);
duration = duration/2;
distance = duration * sound/1000000;//distance measured in meters
Serial.println(mindistance);
if(distance > maxdistance){
lcd.setCursor(9,0);
maxdistance = distance;
}
if(distance < mindistance){
lcd.setCursor(9,1);
mindistance = distance;
}
lcd.setCursor(0,0);
lcd.print("MnDistance:");
lcd.print(mindistance);
lcd.setCursor(0,1);
lcd.print("MxDistance:");
lcd.print(maxdistance);
delayMicroseconds(10);
}
By saying wrong I mean that the values of maximum distance is not right, it is much bigger , on average it shows values between 31-32 meters when a quick change of the distance measures occurs.
system
August 22, 2017, 7:02am
6
Try reducing the reading rate to no more than about 20 Hz.
Thank you,now it's much better