Compare commits
2 Commits
f9802fa127
...
b5de584694
| Author | SHA1 | Date |
|---|---|---|
|
|
b5de584694 | 2 years ago |
|
|
eab381356e | 2 years ago |
2 changed files with 142 additions and 20 deletions
@ -0,0 +1,102 @@
|
||||
// Lesson 61. Ultrasonic Sensor with LCD Display
|
||||
// https://www.youtube.com/watch?v=nC2CDaqJomA
|
||||
|
||||
|
||||
#include <Arduino.h> |
||||
#include <LiquidCrystal.h> |
||||
|
||||
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"); |
||||
} |
||||
} |
||||
Loading…
Reference in new issue