#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
const int TRIG_PIN = D5;
int ECHO_PIN = D6;
void setup() {
Serial.begin(115200);
lcd.begin();
lcd.display(); //เปิดหน้าจอ
lcd.backlight(); //เปิดไฟ backlight
lcd.clear(); //ล้างหน้าจอ
pinMode(TRIG_PIN, OUTPUT); // config trigger pin to output mode
pinMode(ECHO_PIN, INPUT); // config echo pin to input mode
}
void loop(){
long duration, cm;
// generate 10-microsecond pulse to TRIG pin
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(5);
digitalWrite(TRIG_PIN, LOW);
// measure duration of pulse from ECHO pin
duration = pulseIn(ECHO_PIN, HIGH);
// calculate the distance
cm = microsecondsToCentimeters(duration);
lcd.setCursor(0, 0); // กำหนดให้ เคอร์เซอร์ อยู่ตัวอักษรตำแหน่งที่0 แถวที่ 1 เตรียมพิมพ์ข้อความ
lcd.print("Ultrasonic M.4/1"); //พิมพ์ข้อความ
lcd.setCursor(1, 1); // กำหนดให้ เคอร์เซอร์ อยู่ตัวอักษรกำแหน่งที3 แถวที่ 2 เตรียมพิมพ์ข้อความ
lcd.print("Distance= "); //พิมพ์ข้อความที่จะแสดง
lcd.print(cm); //พิมพ์ข้อความที่จะแสดง
lcd.print(" cm"); //พิมพ์ข้อความที่จะแสดง
Serial.print(cm);
Serial.println("cm");
delay(500);
lcd.clear();
}
long microsecondsToCentimeters(long microseconds)
{
// ความเร็วเสียงในอากาศประมาณ 340 เมตร/วินาที หรือ 29 ไมโครวินาที/เซนติเมตร
// ระยะทางที่ส่งเสียงออกไปจนเสียงสะท้อนกลับมาสามารถใช้หาระยะทางของวัตถุได้
// เวลาที่ใช้คือ ระยะทางไปกลับ ดังนั้นระยะทางคือ ครึ่งหนึ่งของที่วัดได้
return microseconds / 29 / 2;
}