아두이노에서 서보모터를 사용하기 위해서는 Servo.h 라이브러리를 include 해서 사용해야 한다.
#include <Servo.h>
지정한(포트) 모터에 전원이 공급되어 사용할 수 있게 한다.
서보모터 제어를 위해 사용하는 함수로, 1500 기준(정지) 1300 ~ 1700 사이값을 주어, 그 값을 이용해 모터의 정지, 회전방향, 회전속도를 제어할 수 있다.
1500(정지)을 기준으로 모터의 회전방향이 정해진다.
1500 : 정지상태
1500 보다 작은 경우 : 시계반향
모터 회전 속도 : 1500 과 가까울 수록 속도가 느려진다.
Max = 1300
, Min = 1499
< 1500
1500 보다 큰 경우 : 반시계반향
모터 회전 속도 : 1500 과 가까울 수록 속도가 느려진다.
Max = 1700
, Min = 1501
> 1500
#include <Servo.h>
Servo servoLeft;
Servo servoRight;
void setup() {
// put your setup code here, to run once:
servoLeft.attach(13);
servoRight.attach(12);
servoLeft.writeMicroseconds(1500); // 모터 정지상태
servoRight.writeMicroseconds(1500); // 모터 정지상태
}
void loop() {
// put your main code here, to run repeatedly:
}
#include <Servo.h>
Servo servoRight;
Servo servoLeft;
void setup() {
// put your setup code here, to run once:
servoRight.attach(12);
servoLeft.attach(13);
servoRight.writeMicroseconds(1300);
servoLeft.writeMicroseconds(1300);
}
void loop(){
// put your main code here, to run repeatedly:
}
#include <Servo.h>
Servo servoRight;
Servo servoLeft;
void setup() {
// put your setup code here, to run once:
servoRight.attach(12);
servoLeft.attach(13);
servoRight.writeMicroseconds(1700);
servoLeft.writeMicroseconds(1700);
}
void loop() {
// put your main code here, to run repeatedly:
}
다음 3개의 프로그램을 실행시켜보면
🔗 서보모터 정지
프로그램의 경우, 왼쪽 서보모터와 오른쪽 서보모터 둘다 writeMicroseconds() 함수의 값을 1500으로 지정하여 ABOT이 정지해있는 것을 알 수 있다.
🔗 서보모터 시계방향 회전
프로그램의 경우, 왼쪽 서보모터와 오른쪽 서보모터의 writeMicroseconds() 함수값을 1300으로 지정하여 두개의 바퀴 모두 시계방향으로 회전하게 하였다.
🔗서보모터 반시계방향 회전
프로그램은 왼쪽 서보모터와 오른쪽 서보모터의 writeMicroseconds() 함수값을 1700으로 지정하여 두개의 바퀴 모두 반시계방향으로 회전하게 하였다.
🔗 서보모터 시계방향 회전
, 🔗서보모터 반시계방향 회전
프로그램을 실행하면 ABOT이 전진/후진 하는 것이 아니라
🔗 서보모터 시계방향 회전
은 ABOT이 반시계방향으로 제자리에서 회전하고,
🔗서보모터 반시계방향 회전
은 ABOT이 시계방향으로 제자리에서 회전하는 것을 확인할 수 있다.
이런식으로 ABOT이 제자리에서 회전하는 이유는 ABOT을 조립하면 2개의 모터들은 서로 등지게되기 때문이다.
따라서 ABOT을 직진시키기 위해선 다음과 같이
오른쪽 바퀴는 시계반향 1300 ~ 1499, 왼쪽 바퀴는 반시계반향 1700 ~ 1501 값을 지정해 주어야 한다.