본문 바로가기
C++

[C++] 아두이노로 초음파센서 사용하기

by teamnova 2024. 1. 22.

안녕하세요. 이번 시간에는 아두이노로 초음파센서를 사용해서 거리 측정하는 예제를 진행하겠습니다.

 

아두이노에 대해 기본적인 내용을 알고 싶다면 아래 게시글을 참고해주세요. 

https://stickode.tistory.com/1044

 

[C++] 아두이노로 서보 모터 사용하기

이번 시간에는 아두이노로 서보 모터 사용하는 예제를 진행하겠습니다. 1. 아두이노란? 아두이노(Arduino)는 사용하기 쉬운 하드웨어와 소프트웨어를 기반으로 한 오픈 소스 전자 플랫폼입니다.

stickode.tistory.com

 

1. 초음파센서란?

예제에서는 HS-SR04 초음파센서를 사용하겠습니다.

판매링크는 다음과 같습니다. https://www.devicemart.co.kr/goods/view?no=1076851

초음파센서란 약 20kHz 이상의 높은 주파수 소리를 보낸 후 반사되어 돌아오는 시간차를 계산해서 거리를 측정할 수 있는 센서입니다. 

 

TRIG 에서 초음파가 발사되고, ECHO 에서 반사된 초음파를 받습니다. 

 

 

2. 환경 세팅

아두이노 우노, 브래드보드, 초음파센서

 

 

3. 회로도

 

 

4. 코드

int echo = 8;  // 초음파센서 ECHO 핀 번호
int trig = 12; // 초음파센서 TRIG 핀 번호

void setup() {
  Serial.begin(9600);  // 시리얼 통신을 9600 bps로 초기화
  pinMode(trig, OUTPUT);  // TRIG 핀을 출력으로 설정
  pinMode(echo, INPUT);   // ECHO 핀을 입력으로 설정
}

void loop() {
  float cycle_time;  // 초음파 신호의 왕복 시간을 저장하는 변수
  float distance;    // 계산된 거리를 저장하는 변수
  
  digitalWrite(trig, HIGH);  // 초음파 신호를 생성하기 위해 TRIG 핀을 HIGH로 설정
  delay(10);                  // 10 마이크로초 동안 신호를 유지
  digitalWrite(trig, LOW);   // TRIG 핀을 LOW로 설정하여 초음파 신호 생성 완료
  
  cycle_time = pulseIn(echo, HIGH);  // ECHO 핀에서 초음파의 왕복 시간을 측정하여 저장
  
  // 거리 계산: 초음파는 속도가 340m/s 이므로, 왕복 시간을 거리로 변환 (2로 나누어야 정확한 단일 방향 거리)
  distance = ((340 * cycle_time) / 10000) / 2;  

  Serial.print("Distance:");  // 거리 정보 출력 시작
  Serial.print(distance);      // 계산된 거리 값 출력
  Serial.println("cm");        // 거리 단위인 센티미터(cm) 출력
  delay(100);                  // 100 밀리초(0.1초) 동안 대기.
  							   // 0.1초 간격으로 거리 측정.
}

 

 

5. 실행

실행 영상