초음파 센서로 서보모터 제어하기

이번에는 초음파센서를 이용하여 서보모터를 제어해보자.

준비물

NO부품명수량
1아두이노 UNO R31
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);
}

실습

Leave a Reply

Your email address will not be published. Required fields are marked *