이번에는 초음파센서를 이용하여 서보모터를 제어해보자.
준비물
| 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);
}
실습
