Arduino 各种模块篇 motor shield 电机扩展板(舵机、直流电机、步进电机party)

根据adafruit提供的代码。

利用ladyada提供的motor shield

 近距离全照:

2237983028_b0b7144507_b.jpg

将9g舵机接在

srv1处,(褐色为负极,红色正极,橙色信号线用来接受PWM指令)

将直流电机接在M2处,(正负极可以先不考虑,因为是直流电机)

步进电机自己占据了M3,M4.

步进电机的排线

IMGP0641_调整大小.JPG

详细属性地址:

http://www.adafruit.com/products/858#Technical Details


  • Unipolar stepper with 0.1" spaced 5-pin cable connector
  • 8 steps per revolution
  • 1/64 geared down reduction
  • 5V DC suggested operation
  • Weight: 37 g.
  • Dimensions: 28mm diameter, 20mm tall not including 9mm shaft with 5mm diameter
  • 9" / 23 cm long cable
  • Holding Torque: 150 gram-force*cm, 15 N*mm/ 2 oz-force*in
  • Shaft: 5mm diameter flattened

Snap2.jpg

组装拼成:

外接9v 1A 电源。

2011-9-5 23:06 上传
下载附件 (81.36 KB)

然后,三种电机开了个party!

利用的是Servo 库,和AFMotor 库(原因是用了adafruit motor shield)

// Adafruit Motor shield library
// copyright Adafruit Industries LLC, 2009
// this code is public domain, enjoy!

#include <AFMotor.h>
#include <Servo.h> 

// DC motor on M2
AF_DCMotor motor(2);
// DC hobby servo
Servo servo1;
// Stepper motor on M3+M4 64 steps per revolution
AF_Stepper stepper(64, 2);       // 不同的步进电机不同,我用的这款是64steps 一圈的。

void setup() {
  Serial.begin(9600);           // set up Serial library at 9600 bps
  Serial.println("Motor party!");
  
  // turn on servo
  servo1.attach(9);    // adafruit提供的shield 上面带的地一个舵机是就是在Arduino PWM口,Pin 9
                 // 第二个舵机的位置,拓展板上是Servo2=》 在Arduino Uno上是Pin 10
  // turn on motor #2
  motor.setSpeed(200);     // 最高转速是255 (这个是由于实例对象motor来源的类AF_DCMotor 决定的
  motor.run(RELEASE);      //
}

int i;

// Test the DC motor, stepper and servo ALL AT ONCE!
void loop() {
  motor.run(FORWARD);
  for (i=0; i<255; i++) {
    servo1.write(i);
    motor.setSpeed(i);  
    stepper.step(1, FORWARD, INTERLEAVE);
    delay(3);
 }
 
  for (i=255; i!=0; i--) {
    servo1.write(i-255);
    motor.setSpeed(i);  
    stepper.step(1, BACKWARD, INTERLEAVE);
    delay(3);
 }
 
  motor.run(BACKWARD);
  for (i=0; i<255; i++) {
    servo1.write(i);
    motor.setSpeed(i);  
    delay(3);
    stepper.step(1, FORWARD, DOUBLE);
 }
 
  for (i=255; i!=0; i--) {
    servo1.write(i-255);
    motor.setSpeed(i);  
    stepper.step(1, BACKWARD, DOUBLE);
    delay(3);
 }
}
原文地址:https://www.cnblogs.com/spaceship9/p/3013298.html