초음파 에코 시간
Coddy Arduino 여정의 디스플레이와 센서 섹션에 포함된 레슨. 24개 중 18번째.
HC-SR04는 박쥐처럼 거리를 측정합니다. 우리가 들을 수 없는 높은 주파수의 클릭 소리를 보내고, 그 반향이 돌아오는 시간을 잽니다. 물체가 멀리 있을수록 반향이 돌아오는 데 더 오래 걸립니다.
신호 핀은 두 개입니다. TRIG에 짧은 HIGH 펄스를 보내면 클릭 소리를 냅니다. 그러면 ECHO가 HIGH가 되고 반향이 돌아올 때까지 HIGH 상태를 유지합니다. 따라서 HIGH 펄스의 길이가 소리가 이동하는 데 걸린 시간입니다.
delayMicroseconds()는 100만분의 1초 단위로 대기하므로 10마이크로초 트리거 펄스를 만들기에 충분히 짧습니다. pulseIn(pin, HIGH)는 핀이 HIGH가 되기를 기다린 다음 HIGH 상태가 유지된 마이크로초 수를 반환합니다. 1초 안에 펄스가 오지 않으면 기다리기를 중단하고 0을 반환합니다.
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10); // 트리거 펄스
digitalWrite(trigPin, LOW);
long duration = pulseIn(echoPin, HIGH);반향은 최대 38000마이크로초 동안 지속될 수 있는데, 이는 int에 담을 수 있는 값보다 크므로 long에 저장하세요.
챌린지
중급TRIG는 9번 핀에, ECHO는 10번 핀에 연결되어 있습니다. loop()에서:
- TRIG에 10마이크로초 HIGH 펄스를 보냅니다
pulseIn(echoPin, HIGH)로 에코를 측정합니다Serial.println()으로 시간을 출력합니다
Run을 누르고 보드에서 물체를 더 가까이 또는 더 멀리 이동한 다음 Check를 누르세요.
직접 해보기
const int trigPin = 9;
const int echoPin = 10;
void setup() {
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
Serial.begin(9600);
}
void loop() {
// TRIG에 10마이크로초 펄스를 보냅니다
// pulseIn()으로 에코 시간을 측정하고 출력합니다
delay(200);
}
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
디스플레이와 센서의 모든 레슨
직접 연습해 보세요: Arduino 플레이그라운드