Я строю робот, который работает с двигателями 4DC, и у меня небольшие проблемы при подключении к нему Bluetooth. Когда я запускаю тестовый код для этих двигателей без bluetooth, двигатели работают с полной силой, никаких проблем. Вот код теста только для двигателей:Arduino + AdaFruit Engine Shield 2.3 + проблема с мощностью Bluetooth?
#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);
}
Когда я прикрепить Bluetooth и запустить этот код двигателей работает с таким низким крутящим моментом, который едва может двигаться роботом.
#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);
}
}
Вот фотографии моего набора вверх:
Я подсоединил все правильно, когда приходит к BlueTooth канала, но я не понимаю, почему, когда я инициирую вперед или Обратная команда с моего телефона или компьютера через Bluetooth я не получаю полную скорость двигателей постоянного тока. почти кажется, что я не получаю достаточную власть для них.
Любая идея, что я делаю неправильно?
Этот вопрос больше подходит для [arduino.se], чем здесь. –
Привет, Кен, да, я вижу вашу точку зрения, но я тоже разместил этот вопрос, но не повезло. Мне кажется, что у меня проблема с кодом, а не с проводкой, поэтому я надеялся, что кто-то здесь сможет указать на вопрос. – Slavisha