Arduino智能小车蓝牙控制代码及说明

说明

在完成Arduino智能小车的硬件组装接线后,可以为小车添加蓝牙模块进行蓝牙控制,蓝牙控制比红外控制距离更远,指挥更有效。

小车DIY配件购买地址:https://item.taobao.com/item.htm?id=523953094755

蓝牙模块接线说明

蓝牙模块使用调试教程请移步:http://www.3dant.cn/index.php/Home/Help/article?id=8

蓝牙模块购买地址:https://item.taobao.com/item.htm?id=524020809762

蓝牙模块与Arduino主板的串口(TX、RX)连接以后,就可以使用安装有蓝牙模块的智能设备,通过串口控制小车运动方向和动作。

下面以Android手机为例介绍。

Android手机端设置

1、安装“蓝牙串口SPP”软件,手机各大APP Store都可以下载,也通过电脑下载:

bluetoothSPP.zip

2、设置五个按钮如下:GO、BACK、STOP、Turn Right、Turn Left。

1447254461780029.png

3、每个按钮具体设置如下:

OFF和ON状态都写按钮名,字符GO发送“G”、BACK发送“B”、STOP发送“S”、Turn Right发送“R”、Turn Left发送“L”。

1447254461703200.png


代码

Arduino烧制代码如下,由于接线针脚及顺序有所不同,部分代码可能需要调整。

/*
 蓝牙遥控Arduino小车程序
 功能:小车接收到蓝牙模块发送过来的字符“G”前进,字符“B”后退,字符“L”左转,字符“R”右转,字符“S”停止。
 By 爱之家淘宝店 2015.11.5
 小车DIY配件购买地址:https://item.taobao.com/item.htm?id=523953094755
 */
const int L298nIn1 = 2;//L298N模块信号输入
const int L298nIn2 = 3;
const int L298nIn3 = 4;
const int L298nIn4 = 5;
const String GO = "G";//蓝牙遥控器发送信息代码定义
const String BACK = "B";
const String RIGHT = "R";
const String LEFT = "L";
const String STOP = "S";
void setup()
{
  pinMode(L298nIn1, OUTPUT);
  pinMode(L298nIn2, OUTPUT);
  pinMode(L298nIn3, OUTPUT);
  pinMode(L298nIn4, OUTPUT);
  Serial.begin(9600);
}
void goForward() {//小车前进
  digitalWrite(L298nIn1, HIGH);
  digitalWrite(L298nIn2, LOW);
  digitalWrite(L298nIn3, LOW);
  digitalWrite(L298nIn4, HIGH);
}
void goBack() {//小车后退
  digitalWrite(L298nIn1, LOW);
  digitalWrite(L298nIn2, HIGH);
  digitalWrite(L298nIn3, HIGH);
  digitalWrite(L298nIn4, LOW);
}
void goStop() {//小车停止
  digitalWrite(L298nIn1, LOW);
  digitalWrite(L298nIn2, LOW);
  digitalWrite(L298nIn3, LOW);
  digitalWrite(L298nIn4, LOW);
}
void turnRight() {//小车右转
  digitalWrite(L298nIn1, LOW);
  digitalWrite(L298nIn2, HIGH);
  digitalWrite(L298nIn3, LOW);
  digitalWrite(L298nIn4, HIGH);
}
void turnLeft() {//小车左转
  digitalWrite(L298nIn1, HIGH);
  digitalWrite(L298nIn2, LOW);
  digitalWrite(L298nIn3, HIGH);
  digitalWrite(L298nIn4, LOW);
}
String readTtl() {
  String comdata = "";
  while (Serial.available())
  {
    comdata += char(Serial.read());
    delay(2);
  }
  return comdata;
}
void loop()//主循环函数
{
  String s = readTtl();
  if (s == GO ) goForward();//如果按GO键,小车前进,知道按5键停止
  if (s == LEFT ) turnLeft();
  if (s == STOP ) goStop();
  if (s == RIGHT ) turnRight();
  if (s == BACK ) goBack();
}