아두이노 초음파 거리측정기 (I2C LCD 사용)

아두이노 초음파 거리측정기 (I2C LCD 사용)
HC-SR04 초음파 센서 모듈과 I2C 모듈을 적용한 LCD 디스플레이를 결합하여 측정한 거리가 LCD에 출력되도록 만들었습니다.

HC-SR04

사람이 들을 수 있는 소리의 주파수는 약 20 ~ 20만Hz입니다. 20만Hz 보다 높은 음은 초음파라고 합니다. 초음파는 사람이 직접 들을 수 없습니다. 박쥐의 경우는 이 초음파가 반사되는 메아리를 이용하여 장애물을 피한다고 알려져 있습니다.
초음파는 직진성이 강하기 때문에 주변부의 메아리와 잘 혼동되지 않는다는 장점도 있습니다. 즉, 원하는 방향에서만 메아리가 되돌아 옵니다.

아두이노 초음파 거리측정기
이와 같이 초음파을 이용하여 거리를 측정하는 센서는 많이 판매되고 있습니다.
가장 대표적인 HC-SR04는 인터넷 몰에서 흔하게 볼 수 있으며, 가격도 많이 저렴합니다.

I2C 모듈

LCD 디스플레이를 작동시키기 위해서는 상당히 많은 케이블을 연결해야 합니다.
LCD용 I2C 모듈은 통신 프로토콜을 변형시켜 적은 수의 케이블로도 LCD를 동작시키게 해 줍니다.
아래 사진의 왼쪽이 일반적인 LCD 디스플레이이고, 오른쪽이 I2C 모듈이 적용된 디스플레이입니다.

아두이노 초음파 거리측정기 (I2C LCD 사용)

라이브러리 설치

I2C 모듈을 쉽게 제어하기 위한 라이브러리를 추가합니다. (이미 설치된 경우 건너뜁니다.)

  1. https://github.com/fdebrabander/Arduino-LiquidCrystal-I2C-library에 접속하여 라이브러리 zip 파일을 다운로드 합니다.
    아두이노 초음파 거리측정기 (I2C LCD 사용)
  2. Arduino-LiquidCrystal-I2C-library-master.zip 라이브러리 파일을 아두이노에 추가합니다.
    아두이노 > 스케치 > 라이브러리 포함하기 > .ZIP 라이브러리 추가…
    아두이노 RFID Reading Test

연결 방법

아두이노 초음파 거리측정기 (I2C LCD 사용)

소스 코드

#include  
#include 

LiquidCrystal_I2C lcd(0x3F, 16, 2);

int trigPin = 3;
int echoPin = 2;

void setup()
{
  lcd.begin();
  lcd.backlight();

  pinMode(trigPin, OUTPUT); // 센서 Trig 핀
  pinMode(echoPin, INPUT);  // 센서 Echo 핀
}

void loop()
{
  digitalWrite(trigPin, HIGH);  // 센서에 Trig 신호 입력
  delayMicroseconds(10);        // 10us 정도 유지
  digitalWrite(trigPin, LOW);   // Trig 신호 off

  long duration = pulseIn(echoPin, HIGH);    // Echo pin: HIGH->Low 간격을 측정
  long distance = duration / 29 / 2;         // 거리(cm)로 변환

  char buf[20];
  snprintf(buf, sizeof(buf), "Distance %4d cm", distance);
  lcd.setCursor(0, 0);
  lcd.println(buf);

  delay(200);
}

만약 디스플레이가 제대로 표시되지 않으면, 소스 파일의 네번째 줄을 다음과 같이 수정합니다. (접속 어드레스 변경 작업)

LiquidCrystal_I2C lcd(0x29, 16, 2);

을 아래와 같이 수정

LiquidCrystal_I2C lcd(0x3F, 16, 2);

목차