Adafruit Motor Shield V2 조립가이드 및 퀵 스타트 가이드

1438_ORIG.jpg
모터쉴드 키트는 아두이노를 이용하여 DC 모터 및 스텝모터를 동작시는 쉬운 방법 중 하나입니다. 4개의 DC모터와 2개의 스텝모터를 동작시킬 수 있으며 서보 두개를 연결할 수 있습니다. 그럼 이 쉴드의 동작방법에 대해 질문과 답변 형식으로 알아 보겠습니다.

이 쉴드를 이용하여 얼마나 많은 모터를 동작시킬 수 있나요?

5V에서 동작하는 2개의 DC 서보 모터를 동작시킬 수 있으며, 4개의 DC 모터 혹은 2개의 스텝모터를 동작시키거나 1개의 스텝모터와 2개의 DC모터를 동작 시킬 수 있습니다. DC모터와 스텝모터는 5-12VDC 이여야 합니다.

모터를 더 많이 연결 할 수 있나요?

예 가능합니다. 본 쉴드는 적재가능한 쉴드로 쉴드를 하나더 적재하여 설치할때마다 추가로 4개의 DC모터나 2개의 스텝모터를 연결이 가능합니다. 서보모터는 더 연결이 불가능합니다. 왜냐하면 서보 커넥터는 아두이노의 9번과 10번에 연결되어 있는 것뿐이며 쉴드에서 제공되는 것이 아니기 때문입니다.

서보를 더 연결하고 싶은면 어떻게 하여야 하나요?

그럴 경우는 서보 쉴드의 사용을 고려 하십시오. 16개의 서보를 한개의 서보 쉴드에서 동작시킬 수 있습니다.

어떤 아두이노와 사용이 가능한가요?

아두이노 UNO, Duemilanove, Diecimila, Leonardo, Mega/ADK R3 와 동작이 가능합니다.

예제코드를 테스트하는데 다음과 같은 에러가 납니다. 왜죠?: "error: Adafruit_MotorShield.h: No such file or directory...."

Adafruit_MotorShield library 를 설치하였는지 먼저 확인 바랍니다.

모터가 동작하지 않습니다. 하지만 서보는 잘 동작합니다.

파워 LED에 불이 들어 왔나요? 스텝모터와 DC모터는 초록색 전원 LED에 불이 들어 오지 않으면 동작하지 않습니다. 반드시 5-12VDC 전원을 쉴드의 POWER 터미널 블럭이나 아두이노의 DC 배럴잭과 VIN점퍼를 통해 연결하여야 합니다.

모터 쉴드에서 어떤 핀이 사용되나요?

모터 쉴드는 SDA와 SCL I2C핀이 DC모터와 스텝모터를 제어하기 위해 사용됩니다. 아두이노 UNO에서는 A4와 A5핀입니다. 메가에서는 디지털20, 21핀이며, 레오나르도에서는 디지털2, 3핀입니다. 참고로 모터쉴드의 기본 I2C주소는 0x60입니다.
서보 연결을 위해서는 9번과 10번핀을 사용하면 됩니다.

사용하지 않는 핀은 어떻게 연결할 수 있나요?

모든 핀은 쉴드의 헤더로 나와 있습니다. 이 헤더를 통해 연결이 가능합니다.

모터가 동작할때 아두이노가 이상하여 집니다. 쉴드가 망가졌나요?

모터는 많은 전력을 필요로 하며 이것이 아두이노를 brownout 리셋시키기도 합니다. 그렇기 때문에 쉴드에는 별도의 전원을 공급할 수 있게 디자인 되었습니다. 하나는 회로를 위한 것이고 다른 하나는 모터를 위한 것입니다. 이렇게 모터에 별도의 전원을 공급하면 브라운아웃 리셋을 예방할 수 있습니다.

제품을 이용하여 로봇을 만들려고 하는데 9V배터리에서 동작하지 않는것 같습니다.

9V배터리로 모터에 전원을 인가 할 수 없습니다. 반드시 모터를 위하여 AA 배터리를 사용하여야 합니다.

