이번에는 초음파센서를 이용하여 서보모터를 제어해보자.
준비물
NO | 부품명 | 수량 |
1 | 아두이노 UNO R3 | 1 |
2 | 초음파 센서(HC-SR04) | 1 |
3 | 서보모터 | 1 |
5 | 브레드 보드 | 1 |
6 | 점퍼 케이블 | 11 |
회로도

코드
코드 보기#include <Servo.h> Servo myservo; //서보모터 객체 생성 int pos = 10; // 일단 서보모터 각도를 10으로 맞춘다. int echoPin = 7; int trigPin = 8; float duration; float distance; void setup() { myservo.attach(9); //서보모터 핀번호를 9번으로 설정 pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); Serial.begin(9600); } void loop() { digitalWrite(trigPin, HIGH); delay(10); digitalWrite(trigPin, LOW); duration = pulseIn(echoPin, HIGH); // echoPin 이 HIGH를 유지한 시간을 저장 distance = ((float)(340 * duration) / 10000) / 2; // 거리 계산 // 측정된 거리 값를 시리얼 모니터에 출력 Serial.print(distance); Serial.println("cm"); // 측정된 거리가 10cm 이하라면, Servo 90도 회전 if (distance < 10) { pos = 90; myservo.write(pos); delay(1000); } // 측정된 거리가 10cm 이상이라면, Servo -80도 회전 else { pos = 10; myservo.write(pos); } // 0.2초 동안 대기 delay(200); }
실습