본문 바로가기
C++

[C++] 아두이노로 서보 모터 사용하기

by teamnova 2023. 12. 17.
728x90

이번 시간에는 아두이노로 서보 모터 사용하는 예제를 진행하겠습니다.

 

1. 아두이노란?

아두이노(Arduino)는 사용하기 쉬운 하드웨어와 소프트웨어를 기반으로 한 오픈 소스 전자 플랫폼입니다.

하드웨어와 소프트웨어를 제공해주어서 여러가지 프로젝트를 진행할 수 있습니다.

더 자세한 정보는 아래 아두이노 공식 홈페이지를 참고해주세요.

https://www.arduino.cc/

 

Arduino - Home

 

www.arduino.cc

 

이 예제에서는 아두이노 우노(Arduino Uno)와 C++ 을 사용하도록 하겠습니다.

 

 

2. 환경 세팅

아두이노 우노(Arduino Uno)를 준비합니다.

아두이노 우노

 

공식홈페이지에서 정품을 구매하거나 다른 곳에서 호환보드를 구매할 수 있습니다.

https://store.arduino.cc/products/arduino-uno-rev3

 

Arduino Uno Rev3

Arduino Uno is a microcontroller board based on the ATmega328P (datasheet). It has 14 digital input/output pins (of which 6 can be used as PWM outputs), 6 analog inputs, a 16 MHz ceramic resonator (CSTCE16M0V53-R0), a USB connection, a power jack, an ICSP

store.arduino.cc

 

다음으로 아두이노 IDE를 설치합니다.

아래 링크에서 본인 컴퓨터 환경에 맞는 IDE를 설치해주세요.

https://www.arduino.cc/en/software 

 

Software

Open-source electronic prototyping platform enabling users to create interactive electronic objects.

www.arduino.cc

 

설치 후 실행하면 아래와 같은 창이 뜹니다.

 

setup() 함수는 초기에 한번 실행되는 함수이고,

loop() 함수는 setup() 함수가 실행된 이후 계속 반복해서 실행되는 함수입니다.

 

아두이노 보드를 PC에 연결한 후 IDE에서 인식이 되는지 확인합니다.

아두이노 우노와 PC 연결

 

 

IDE에서 인식되면 좌측에 부호가 생깁니다. 

인식이 안 됐을때

 

인식이 됐을때

 

 

인식이 안 된다면 Tools > Port 를 열어서 선택해주세요.

 

 

2. 서보 모터

서보 모터는 입력 신호에 따라 정해진 각도로 회전하거나 위치를 제어하는 모터입니다.

이 예제에서는 아래 서보 모터를 사용하겠습니다.

https://www.devicemart.co.kr/goods/view?no=12503474

 

[정품] SG90 아날로그 서보모터 (기어세트 포함)

기어세트 포함 / 작동 전압 : 4.8v / 크기 : 23 × 12.2x29mm / 작동 속도 : 0.12초 / 60도 (4.8v)

www.devicemart.co.kr

 

서보 모터 연결선 위치는 아래와 같습니다.

서보모터 SG90

 

 

3. 아두이노 보드와 서보 모터 연결

아두이노 보드와 서보 모터를 아래와 같이 연결해줍니다.

 

 

4. 소스 코드

1초 간격으로 서보모터 각도를 0도, 90도 번갈아 회전하는 코드입니다.

#include<Servo.h> // Servo 라이브러리 추가

Servo servo;      // Servo 클래스로 servo객체 생성
 
void setup() {
  servo.attach(9);     // 멤버함수인 attach : 핀 설정
  Serial.begin(9600);  // 시리얼 모니터 사용 고고
}
 
void loop() {
  servo.write(0);      // 각도가 0도 되도록 회전
  delay(1000); 		   // 1000 밀리초, 즉 1초 기다림.
  
  servo.write(90);     // 각도가 90도 되도록 회전
  delay(1000);         // 1000 밀리초, 즉 1초 기다림.
  
}

 

코드를 입력한뒤 좌측에 있는 체크 버튼을 누르면 컴파일을 하고,

그 옆에 우측 화살표 버튼을 누르면 아두이노 보드에 코드를 업로드합니다.

 

5. 실행