본문 바로가기
Arduino(아두이노) 활용 강좌

Arduino Uno 로 HC-SR04 초음파센서를 사용해서 I2C 1602 캐릭터 LCD에 거리측정값 출력해 보기

by 오마이엔지니어 2022. 10. 14.
반응형

Arduino Uno 로 HC-SR04 초음파센서를 사용해서 I2C 1602 캐릭터 LCD에 거리측정값을 출력해 보는 프로젝트 입니다

HC-SR04 초음파 센서는 VCC, Trig, Echo, GND 4핀으로 구성된 초음파 원리를 이용해
거리를 측정 할 수 있는 센서입니다
측정거리는 20~5000mm 이며, 측정 유효 각도는 15도 이내 입니다
5V전원 공급후 Trig 핀을 통해 10us 의 펄스를 인가하면 센서는 8개의 40KHz 펄스를 발생시키고,
측정된 거리에 따라 150us~25ms의 펄스를 Echo 핀을 통해 출력하는 방식 입니다


사용된 부품

Arduino Uno R3 (Italy)

브래드 보드
HC-SR04 초음파센서 모듈

I2C 1602 Character LCD 모듈

점퍼케이블

구성 배선도

 

사용된 라이브러리

LiquidCrystal_I2C.zip
0.02MB

사용된 예제소스 

HC-SR04 I2C_1602 LCD.txt
0.00MB


주의사항
기본적으로 LiquidCrystal_I2C 라이브러리 설치가 필요합니다
라이브러리 설치 방법은 하단링크 포스팅을 참조해 주세요
Arduino IDE 설치하기

(하단 프로젝트 동영상에서는 HC-SR04 와 I2C 1602 캐릭터 LCD를 브래드보드를 사용해서
5V로 같이 배선하였습니다)
배선도에서는 HC-SR04를 3.3V 전원으로 따로 배선하였습니다
(I2C 1602 캐릭터 LCD가 전류를 많이 소모하기 때문에

센서와 동일한 전원으로 연결하면 화면출력이 제대로 되지 않을 수 있기 때문입니다) 
자신의 개발환경의 전원에 따라서 적절히 선택해서 테스트 하면 됩니다 

예제코드를 살펴보면
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C.h 라이브러를 사용합니다


LiquidCrystal_I2C lcd(0x27, 16, 2);
I2C 1602 캐릭터 LCD 의 I2C 주소는 0x27 입니다
I2C 주소가 틀리다면 I2C 1602 캐릭터 LCD의 백라이트만 들어오고 글씨가 출력되지 않을수 있습니다
꼭 I2C 주소를 확인한 다음 테스트 합니다
I2C 1602 캐릭터 LCD의 I2C 주소 확인하는 방법

int trigPin = 9;    // TRIG pin
int echoPin = 8;    // ECHO pin
trig핀은 아두이노 9번핀에 , echo핀은 아두이노 8번핀에 연결합니다

void setup() {
  lcd.init();               // initialize the lcd
  lcd.backlight();          // open the backlight 
  pinMode(trigPin, OUTPUT); // config trigger pin to output mode
  pinMode(echoPin, INPUT);  // config echo pin to input mode
}
셋업에서 trig 출력값과 echo의 입력값을 받아서

void loop() {
  // generate 10-microsecond pulse to TRIG pin
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);

  // measure duration of pulse from ECHO pin
  duration_us = pulseIn(echoPin, HIGH);

  // calculate the distance
  distance_cm = 0.017 * duration_us;

  lcd.clear();
  lcd.setCursor(0, 0); // start to print at the first row
  lcd.print("Distance: ");
  lcd.print(distance_cm);

  delay(500);
}
루프에서 cm로 측정값을 변환해서 거리를  lcd.print("Distance: ");   lcd.print(distance_cm);
cm로 I2C 1602 캐릭터 LCD에 출력해 줍니다

delayMicroseconds(10);
측정값이 보정되는 딜레이 타임을 확인할 수 있습니다

프로젝트 동영상

반응형

댓글