모터쉴드가 작은 3V모터도 제어가 가능한가요?

3V모터는 동작하지 않습니다.

안정적인 전원을 DC모터에 공급하고 있습니다만 DC모터가 멈추거나 넘어가는 듯한 증상이 있습니다.

0.1uF 세라믹 캐패시터를 모터 탭 사이에 납땜하십시오. 이렇게 하면 회로로 다시 들어오는 노이즈를 줄일 수 있습니다.

4WD 로봇 플래폼을 사용하고 있습니다. 아무것도 동작 시킬 수 없는데 어떻게 하여야 하나요?

4WD 로봇 플랫폼에 사용되는 모터들은 많은 브러쉬 노이즈를 가지고 있습니다. 이러한 노이즈는 아두이노의 회로에 다시 들어가 불정정한 상태를 유발합니다. 이러한 문제는 3개의 노이즈 처리 캐패시터를 모터에 납땜하면 해결이 가능합니다. 1개는 모터의 양 터미널에 연결하고 다른 두개는 각각의 터미널과 모터 케이스에 연결합니다.

motor_capacitors.jpg

모터에는 이미 한개의 캐패시터가 있는데도 동작하지 않습니다.

브러쉬 모터는 많은 노이즈를 만들어내므로 노이즈를 잡기 위해 보통 3개의 캐패시터가 필요합니다.

캐패시터를 쉴드안에 넣지 않은 이유가 있나요?

효과적이지 못하기 때문입니다. 노이즈는 노이즈 소스에서 반드시 방지되어야 합니다. 그렇지 않으면 모터의 리드가 안테나와 같이 동작하여 노이즈를 전체 시스템에 전달할 것입니다.

헤더와 터미널 설치하기

1438kit_LRG.jpg

표준 헤더 설치하기


쉴드에는 0.1인치 표준 헤더가 포함되어 있습니다.

headerplace.jpg

헤더를 6, 8, 10핀 크기로 잘라내고 아두이노에 긴쪽을 꼽습니다. 만약 적재가능 헤더를 연결하고 싶다면 표준헤더 대신 적재가능 헤더를 연결해야 합니다. 이 부분은 아래에 나와 있으니 표준헤더부분은 스킵하십시오.

shieldplace.jpg

쉴드를 꼽은 헤더위에 위치 시킵니다.



solder1.jpg

쉴드와 핀이 올바르게 위치되었는지 확인한 후 핀을 하나씩 납땜합니다.



터미널 블럭 설치하기


termplace.jpg

터미널 블럭을 사진과 같이 위치 시킵니다. 전선을 연결하는 부분이 쉴드 바깥쪽을 보도록 연결하여야 합니다.

termflip.jpg

보드를 뒤집으면 납땜을 할 핀들이 보입니다.

power1.jpg

2핀 터미널 블럭을 납땜합니다.

m1.jpg

나머지 5핀 터미널 블럭을 각각 납땜합니다.

termdone.jpg

다음으로는 서보 커넥터를 연결합니다.

servoplce.jpg

2x3 핀헤더의 짤은 쪽을 사진과 같이 위치 시킵니다. SERVO1, SERVO 2라고 적혀 있습니다.


servotak.jpg

뒤집어서 납땜 합니다.

powerjump.jpg

마지막으로 헤더를 2핀으로 잘라서 2핀 터미널 블럭 옆에 사진과 같이 위치 시킨후 납땜하면 완성이 됩니다.

적재가능 헤더 설치하기

ID85stack_MED.jpg

적재가능 쉴드는 제품에 포함되어 있지는 않습니다만 혹시 적재 가능 헤더를 설치하시려면 아래의 방법을 참고 하십시오

stackyplace.jpg

10핀, 8핀 2개, 5핀 적재가능 헤더를 쉴드의 바깥쪽에 위치시킨 후 사진과 같이 뒤집습니다.

tack.jpg

각각의 헤더중에 핀 한개만 납땜을 하여 일차적으로 고정합니다. 헤더가 올바르지 않게 고정되었다면 이 납땜한 한부분만 다시 가열하여 위치를 조절하면 됩니다.

