아두이노를 사용해 서보모터를 동작시키는 경우, C언어 코드를 작성할지, 혹은 C++언어 코드를 작성할지를 구분해 생각할 수 있습니다. 그리고 서보 모터의 동작을 위해 어떤 신호를 아두이노로 제공해야 하는지를 생각해야 합니다. 그리고 서보모터 타입은 0~180도까지 회전하는 표준형 제품과 360도 연속 회전하는 제품 두 가지가 존재합니다. 따라서 코드 명령도 다른 방법으로 취급됩니다.
서보모터 제어용 아두이노 신호(그림출처: parallax)
(1)서보 모터 동작을 위한 “servo.h”#include<Servo.h>를 기억하시나요?아도우이노을 쓰고 서보 모터를 작동시키려면 servo.h라이브러리를 사용할 필요가 있습니다.이 말의 의미는, 아 도우이노 전체의 프로그래밍 코드 구성에서 미리 작성하였던 C++코드를 사용해야 한다는 것입니다.다만 C++에 익숙하지 않은 초심자 때문에 C++언어를 직접 이해하지 않고 C언어 코드로만 서보 모터를 구동할 수 있도록 하는 것입니다.C언어를 더 적극적으로 이해하고 사용하려면 C++언어를 이해하고 사용할 수 있을 필요가 있습니다.서보 모터의 동작을 나의 로봇 차의 동작에 보다 적합에 재정의할 수 있습니다.이런 목적 때문에 C++언어로 자신이 만든 라이브러리를 작성하고 추가로 사용할 수 있습니다.이런 예를 소개한 것이 “SelfAbot.h&SelfAbot.cpp”라이브러리입니다.더 자세한 내용이 마음에 안 됩니까?
플라이봇 게시판 SelfAbot 라이브러리 다운로드 페이지 (링크처 : https://www.fribot.com/board/view?id=community_guide&seq=193 )
결론을 말하면 아도우이노사ー보모ー타ー을 동작하는 경우, C++코드로 작성된 코드가 더 포함됩니다.Arduino회사가 제공하는 자동 제어용 라이브러리를 사용하거나 Arduino라이브러리에 자신만 추가 라이브러리를 작성하고 추가 사용하거나 완전히 새로운 라이브러리 코드를 작성하는 방법이 있습니다.C++언어를 배우고 사용할 수 있다면 로봇을 보다 자유자재로 자신의 목적에 맞게 제어할 수 있습니다.(2)서보 모터는 PWM신호로 제어합니다.아 도우이노 우노에서 PWM신호 제어할 수 핀 번호는 파인의 6개죠.그런데 아도우이노에서 서보 모터를 작동할 경우 특히 PWM제어용 핀(또는 아날로그 출력 핀)를 사용하라는 지침이 없습니다.왜요?플라이 보트에서 판매 중인 아도우이노로봇토카ー의 경우 10번, 11번, 12번, 13번 핀 번호를 서보 모터 제어용 쫑긋해서 사용합니다.그 이유는 Arduino우노에서 지정한 아날로그 핀 출력용이 아니더라도 Arduino코드 작성 시 처음에 추가하는 “Servo.h”에서 직접 PWM제어 신호를 만들어 사용하기 때문입니다.연속 회전형 서보의 경우 PWM신호 제어를 사용하고 서보 모터 속도 제어도 가능하게 합니다.이들의 그래프는 파라랏크스서보 모터의 경우의 데이터입니다.타사의 경우도 제품과 함께 제공되는 데이터 시트를 참고하세요.
패러럭스 서보 모터의 입력값과 속도 변화 그래프
아두이노의 Reference자료에따르면,”This library can control a great number of servos.It makes careful use of timers:the library can control 12 servos using only 1 timer. On the Arduino Due you can control up to 60 servos.”이 소개됩니다.아도우이노 서보 라이브러리는 수많은 서보를 제어할 수 있습니다.타이머를 신중히 사용합니다.라이브러리는 타이머1개만 사용해서12개의 서보를 제어할 수 있습니다.Arduino Due에서는 최대 60개의 서보를 제어할 수 있습니다.참고로 가 도우이노 우노는 타이머가 3개 있습니다.(3)표준형으로 연속 회전형 서보 구조적 차이는 무엇?이 질문에 대한 답은 이전 글에서 참고하면 좋습니다!그리고, 서보 모터의 구조적 차이가 있는 만큼, 서보 모터를 작동하기 위한 라이브러리 동작 함수도 다르게 표현됩니다.파라랏크스 서보 모터의 경우와 아도우이노사의 표준 예제에서 사용하면 어느 쪽도 표준형으로 연속 회전형 명령 함수를 구사합니다.서보 모터에 관련하고 나만 라이브러리를 작성하여 사용하면 C++언어의 오버 로딩 개념과 반 계승에 대해서도 직접적인 코드 경험을 갖게 됩니다.C++코드는 C코드와 어떻게 달리 어떻게 연결되어 동작하는지에 대해서 실제적인 경험을 가지고 있습니다.이전에 작성한 글이지만, 아까”이전 글”링크를 더듬어 가면 표준형으로 연속 회전형 서보 구조적 차이를 직접 분해하고 인식하는데 참고가 됩니다.여러분 즐거운 하루 되세요!