我正在为我的学校项目制作遥控车,这是我第一次编写代码。
我正在使用Arduino Uno,L293D电机护罩和HC-05进行此项目。
我正在关注https://blog.miguelgrinberg.com/post/building-an-arduino-robot-part-ii-programming-the-arduino的指南,我无法通过蓝牙连接正确地与Arduino通信。
下面的草图一切正常:
#include <SoftwareSerial.h>
SoftwareSerial BTSerial(6,7);
void setup()
{
BTSerial.begin(9600);
}
void loop()
{
if (BTSerial.available() > 0) {
char ch = BTSerial.read();
BTSerial.print("Received: ");
BTSerial.println(ch);
if (ch == 'a') {
digitalWrite(9, HIGH);
}
else {
digitalWrite(9, LOW);
}
}
}
我可以使用这个草图用我的Android手机打开和关闭LED,但如果我在草图中包含电机的定义,arduino会不断向我的手机发送println消息,但它不会响应我的命令。
#include <SoftwareSerial.h>
#include <AFMotor.h>
SoftwareSerial BTSerial(6,7);
AF_DCMotor Motor1(1);
AF_DCMotor Motor2(2);
AF_DCMotor Motor3(3);
AF_DCMotor Motor4(4);
void setup()
{
BTSerial.begin(9600);
}
void loop()
{
if (BTSerial.available() > 0) {
char ch = BTSerial.read();
BTSerial.print("Received: ");
BTSerial.println(ch);
if (ch == 'C') {
Motor1.setSpeed(255);
Motor1.run(BACKWARD);
Motor2.setSpeed(255);
Motor2.run(BACKWARD);
Motor3.setSpeed(255);
Motor3.run(BACKWARD);
Motor4.setSpeed(255);
Motor4.run(BACKWARD);
}
if (ch == 'D') {
Motor1.setSpeed(0);
Motor1.run(BRAKE);
Motor2.setSpeed(0);
Motor2.run(BRAKE);
Motor3.setSpeed(0);
Motor3.run(BRAKE);
Motor4.setSpeed(0);
Motor4.run(BRAKE);
if (ch == 'E') {
digitalWrite(9, HIGH);
}
if (ch == 'F') {
digitalWrite(9, LOW);
}
}
}
}
为什么会发生这种情况,我该如何解决?请帮忙。
(对于附件)我没有连接电机;他们可以通过串口连接到我的笔记本电脑上修改草图,但显然它不适用于蓝牙命令。这里的图像描述
答案 0 :(得分:0)
#include <SoftwareSerial.h>
#include <AFMotor.h>
SoftwareSerial BTSerial(6,7);
AF_DCMotor Motor1(1);
AF_DCMotor Motor2(2);
AF_DCMotor Motor3(3);
AF_DCMotor Motor4(4);
void setup()
{
BTSerial.begin(9600);
}
void loop()
{
while (BTSerial.available()) {
delay(10) //delay for giving time to the read buffer
char ch = BTSerial.read();
BTSerial.print("Received: ");
BTSerial.println(ch);
switch(ch){
case 'C':
Motor1.setSpeed(255);
Motor1.run(BACKWARD);
Motor2.setSpeed(255);
Motor2.run(BACKWARD);
Motor3.setSpeed(255);
Motor3.run(BACKWARD);
Motor4.setSpeed(255);
Motor4.run(BACKWARD);
break;
case 'D':
Motor1.setSpeed(0);
Motor1.run(BRAKE);
Motor2.setSpeed(0);
Motor2.run(BRAKE);
Motor3.setSpeed(0);
Motor3.run(BRAKE);
Motor4.setSpeed(0);
Motor4.run(BRAKE);
break;
case 'E':
digitalWrite(9, HIGH);
break;
case 'F':
digitalWrite(9, LOW);
break;
}
break;
}
}
试试这个并告诉它是否正常工作。
此外,您可以使用Playstore上提供的Android应用程序进行控制。我想你会喜欢这个应用程序在制作不同的项目时非常有用。
https://play.google.com/store/apps/details?id=invootech.ashish.anduino_connect