본문 바로가기

Arduino

[Arduino] 서보모터 실습: 일정한 거리 값(15cm 이내)이 측정되면, 서보모터 움직이기

반응형

일정한 거리 값(15cm 이내)이 측정되면, 서보모터 움직이기


(준비물)

아두이노 우노(Arduino Uno)

USB 케이블

서보모터

초음파 센서

점퍼 케이블

 

▲ 아두이노 우노, USB 케이블
▲ 서보모터, 초음파 센서


(회로 연결)

 

 


#include<Servo.h>   // 서보모터 헤더파일 추가

Servo myservo;      // 서보모터 구조체 선언

int pin_trig = 13;  // 초음파 센서 송신부
int pin_echo = 12;  // 초음파 센서 수신부
float duration = 0, distance = 0; // 초음파 센서를 이용한 주기 및 거리 측정

void setup(){
  pinMode(pin_trig, OUTPUT);
  pinMode(pin_echo, INPUT);
}

void loop(){
  digitalWrite(pin_trig, HIGH); // 초음파 발생하여 주기 측정
  delay(10);
  digitalWrite(pin_trig, LOW);

  duration = pulseIn(pin_echo,HIGH);                // pulseIn() 함수를 이용한 초음파 센서 주기(ms) 반환
  distance = ((float)(340 * duration)) / 10000 / 2; // cm 단위 거리 변환

  if(distance < 15){    // 거리가 15cm 미만일 때
    myservo.attach(9);
    myservo.write(90);  // 서보모터 제어
    delay(100);
    myservo.write(140);
    delay(100);
    myservo.detach();
  }
  else{
    delay(300);
  }
}
반응형