solder.jpg

올바르게 정렬이 되었다면 나머지 부분도 순차적으로 납땜합니다.

소프트웨어 설치하기

쉴드를 아두이노와 사용하려면 먼저 Adafruit motorshield v2 라이브러리를 설치하여야 합니다. 이 라이브러리는 이전 버전의 라이브러리(모터 쉴드 버전 1)와 호환되지 않습니다.

라이브러리를 다음의 링크에서 다운로드 받습니다. library from the Github repository 혹은 Download latest Adafruit Motor Shield V2 Library

zip파일내의 폴더를 아두이노의 Libraries 폴더에 카피한 후 Adafruit_Motorshield로 이름을 변경합니다.


예제 코드 실행하기

DC Motor


설치한 라이브러리는 몇개의 예제를 포함하고 있습니다. 여기서는 DC motor 예제로 시작하여 보겠습니다. DC모터는 6V-12VDC의 DC모터를 아무거나 사용하시면 됩니다.



먼저 라이브러리가 확실히 로드시키기 위해 IDE를 재실행 합니다.

아두이노에 쉴드를 연결하고 motor port 1에 DC모터를 연결합니다. 모터는 양방향으로 동작하기 때문에 터미널 블럭에 어떤 선을 연결할지 모터의 극성은 크게 신경을 쓰지 않아도 됩니다. 중간의 GND핀에는 연결하지 마십시오(사진참조). 전선을 연결하였으면 스크류를 조여 안정적으로 연결이 형성되게 합니다.

dcmotortest.jpg
모터에는 반드시 5V-12VDC의 전원을 공급하여야 합니다. 전원공급 방법에는 두가지 방법이 있는데,
  1. 아두이노를 DC 배럴잭으로 전원공급을 하고 VIN점퍼(초록색 LED 오른쪽 옆의 튀어나온 검은색 점퍼)를 연결하는 것과
  2. 아두이노를 DC 배럴잭이나 USB포트를 연결하여 전원을 공급하고 쉴드를 5-12VDC 모터 파워 터미널 포트를 통해 전원을 공급하는 방법(이때 VIN점퍼는 제어해야함) 있습니다.



만약 초록 LED가 켜지지 않는다면 하던 것을 멈추십오. 전원은 반드시 VIN점퍼를 통해서나 터미널 블럭을 통해서 공급되어야 합니다.

powerLED.jpg
모터가 적절하게 연결된것이 확인되면 초록 LED에 불이 들어오는 것이 보이고 이제 코드를 업로드 할 수 있습니다.

아두이노 IDE에서 File->Examples->Adafruit_MotorShield->DCMotorTest 예제를 업로드 합니다.

업로드를 하면 DC모터가 앞뒤로 움직이는 것을 볼 수 있을 것입니다. 움직임이 잘 안보인다면 모터 샤프트에 작은 종이를 붙여 보십시오.

Stepper Motor Test


쉴드를 이용하여 스텝모터도 테스트를 하여 볼 수가 있습니다. 본 쉴드는 unipolar(5선과 6선)와 bipolar(4선) 스텝모터를 동작시킬 수 있습니다. 이 스텝모터 이외의 모터는 동작시칼수 없습니다. unipolar나 bipolar는 코드는 똑같습니다만 모터 와이어 연결은 약간 다릅니다.



쉴드를 아두이노에 꼽고 스텝모터를 motor port 2에 연결합니다. DC모터와는 다르게 스텝모터는 와이어의 순서가 중요합니다. 위의 두개의 터미널 포트에 코일1번을 연결하고 아래 두개의 포트에 코일2번을 연결합니다.

만약에 bipolar모터를 가지고 있다면 가운데 핀(GND)는 연결하지 마십시오.

  • 만약 5선 unipolar모터를 사용중이라면 common wire를 GND에 연결하십시오.
  • 만약 6선 unipolar모터를 사용중이라면 두개의 center coil wire를 함께 GND에 연결할 수 있습니다.

