私は4DCモーターで動作するロボットをビルドしています。ブルートゥースを取り付けても問題はありません。ブルートゥースなしでこれらのモーターのテストコードを実行すると、モーターは完全な強さで動作しますが、問題はありません。ここだけのモーター用のテストコードは次のとおりです。Arduino + AdaFruitモーターシールド2.3 +ブルートゥース電源の問題?
#include <Wire.h>
#include <Adafruit_MotorShield.h>
#include "utility/Adafruit_PWMServoDriver.h"
// Create the motor shield object with the default I2C address
Adafruit_MotorShield AFMS = Adafruit_MotorShield();
// Select which 'port' M1, M2, M3 or M4.
Adafruit_DCMotor *M1 = AFMS.getMotor(1);
Adafruit_DCMotor *M2 = AFMS.getMotor(2);
Adafruit_DCMotor *M3 = AFMS.getMotor(3);
Adafruit_DCMotor *M4 = AFMS.getMotor(4);
void setup() {
AFMS.begin(); // create with the default frequency 1.6KHz
//AFMS.begin(1000); // OR with a different frequency, say 1KHz
// turn on motor
M1->setSpeed(255);
M2->setSpeed(255);
M3->setSpeed(255);
M4->setSpeed(255);
M1->run(RELEASE);
M2->run(RELEASE);
M3->run(RELEASE);
M4->run(RELEASE);
Serial.begin(9600); // set up Serial library at 9600 bps
}
void loop()
{
M1->run(FORWARD);
M2->run(FORWARD);
M3->run(FORWARD);
M4->run(FORWARD);
delay (5000);
M1->run(BACKWARD);
M2->run(BACKWARD);
M3->run(BACKWARD);
M4->run(BACKWARD);
delay (5000);
}
私はブルートゥースを添付し、モータ以下のコードを実行かろうじてロボットを動かすことができるような低トルクで動作しているとき。ここで
#include <Wire.h>
#include <Adafruit_MotorShield.h>
#include "utility/Adafruit_PWMServoDriver.h"
// Create the motor shield object with the default I2C address
Adafruit_MotorShield AFMS = Adafruit_MotorShield();
// Select which 'port' M1, M2, M3 or M4.
Adafruit_DCMotor *M1 = AFMS.getMotor(1);
Adafruit_DCMotor *M2 = AFMS.getMotor(2);
Adafruit_DCMotor *M3 = AFMS.getMotor(3);
Adafruit_DCMotor *M4 = AFMS.getMotor(4);
const int BTState = 11;
int state;
void setup() {
AFMS.begin(); // create with the default frequency 1.6KHz
//AFMS.begin(1000); // OR with a different frequency, say 1KHz
// turn on motor
M1->setSpeed(255);
M2->setSpeed(255);
M3->setSpeed(255);
M4->setSpeed(255);
M1->run(RELEASE);
M2->run(RELEASE);
M3->run(RELEASE);
M4->run(RELEASE);
pinMode(BTState, INPUT);
Serial.begin(9600); // set up Serial library at 9600 bps
}
void loop()
{
//Stop car when connection lost or bluetooth disconnected
if (digitalRead(BTState) == LOW) {
state = 'S';
}
//Save income data to variable 'state'
if (Serial.available() > 0) {
state = Serial.read();
}
//If state is equal with letter 'F', car will go forward!
if (state == 'F') {
M1->run(FORWARD);
M2->run(FORWARD);
M3->run(FORWARD);
M4->run(FORWARD);
}
//If state is equal with letter 'B', car will go backward
else if (state == 'B') {
M1->run(BACKWARD);
M2->run(BACKWARD);
M3->run(BACKWARD);
M4->run(BACKWARD);
}
//If state is equal with letter 'S', stop the car
else if (state == 'S') {
M1->run(RELEASE);
M2->run(RELEASE);
M3->run(RELEASE);
M4->run(RELEASE);
}
}
私のセットの写真がアップされている:
ブルートゥースに来るとき、私はすべてを正しく接続しているが、私はフォワード開始したり、なぜときに私は理解していません私の電話やコンピュータからブルートゥース経由でコマンドをバックワード私はDCモータのフルスピードを得ていません。私は彼らに十分な力を得ていないようです。
何が間違っているのですか?
この質問はこちらより[arduino.se]に適しています。 –
こんにちはケン、はい私はあなたのポイントを参照してくださいが、私はあまりにも運がこの質問を投稿している。 私はコードで問題を抱えていると思われます。なぜなら、誰かがここで誰かが問題を指摘してくれることを期待していたのです。 – Slavisha