본문 바로가기

Programming/아두이노

아두이노와 서보모터(SG90)

아두이노와 서보모터(SG90)

아두이노를 이용한 서보 모터 (SG90)의 구동은 비교적 간단합니다. 그래서 두개의 서보모터를 인형 팔에 붙여서 청기 백기 놀이를 해보겠습니다.

1번 서보모터 핀배열 (왼쪽팔 모터)

  • 주황 ==> 디지털 5번
  • 빨강 ==> 5V
  • 갈색 ==> GND

2번 서보모터 핀배열 (오른쪽팔 모터)

  • 주황 ==> 디지털 6번
  • 빨강 ==> 5V
  • 갈색 ==> GND

시리얼로 1, 2, 3, 4를 입력받고 그에 따라서 모터가 동작합니다. 서보모터는 주어진 입력값 만큼 회전을 합니다.

  1. 왼쪽팔 들기
  2. 오른쪽팔 들기
  3. 둘다 들기
  4. 둘다 내리기

스케치 코드

왼쪽팔은 디지털 6번핀으로 명령을 주고 오른쪽팔은 디지털 5번핀으로 명령을 줍니다. 시리얼포트로 입력을 받아서 설정된 값만큼 모터를 회전시킵니다.

#include <Servo.h>

Servo rightServo;
Servo leftServo;

int pos = 0;
int rightPin = 6;
int leftPin = 5;
int rightDegree = 5;
int leftDegree = 5;

void setup() {
  // put your setup code here, to run once:
  leftServo.attach(leftPin);
  rightServo.attach(rightPin);
    leftServo.write(5);    
    rightServo.write(5);

  Serial.begin(9600);
}

void loop() {
  // put your main code here, to run repeatedly:

  if(Serial.available()){
    char command;
    command = Serial.read();

    if(command == '1'){
      rightDegree = 5;
      leftDegree = 145;
    }

    if(command == '2'){
      rightDegree = 145;
      leftDegree = 5;
    }

    if(command == '3'){
      rightDegree = 145;
      leftDegree = 145;
    }

    if(command == '4'){
      rightDegree = 5;
      leftDegree = 5;
    }

    leftServo.write(leftDegree);    //오른쪽 서보모터 회전
    rightServo.write(rightDegree);    //왼쪽 서보모터 회전

    //Serial.println(spinDegree);
  }
  else{

  }
}