基于Arduino的蓝牙控制小车

上学期买的小车套件和Arduino板子都还在吃灰,昨天兴致来了就准备一步步的整一个
首先找资料把ADXL345三轴加速度传感器调通了
然后把Arduino UNO板子和L293D电机驱动扩展板程序调通了
最后把蓝牙模块HC-05程序调通了。
三轴加速度传感器暂时还没想好怎么使用,so暂时来个蓝牙控制的小车好了。

手机下载蓝牙串口助手,设置串口发送 1 2 3 4 四个数字分别代表前进、后退、右拐、左拐

关于Arduino的编程语言
我想说和C语言对比,爽太多。
你根本不需要了解硬件怎么连接的,内部协议是什么。
因为有很多集成库,只需要会调用其中的API接口即可。
在8位单片机上搞面向对象开发,适合DIYer,适合初学者。

程序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
#include "AFMotor.h"

AF_DCMotor motor1(1); //设置一号电机
AF_DCMotor motor2(2); //设置二号电机
AF_DCMotor motor3(3); //设置三号电机
AF_DCMotor motor4(4); //设置四号电机
void setup()
{
Serial.begin(9600); //串口设置波特率9600
}
void Goahead(unsigned char i) //前进
{
motor1.run(FORWARD);
motor1.setSpeed(i);

motor2.run(FORWARD);
motor2.setSpeed(i);

motor3.run(FORWARD);
motor3.setSpeed(i);

motor4.run(FORWARD);
motor4.setSpeed(i);
}

void Back(unsigned char i) //后退
{
motor1.run(BACKWARD);
motor1.setSpeed(i);

motor2.run(BACKWARD);
motor2.setSpeed(i);

motor3.run(BACKWARD);
motor3.setSpeed(i);

motor4.run(BACKWARD);
motor4.setSpeed(i);
}

void Turn_Left(unsigned char i) //左拐
{
motor1.run(BACKWARD);
motor1.setSpeed(i);

motor2.run(FORWARD);
motor2.setSpeed(i);

motor3.run(FORWARD);
motor3.setSpeed(i);

motor4.run(BACKWARD);
motor4.setSpeed(i);
}

void Turn_Right(unsigned char i) //右拐
{
motor1.run(FORWARD);
motor1.setSpeed(i);

motor2.run(BACKWARD);
motor2.setSpeed(i);

motor3.run(BACKWARD);
motor3.setSpeed(i);

motor4.run(FORWARD);
motor4.setSpeed(i);
}
void stop() //停止
{
motor1.run(RELEASE);
motor2.run(RELEASE);
motor3.run(RELEASE);
motor4.run(RELEASE);
}
void loop()
{
while (Serial.available() > 0)
{
int inChar = Serial.read();
inChar=inChar-0x30;
if(inChar == 1) //前进
{
Goahead(250);
delay(300);
stop();
}
else if(inChar == 2) //后退
{
Back(250);
delay(300);
stop();
}
else if(inChar == 3) //右转
{
Turn_Right(250);
delay(300);
stop();
}
else if(inChar == 4) //左转
{
Turn_Left(250);
delay(300);
stop();
}
else
{
stop(); //停止
}

inChar=0;
}
}

BOM

  • Arduino Uno
  • L293D模块
  • 小车底盘模块
  • 18650电池 x 2
  • HC-05 蓝牙模块

视频暂时还没录制,等哪天有心情了录一个。