2016-04-27 41 views
0

我正在使用arduino uno r3上的V2.3 motorheild。 我從過去的一週讀到的關於ardunio excpet的文章幾乎沒有。 我一直在試圖簡單地用下面的代碼轉動電機,它不會工作。我把arduino插入了我的電腦,12v插上了藍色電源盒。 我使用這個馬達https://www.servocity.com/html/900_rpm_micro_gearmotorblocks.html#.VyELIFaDFBc 我不能讓黨的事情旋轉,如果我線它電機工作正常直行至5V/GRND而不是當它在M1連接 接線:https://i.groupme.com/747x1328.png.54a01e30433241d4a99905bd0e8ede2b讓meknow如果這個環節不工作 這裏有一個Imgur鏈接,接線http://imgur.com/J92ewnu 的#includeArduino Uno直流電機不能用簡單的測試工作。無法讓Arduino旋轉電機

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

你有沒有嘗試下面的adafruit教程,他們通常解釋得非常好:) –

回答

0

我不是在當前特定的屏蔽和它的圖書館專家。但是當我第一次看到你的草圖和電機連接圖像時,我看到的是,你試圖以一定的速度用命令運行直流電機,這似乎是伺服電機或步進電機。

您應該知道,如果您根據電流和電壓或速度傳感器位於電機軸上進行速度計算,則可以以某種速度運行直流電機。這臺電機沒有傳感器(我知道它是肯定的,因爲在我的項目中使用了相同的),我認爲盾不能計算速度。你可以可以只打開和關閉,也許改變它的方向。

因此,首先您應該在圖書館裏查看(並使用)這些功能。

0

尋找你稱之爲「AF_DCMotor」的功能,我看到你是如何困惑的。還有this product,這是另一種adafruit馬達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驅動芯片。