Arduino Uno DC电机无法进行简单测试。无法让Arduino旋转电机

时间:2016-04-27 19:41:23

标签: arduino

我在arduino uno r3上使用V2.3 motorsheild。 关于过去一周读到的内容,我几乎没有关于ardunio的消息。 我一直试图用下面的代码简单地转动电机,它不会工作。我把arduino插入我的电脑,12v转到蓝色电源盒的东西。 我正在使用这种马达https://www.servocity.com/html/900_rpm_micro_gearmotorblocks.html#.VyELIFaDFBc 我不能让dang的东西旋转,电机工作正常,如果我直接连接到5v / grnd但不是当它在M1连接 接线:https://i.groupme.com/747x1328.png.54a01e30433241d4a99905bd0e8ede2b让我知道这个链接是否有效 接下来是http://imgur.com/J92ewnu的Imgur链接     #include

AF_DCMotor motor(1);

void setup() {
  Serial.begin(9600);           // set up Serial library at 9600 bps
  Serial.println("Motor test!");

  // turn on motor
  motor.setSpeed(200);

  motor.run(RELEASE);
}

void loop() {
  uint8_t i;

  Serial.print("tick");

  motor.run(FORWARD);
  for (i=0; i<255; i++) {
    motor.setSpeed(i);  
    delay(10);
 }

  for (i=255; i!=0; i--) {
    motor.setSpeed(i);  
    delay(10);
 }

  Serial.print("tock");

  motor.run(BACKWARD);
  for (i=0; i<255; i++) {
    motor.setSpeed(i);  
    delay(10);
 }

  for (i=255; i!=0; i--) {
    motor.setSpeed(i);  
    delay(10);
 }


  Serial.print("tech");
  motor.run(RELEASE);
  delay(1000);
}

2 个答案:

答案 0 :(得分:0)

我不是当前特殊盾牌及其库的专家。但是,当我第一次看到你的草图和电机连接图像时,我看到的是你试图用一定的速度运行直流电机的命令,这似乎是伺服或步进电机。

如果您根据电流和电压计算速度,或者速度传感器位于电机轴上,您应该知道以某种速度运行直流电机。这个电机没有传感器(我肯定知道它,因为在我的项目中使用相同),我认为盾无法计算速度。您可以的内容只是打开和关闭它,可能会改变它的方向。

所以,首先你应该在库中查找(并使用)这些函数。

答案 1 :(得分:0)

在寻找你称之为“AF_DCMotor”的功能时,我看到你的困惑。还有this product,这是另一种adafruit motor sheild。

但它实际上是一个非常不同的电机驱动器。两个屏蔽都有一个功率级,它接收脉冲并放大它们以驱动电机。 V2显然有一个产生这些脉冲的芯片,你发送串行数据来使用I2C命令它。 V1只是直接从Arduino获得这些脉冲。

对于你的V2电机屏蔽,试试Adafruit提供的指南。

Here's the link - Adafruit Motor Sheild V2 DC motor control

这是代码

#include <Wire.h>
#include <Adafruit_MotorShield.h>
#include "utility/Adafruit_MS_PWMServoDriver.h"
Adafruit_MotorShield AFMS = Adafruit_MotorShield(); 
Adafruit_DCMotor *myMotor = AFMS.getMotor(1);
AFMS.begin();
myMotor->setSpeed(100); 
myMotor->run(FORWARD);

它提到在介绍页面上使用I2C

  

我们没有使用锁存器和Arduino的PWM引脚,而是在板上安装了一个全专用的PWM驱动芯片。该芯片处理I2C上的所有电机和速度控制

这就是它包含Wire库的原因。你可以制作自己的代码来运行它,但它必须使用I2C将命令发送到他们正在使用的PWM驱动芯片。