我在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);
}
答案 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驱动芯片。