아두이노와 초음파센서를 활용한 초음파거리계By scipia 0 Comments 초음파란소리는 일종의 파동입니다. 소리의 진동은 공기의 분자를 진동시키며 공기를 압축 또는 확장 시킴으로써 파동을 갖게 되는 음파입니다. 사람이 들을 수 있는 소리의 주파수는 20Hz~20kHz입니다. 초음파 모듈과 동작원리여기서는 HC-SR04 초음파 모듈을 사용합니다. HC-SR04는 VCC, TRIG, ECHO, GND의 4개의 핀을 가지고 있으며 5V로 구동됩니다. 검출 거리는 2cm~400cm이며 정밀도는 0.3cm입니다. 소스코드아래는 소스코드입니다. 아두이노 IDE에 붙여넣기 하여 컴파일하고 업로드합니다. // 아두이노 초음파 거리 측정 실험 #include <LiquidCrystal.h> LiquidCrystal lcd(7,8,9,10,11,12);//RS,E,DB4,DB5,DB6,DB7 #define TRIG 3 #define ECHO 4 #define DELAY 500 long duration, distance; void setup() { lcd.begin(16,2); lcd.setCursor(0,0); lcd.write("WWW.SCIPIA.CO.KR"); lcd.setCursor(0,1); lcd.write("LCD1602 TEST OK!"); pinMode(TRIG, OUTPUT); pinMode(ECHO, INPUT); } void loop() { delay(DELAY); digitalWrite(TRIG, LOW); delayMicroseconds(2); digitalWrite(TRIG, HIGH); delayMicroseconds(10); digitalWrite(TRIG, LOW); duration = pulseIn(ECHO, HIGH); distance = duration/58.2; String disp = String(distance); lcd.clear(); lcd.write("Distance :"); lcd.setCursor(0,1); lcd.print(disp); lcd.print(" cm"); } Topic: 아두이노울티메이트키트 Authorscipia 싸이피아 반응형 [아두이노기초-4] 초음파 센서로 거리 측정하기◆ 이번 시간에는 초음파 센서를 이용하여 거리를 구하는 방법을 알아보자 ◆ 실생활 사용 예 : 거리측정기, 자동차 전/후방센서
<초음파센서 원리> - 초음파 발신부에서 초음파를 쏴서 물체에 반사되어 돌아오는 시간을 측정하면 거리=속도X시간으로 거리측정이 가능 - 초음파는 사방으로 퍼지는 특성 때문에 거리가 멀어지면 반사되어 되돌아 오는 초음파의 양도 급속히 적어지게 됨 - 굴곡진 지형이거나 중간에 물체가 있을 경우는 정면에 보이는 물체외의 직진 거리가 아니고 중간에서 반사되어 오는 거리를 측정하게 되어 부정확한 거리측정이 된다. (정밀한 거리 측정을 위해서는 레이저처럼 직진성 빛을 사용하는 거리측정 방식 필요) - 왕복이므로 거리 = (시간 X 속도) ÷ 2를 해줘야 한다. 초음파센서
<회로도> - VCC : (+)극 5V 전원 연결 - Trig : 입력단자. 2번핀(D2)에 연결 - Echo : 출력단자. 3번핀(D3)에 연결 - GND : (-)극 GND에 연결
<소스코드>
◆ 코드 설명 Serial.begin(9600) : 시리얼 통신의 통신속도는 300~115200으로 설정가능하지만, 보통 9600으로 설정함 pinMode(trig, OUTPUT) : 보드에서 사용할 디지털핀의 모드(입력, 출력) 설정. 2번 핀을 출력을 위한 모드로 설정 (trigger, 초음파 발신부) pinMode(echo, INPUT) : 보드에서 사용할 디지털핀의 모드(입력, 출력) 설정. 3번 핀을 입력을 위한 모드로 설정 (echo, 초음파 수신부) digitalWrite(trig, HIGH) : trig(2) 핀에 HIGH(1, ON)값을 부여 (10ms간 초음파 발신 ON) delayMicroseconds(10) : 10ms 대기 digitalWrite(trig, LOW) : trig(2) 핀에 LOW(0, OFF)값을 부여 (초음파 발신 OFF) pulseIn(echo, HIGH) : 설정신호(echo)인 수신부가 다시 입력받을때까지 걸리는 시간을 측정 반환값 - 설정 신호가입력될때까지의 시간을 반환, 신호 없으면 0 반환 [단위 : us(마이크로초)] 거리 = 시간 X 속도 ÷ 2 Serial.print(distance) : 변수 distance 값을 출력, 한 줄 띄어쓰기 하지 않음 Serial.println("cm") : 문자열 cm 값을 출력, 한 줄 띄어쓰기 함 delay(100) : 100ms = 0.1초 후 다음 loop를 실행 반응형 공유하기 게시글 관리 구독하기Half Moon'IT > 아두이노' 카테고리의 다른 글[아두이노] 키보드 라이브러리 사용하기 (0)2022.01.08[아두이노] 라이브러리 추가하기 (1)2022.01.08[아두이노기초-3] 적외선 센서로 움직임 감지하기 (0)2021.12.26[아두이노기초-2] 문자열 / 정수 출력, LED 제어하기 (0)2021.12.26[아두이노기초-1] 시작 전 필수로 알아야 할 사항 (0)2021.12.25 |