// Lesson 61. Ultrasonic Sensor with LCD Display // https://www.youtube.com/watch?v=nC2CDaqJomA #include #include const int rs = 7, en = 8, d4 = 9, d5 = 10, d6 = 11, d7 = 12; LiquidCrystal lcd(rs, en, d4, d5, d6, d7); int trigPin = 2; int echoPin = 3; int pingTravleTime; float distance; const int pulsTime = 40; // uS const float pingTimeToDistance = 0.017; // uS to cm, travletime[s] * 340 m/s / 2 int numReadings = 50; float averageMeasurements; float averageTime; float bucketDist = 0.0; float bucketTime = 0.0; int buttonPin = A0; int buttomState; int setTime = 500; int dt = 1000; void setup() { // put your setup code here, to run once: Serial.begin(9600); Serial.println("Measurring Distance"); delay(setTime); lcd.begin(16, 2); lcd.print("Hello, World!"); pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); pinMode(buttonPin, INPUT); digitalWrite(buttonPin, HIGH); } void loop() { // put your main code here, to run repeatedly buttomState = digitalRead(buttonPin); while (buttomState == HIGH) { lcd.setCursor(0, 0); lcd.print("Place the Target"); lcd.setCursor(0, 1); lcd.print("Press the Button"); buttomState = digitalRead(buttonPin); } { bucketDist = 0.0; bucketTime = 0.0; for (int i = 0; i < numReadings; i++) { digitalWrite(trigPin, LOW); delayMicroseconds(pulsTime); digitalWrite(trigPin, HIGH); delayMicroseconds(pulsTime); digitalWrite(trigPin, LOW); pingTravleTime = pulseIn(echoPin, HIGH); delay(25); distance = pingTravleTime * pingTimeToDistance; // Travel time to distance in cm bucketDist = bucketDist + distance; bucketTime = bucketTime + pingTravleTime; } averageMeasurements = bucketDist / numReadings; averageTime = bucketTime / numReadings; Serial.print("Ping Time and Distance:"); Serial.print("Ping Time: "); Serial.print(averageTime); Serial.print(" Distance: "); Serial.print(averageMeasurements); Serial.println(" cm"); // Display on LCD lcd.clear(); lcd.setCursor(0, 0); lcd.print("Ping Time: "); lcd.print(averageTime); lcd.print("us"); lcd.setCursor(0, 1); lcd.print("Distance: "); lcd.print(averageMeasurements); lcd.print("cm"); } }