steppertest.jpg
모터에 전원을 공급하기 위해서는 반드시 5-12VDC를 사용하여야 합니다. 전원을 공급하는 두가지 방법은

  1. 아두이노의 DC배럴잭에 전원을 공급하고 VIN점퍼(아래 사진에서 초록LED 옆의 큰 점퍼)를 연결하는 방법과
  2. 아두이노를 DC배럴잭이나 USB포트를 통해 전원을 공급하고 쉴드를 파워 터미널 포트에 5-12VDC를 공급하는 방법이 있습니다.

초록LED에 불이 들어 오지 않는다면 더 이상 진행하지 마십시오. 전원은 반드시 VIN점퍼나 터미널 블럭을 통해서 공급하여야 합니다.



steppwr.jpg
모터가 적절하게 연결된 것이 확인되면, 초록 LED에 불이 들어오게 되고 코드를 업로드할 수 있습니다.


아두이노 IDE에서 File->Examples->Adafruit_MotorShield->StepperTest 예제를 업로드 합니다.

예제를 업로드하면 스텝모터가 앞뒤로 움직이는 것을 보게 될 것입니다. 스텝모터를 동작시키는 4개의 방법이 있으며, 이 예제는 4가지 방법을 모두 데모합니다.

모터에 전원공급하기

모터는 많은 에너지를 필요로 합니다. 특히 값싼 모터들이 더 그러한데, 이러한 모터는 더 비효율적이기 때문입니다.

전압 요구사항


모터 동작을 위해 첫번째로 알아야 할 것은 모터가 어떤 전압을 사용하는 지 입니다. 모터쉴드는 5V-12V의 모터를 동작시킬 수 있게 디자인되었습니다. 1.5V-3V 모터는 동작하지 않습니다.

전류 요구사항:

두번째로 알아야 할 것은 모터가 얼마나 많은 전류를 소모하는지 입니다. 쉴드의 모터 드라이버 칩은 모터당 1.2A를 전달하도록 디자인 되었습니다.(피크시 3A) 모터의 전류 소모가 2A를 정도에 다다르면 모터 드라이버칩을 식히기 위해 heat sink가 필요합니다. 그렇지 않으면 과열로 인한 셧다운이나 칩을 태울 수 있습니다. 모터는 9V 배터리로 동작시킬 수 없으니 AA배터리리를 사용하십시오. 그리고 아두이노 전원과 모터전원을 분리하는 것을 추천합니다. 모터문제의 99%는 파워라인을 공유함으로써 생기는 노이즈이거나 충분한 전류를 공급받고 있지 못할때 생깁니다. 아주 작은 모터도 stall시에는 3A까지 소비합니다.


서보 사용을 위해 쉴드 셋업하기


서보는 아두이노가 사용하는 정류된 5V를 사용 가능합니다만 좀더 안정적인 전원을 원한다면 옵션 서보 파워 터미널로 가는 trace를 자르고 5-6V전원을 공급하면 됩니다.



DC모터를 사용을 위한 쉴드 셋업하기

DC모터는 많은 전류를 소모하므로 아두이노의 5V 전원핀에 모터를 연결하지 마십시오. 이것은 매우 매우 안좋은 생각으로 아두이노를 망가 트릴 수 있습니다.

모터 전원을 얻기 위한 두가지 장소는:

  1. 아두이노 보드상의 DC 배럴 잭
  2. 쉴드에 DC Motor Power 5-12VDC라고 표기된 터미널블럭 입니다.

아두이노의 DC 잭은 보호 다이오드를 장착하고 있어 잘못된 전원을 쓰더라도 크게 문제가 되지 는 않을 것입니다만 올바른 전원을 사용하십시오. 터미널블럭은 보호 FET를 가지고 있어 배터리를 꺼꾸로 연결해도 아두이노/쉴드를 망가트리지 않습니다만 작동하지 않습니다.


아래의 그림은 어떻게 동작하는지 보여줍니다.:

mshielddiag.png

아두이노와 모터에 한개의 DC파워를 이용하여 전원을 공급하고자 한다면

