아두이노

서보모터(Servo Motor) 제어하기

원장샘 0 1,184 2017.05.10 12:48
서보 모터는 일반 모터와는 다르게 회전이 정해져 있기 때문에 정확한 움직임이 필요한 경우에 사용하는 모터이다. 서보 모터란 별도로 존재하는 모터가 아닌 서보(따른다: 사용자의 명령에 따른다)라는 기술이 적용되어 사용자가 원하는 각도, 속도로 움직임이 가능한 것이다. 서보모터는 로봇, 장난감, 드론, CCTV등에서 광범위하게 쓰이고 있다.
우리가 사용하는 서보모터는 SG90이라는 서보모터이며 이는 수많은 제조사가 제작하고 있으므로 괸장히 저렴하지만 0~180도 까지만 회전이 가능하다는 단점도 있다.
서보모터는 3개의 단자가 있다. 서보 모터에 따라서 색상이 다른 경우가 있으니 위 사진을 참고하기 바란다.
주황색(황색 or 흰색) : 데이터 핀
빨간색 : VCC
갈색(검은색) : GND
{이미지:0}

//////////////////////////////////////////////////////////////////////////////////////

#include //Servo 라이브러리를 추가

Servo servo;      //Servo 클래스로 servo객체 생성

int value = 0;    // 각도를 조절할 변수 value


void setup() {

  servo.attach(7);     //맴버함수인 attach : 핀 설정

  Serial.begin(9600); //시리얼 모니터 사용 고고

}


void loop() {

  if(Serial.available())      //시리얼 모니터에 데이터가 입력되면

  {

    char in_data;             // 입력된 데이터를 담을 변수 in_data

    in_data = Serial.read(); //시리얼모니터로 입력된 데이터 in_data로 저장

    if(in_data == '1')        //입력된 데이터가 1이라면

    {

      value += 30;            //각도를 30도 증가시킨다.

      if(value == 210)        //각도가 210도가 되면 (180도보다 커지면)

        value = 0;            //각도를 0으로 초기화

    }

    else                      //그외의 데이터가 입력되면

      value = 0;              //각도를 0으로 초기화


    servo.write(value); //value값의 각도로 회전. ex) value가 90이라면 90도 회전

  }

}

///////////////////////////////////////////////////////////////////



추가 실습문제

1. 시리얼 모니터에서 '2'를 입력하면 30도 감소하는 코드를 작성해 보자..

2. 아두이노를 시작하면 최초 90도에서 시작하여 '1'을 입력하면 30도씩 증가, '2'를 입력하면 30도씩 감소 그외값을 입력하면 기본값은 90도가 되는 코드를 작성해 보자.

위 기본 코드에서 약간의 수정만으로 작성이 가능합니다.

Comments

Category
State
  • 현재 접속자 2 명
  • 오늘 방문자 9 명
  • 어제 방문자 218 명
  • 최대 방문자 383 명
  • 전체 방문자 275,925 명
  • 전체 게시물 2,543 개
  • 전체 댓글수 105 개
  • 전체 회원수 62 명
Facebook Twitter GooglePlus KakaoStory NaverBand