RC카를 만들기 위해서는 앞으로 나갈 수 있게 해주는 DC모터와 방향을 결정해줄 수 있는 서보모터가 필요하다. DC모터 구동 관련해서는 아래글과 같이 실습을 해보았다. 예제가 있어서 편하게 사용을 했었는데 서보에 대한 예제는 따로 없고 메뉴얼에는 아두이노 기본 Servo 예제를 사용하라고 해서 어떻게 해야되는지 막막했다.
[아두이노]모터쉴드 사용하여 DC모터 구동하기
그래서 우선 Sweep 이라는 예제를 열어서 보니 9번핀을 PWM을 사용해서 서보모터를 제어하고 있었다. Adafruit Motor Shield 메뉴얼에도 서보모터를 2개 사용할 수 있는데 1번 포트에 연결할 경우 9번핀, 2번 포트에 연결할 경우 10번 핀을 사용하라고 한다. 이렇게 저렇게 해보다 동작을 안해서 서보 2번 포트에 연결하고 PWM포트를 9번으로 설정하니 서보모터가 돌아가기 시작한다;;; PCB에 표기가 잘못됬는지 만약에 안된다면 한번 바꿔서 해봐야 할 것 같다.
아래 코드는 DC모터 좌우로 회전 후 서보모터 좌우로 회전하는 예제다.
#include <AFMotor.h>
#include <Servo.h>
AF_DCMotor motor(2, MOTOR12_64KHZ); // create motor #2, 64KHz pwm
Servo myservo; // create servo object to control a servo
// twelve servo objects can be created on most boards
int pos = 0; // variable to store the servo position
void setup() {
myservo.attach(10); // attaches the servo on pin 9 to the servo object
Serial.begin(9600); // set up Serial library at 9600 bps
Serial.println("Motor test!");
motor.setSpeed(200); // set the speed to 200/255
}
void loop() {
Serial.print("tick");
motor.run(FORWARD); // turn it on going forward
delay(1000);
Serial.print("tock");
motor.run(BACKWARD); // the other way
delay(1000);
Serial.print("tack");
motor.run(RELEASE); // stopped
delay(1000);
for (pos = 0; pos <= 180; pos += 1) { // goes from 0 degrees to 180 degrees
// in steps of 1 degree
myservo.write(pos); // tell servo to go to position in variable 'pos'
delay(15); // waits 15ms for the servo to reach the position
}
for (pos = 180; pos >= 0; pos -= 1) { // goes from 180 degrees to 0 degrees
myservo.write(pos); // tell servo to go to position in variable 'pos'
delay(15); // waits 15ms for the servo to reach the position
}
}
구성은 아래 그림과 같다.
'랩뷰&NI 하드웨어' 카테고리의 다른 글
몇 개의 카운터 채널이 필요한가?? (0) | 2016.04.27 |
---|---|
DAQ 구매시 고려사항 - 해상도와 정확도 (0) | 2016.04.06 |
[랩뷰+아두이노]디지털인풋을 받아 LED켜기 (0) | 2016.03.31 |
전압신호 측정 방법- 들어오는 신호와 신호를 받을 DAQ 설정 관련. (0) | 2016.03.29 |
Measurement Studio 구버젼 언어 호환관련(C++, MFC) 버젼 선택. (0) | 2016.03.24 |