6-12VDC출력을 가진 DC어댑터를 아두이노의 DC잭에 단순히 연결하거나, 쉴드의 2핀 터미널 블럭에 연결하면 됩니다. 모터쉴드의 파워점퍼를 설치하십시오.

전원을 배터리로 공급할시에 배터리가 안정적인 전원을 공급하지 않는다면 아두이노가 리셋되는 등의 문제가 발생할 수 있습니다. 그래서 모터전원으로 배터리를 추천하지 않습니다. 9V배터리는 동작하지 않으니 반드시 AA배터리를 사용하십시오.

아두이노는 USB에서 전원을 공급받고, 모터는 DC파워에서 전원을 공급 받으려면

USB 케이블을 연결하시고, 쉴드의 파워 터미널블럭에 모터 전원을 연결하십시오. 쉴드상에 점퍼를 연결하지 마십시오. 이렇게 하면 회로전원과 모터전원을 분리할 수 있습니다.


두개의 DC전원을 아두이노와 모터에 각각 연결하고 싶다면,

DC잭에 전원을 연결하여 아두이노에 전원을 공급하고 쉴드의 파워 터미널 블럭에 모터전원을 연결하십시오. 쉴드상의 점퍼를 연결하지 마십시오.

RC서보 이용하기

servo.jpg

서보는 모터제어를 실험하는데 가장 쉬운 방법중에 하나 입니다. 서보에는 3핀 female 커넥터가 있는데 +5V, GND,신호선입니다. 모터 쉴드는 아두이노의 16비트 PWM출력 라인을 두개의 3핀 헤더로 뽑아 놓아 쉽게 연결하고 사용할 수 있습니다. 서보 제어를 위해서 Servo 라이브러리를 사용할 수 있습니다. Servo라이브러리 사용법은 다음의 아두이노 문서를 참고하십시오.

official Arduino documentation for servo library.

서보에 전원 넣기

서보의 전원은 아두이노의 5V 레귤레이터를 통해 공급됩니다. 즉 아두이노의 USB나 DC파워 잭을 통해 공급됩니다. 만약 외부 전원이 필요하다면, 보드 밑면에 trace를 자르고 Opt Servo 전원입력에 5V나 6VDC를 연결하시오. 이렇게 직접적으로 외부 전원을 연결하는 것을 주의가 필요합니다. 잘못 연결하면 서보를 망가트릴 수 있습니다.



DC모터 사용하기

dcmotortest.jpg
DC모터는 다양한 종류의 로봇 프로젝트에서 사용이 됩니다.

모터 쉴드는 4개의 DC모터를 양방향으로 동작시킬 수 있습니다. PWM을 이용하여 모터 속도를 조절할 수도 있습니다.

참고로, H-bridge칩은 1.2A 이상을 지속적으로 사용하는 모터나 피크시 전류를 3A이상 사용하는 모터에 사용할 수 없습니다.

DC모터 연결하기

DC모터를 연결하기 위해서는 모터의 양 리드에 전선을 납땜한 후 전선을 쉴드의 터미널블럭(M1, M2, M3, M4)에 연결합니다. 그다음 스케치에서 아래의 절차를 수행합니다.

필요한 라이브러리 Include하기



필요한 라이브러리를 #include 문을 이용하여 include합니다.


#include <Wire.h>
#include <Adafruit_MotorShield.h>
#include "utility/Adafruit_PWMServoDriver.h"

Adafruit_MotorShield object를 생성합니다.

Adafruit_MotorShield AFMS = Adafruit_MotorShield();

DC motor object를 생성합니다.



Adafruit_MotorShield로부터 스텝모터를 요청합니다:

Adafruit_DCMotor *myMotor = AFMS.getMotor(1);<br />



