// I2C LCD 라이브러리 인크루드
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2); // LCD 설정: 주소 0x27, 16칸, 2줄
const int trigPin = 2; //Trig 핀 할당
const int echoPin = 3; //Echo 핀 할당
void setup()
{
pinMode(trigPin, OUTPUT); //Trig 핀 output으로 세팅
pinMode(echoPin, INPUT); //Echo 핀 input으로 세팅
Serial.begin(115200); //시리얼 초기화
Serial.println("Distance Measure (Ultrasonic Sensor)");
lcd.init(); // LCD 초기화
lcd.backlight(); // backlight 켜기
lcd.print("Distance Measure"); // 문자열 “Hello, sensor!” 표시
}
void loop()
{
unsigned long duration, distance; //기본 변수 선언
//Trig 핀으로 10us의 pulse 발생
digitalWrite(trigPin, LOW); //Trig 핀 Low
delayMicroseconds(2); //2us 유지
digitalWrite(trigPin, HIGH); //Trig 핀 High
delayMicroseconds(10); //10us 유지
digitalWrite(trigPin, LOW); //Trig 핀 Low
//Echo 핀으로 들어오는 펄스의 시간 측정
//pulseIn함수가 호출되고 펄스가 입력될 때까지의 시간. us단위로 값을 리턴
duration = pulseIn(echoPin, HIGH);
//음파가 반사된 시간을 거리로 환산
//음파의 속도는 340m/s 이므로 1cm를 이동하는데 약 29us
//따라서, 물체와의 거리 = 왕복시간 * 음속(0.034) / 2
//또는 물체와의 거리 = 왕복시간 / 음파이동시간(29) / 2
distance = duration * 0.034 / 2; //센치미터로 환산
//distance = duration / 58.8; //센치미터로 환산
Serial.print(distance);
Serial.println("cm");
lcd.setCursor(0,1); // 커서를 (0열,1행)에 위치
lcd.print(distance);
lcd.print("cm ");
delay(100);
}