在完成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手机为例介绍。
1、安装“蓝牙串口SPP”软件,手机各大APP Store都可以下载,也通过电脑下载:
2、设置五个按钮如下:GO、BACK、STOP、Turn Right、Turn Left。
3、每个按钮具体设置如下:
OFF和ON状态都写按钮名,字符GO发送“G”、BACK发送“B”、STOP发送“S”、Turn Right发送“R”、Turn Left发送“L”。
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(); }