getMotor(port#) 함수에서 Port# 는 연결되는 포트입니다. 만약에 M1을 사용하고 있다면 1, M2라면 2, M3는 3, M4는 4를 사용합니다.

기본 속도 설정하기



setSpeed(speed) 함수를 이용하여 모터의 속도를 설정합니다. speed 파라메터는 0(정지)에서 255(최대 속도)까지 입력이 가능합니다.

myMotor->setSpeed(100);



모터 동작시키기



모터 작동을 위해서는 run(direction) 함수를 실행시킵니다. direction파라메터는 FOWARED, BACKWARD, 혹은 RELEASE를 넘겨줄 수 있습니다.

myMotor->run(FORWARD);



스텝 모터 사용하기

steppertest.jpg

스텝모터는 로봇이나 CNC프로젝트에서 많이 사용되는 모터로 정교한 제어를 하기에 좋은 모터입니다. 본 쉴드는 2개의 스텝모터 제어를 지원합니다. 라이브러리는 bipolar나 unipolar 스텝모터나 동일하게 동작합니다.

unipolar모터의 경우, 모터 연결을 위해 먼저 어떤 코일에 어떤 핀이 연결되어 있는지, 어떤 핀이 센터 탭에 연결되어 있는지를 먼저 알아 내야합니다. 5선 스텝 모터라면 1개의 핀 센터탭에 연결되어 있습니다. 센터 탭은 모터 쉴드 출력 블럭의 GND 터미널에 함께 연결되어 있어야 합니다. 코일1은 한쪽 모터포트(M1 혹은 M3)에 코일2는 다른 모터포트(M2혹은 M4)에 연결되어야 합니다.

Bipolar 모터의 경우 GND에 연결할 선이 없다는 점을 제외하고는 unipolar모터와 같습니다. 코드는 동일합니다. 스텝 모터동작은 DC모터 동작보다는 조금 복잡하지만 그래도 여전히 쉬운 편입니다.

필요한 라이블러리 Include하기

필요한 라이블러리를 #include 문을 이용하여 include합니다.

#include <Wire.h>

#include <Adafruit_MotorShield.h>

#include "utility/Adafruit_PWMServoDriver.h"

Adafruit_MotorShield object 를 만듭니다.

Adafruit_MotorShield AFMS = Adafruit_MotorShield();



stepper motor object를 만듭니다.



Adafruit_MotorShield로 부터 스텝모터를 요청합니다.

Adafruit_StepperMotor *myMotor = AFMS.getStepper(200, 2);



getStepper(steps, stepper#)함수에서 Steps 은 한 회전당 얼마나 많은 스텝수를 모터가 가지고 있는지를 의미합니다. 스텝당 7.5도를 회전하는 모터는 360/7.5 = 48스텝을 가지게 됩니다. stepper#은 어떤 포트에 연결되었는지를 의미합니다. 만약 M1, M2를 사용한다면 port는 1이됩니다. 만약 M3, M4를 사용한다면 포트는 2가 됩니다.


기본 속도 설정

setSpeed(rpm) 함수를 이용하여 모터의 속도를 설정할 수 있습니다. rpm은 초당 회전수를 의미합니다.

모터 동작시키기



모터를 움직이기를 원할때마다 step(#steps, direction, steptype) 함수를 호출하십시오. #steps는 얼마나 많은 스텝을 움직일 것인지를 의미하며, direction은 전진, 후진의 방향을 의미하고, steptype은 SINGLE, DOUBLE, INTERLEAVE 혹은 MICROSTEP을 의미합니다.

  • "Single" 은 싱글 코일만이 활성화 되는 것을 의미합니다.
  • "Double" 은 2개의 코일이 한번에 활성화 되는 것을 의미합니다. 토크가 높아집니다.
  • "Interleave" 은 single과 double을 번갈아 활성화 시키는 것을 의미합니다. 이렇게 하면 분해능을 두배 높일 수 있습니다만 속도는 절반으로 떨어집니다.
  • "Microstepping" 은 코일이 PWM되어 스텝사이에서 부드러운 움직임을 만들어 내는 방법입니다.


사용용도(최소 파워, 높은 토크, 높은 정밀도)에 따라 원하는 모드를 선택하여 사용하면 됩니다.

모터는 스텝핑 동작 이후에 자신의 위치를 유지하며 지키게 됩니다. 만약 코일을 릴리즈 하여 자유롭게 회전하기를 원하면 release()함수를 호출하면 됩니다.


스텝핑 명령 함수는 스텝이 끝나야 리턴됩니다.


스텝핑 명령합수는 'block'이기 때문에 스텝모터를 움직이려고 할때마다 명령을 주어야 합니다. 만약 백그라운드 태스크 형태로 스텝 모터를 제어하고자 한다며, 다음의 라이브러리를 체크하여 보십시오. check out AccelStepper library . 세개의 스텝모터를 동시에 제어하는 예제가 들어 있습니다.

적재 쉴드

1438party_LRG.jpg
본 쉴드의 장점중 하나는 적재가 가능하게 디자인 되었다는 점입니다. 적재된 모든 쉴드는 2개의 스텝모터나 4개의 DC모터를 제어할 수 있습니다. 총 32개의 쉴드를 쌓을 수 있습니다.

쉴드를 적재할 때 고려해야 할 사항은 반드시 쉴드가 고유한 I2C 주소를 가지고 있어야 한다는 점입니다. 기본 주소는 0x60이며, 이 주소는 솔더점퍼를 이용하여 0x60에서 0x80까지 총 32개의 고유 주소를 할당할 수 있습니다.

쉴드에 주소 할당하기

아래의 사진과 같이 보드 밑면에는 address 점퍼가 있습니다. I2C 주소를 할당을 위해서는 이 점퍼를 납땜하여 연결하여 주면 됩니다. 점퍼는 총 5개가 있는데 각각은 2진수의 각 자리수를 의미합니다. 점퍼를 연결하였을 경우는 1을 의미하고 연결하지 않았을 경우는 0을 의미합니다. 가장 오른쪽의 점퍼가 비트0번, 그 왼쪽이 비트 1번, 가장 왼쪽이 비트 5번입니다.


jumpera0.jpg
다섯개의 쉴드보드에 아래와 같은 주소를 할당한다고 했을 경우, 다음과 같이 납땜하면 됩니다.
Board 0: Address = 0x60 Offset = binary 0000 (연결 필요없음)
Board 1: Address = 0x61 Offset = binary 0001 (위 사진과 같이 A0만 연결)
Board 2: Address = 0x62 Offset = binary 0010 ( A1만 연결)
Board 3: Address = 0x63 Offset = binary 0011 ( A0 & A1만 연결)
Board 4: Address = 0x64 Offset = binary 0100 ( A2만 연결)

여러개의 쉴드 적재시 코드 작성

Adafruit_MotorShield library 는 여러개의 쉴드를 제어할 수 있습니다. 먼저 각각의 쉴드의 주소를 가지고 Motor Shield Controller를 생성해야합니다.

Adafruit_MotorShield AFMSbot(0x61); // Rightmost jumper closed

Adafruit_MotorShield AFMStop(0x60); // Default address, no jumpers



한개의 모터 쉴드는 AFMSbot 로 생성되었고, 다른 한개의 모터 쉴드는 AFMStop 으로 생성되었습니다. 쉴드를 생성할때는 파라메터로 주소값을 넘겨주어야 합니다.



그 다음에는 각 쉴드에 모터 연결을 요청해야합니다.

// On the top shield, connect two steppers, each with 200 steps

Adafruit_StepperMotor *myStepper2 = AFMStop.getStepper(200, 1);

Adafruit_StepperMotor *myStepper3 = AFMStop.getStepper(200, 2);

// On the bottom shield connect a stepper to port M3/M4 with 200 steps

Adafruit_StepperMotor *myStepper1 = AFMSbot.getStepper(200, 2);

// And a DC Motor to port M1

Adafruit_DCMotor *myMotor1 = AFMSbot.getMotor(1);



그 다음에 두개의 쉴드 컨트롤러는 모터를 사용하기 전에 begin()함수를 호출해야 합니다.

AFMSbot.begin(); // Start the bottom shield

AFMStop.begin(); // Start the top shield

이 코드는 아두이노 IDE의 File->Examples->Adafruit_MotorShield->StackingTest 예제에서 확인 할 수 있습니다.

제품정보: http://vctec.co.kr/front/php/product.php?product_no=1010&main_cate_no=&display_group=

가치창조기술

Comments