上回书说到,小车的超声波避障功能基本完成。那么本篇就来介绍最后一个功能,蓝牙智能控制功能。
废话不多说,来吧。
蓝牙控制功能
最令我感动的是,我原以为最困难的一个功能在实际操作下居然成为了最简单的那个。 原本我以为,蓝牙模块要查一堆代码并且慢慢理解才能掌握(这个模块一开始是和我同组的另一个组员来研究的,所以我当时并不了解。),没想到这个功能一下子就搞出来了,现在细细来说吧。 示例代码:
int inputPin = 8; // 定义超声波信号接收接口
int outputPin = 9; // 定义超声波信号发出接口
int STBY = 11; //控制电机驱动状态引脚
int PWMA = 3; //A电机速度控制
int AIN1 = 23; //A电机方向
int AIN2 = 22;
int PWMB = 5; //与上述A做对应即可
int BIN1 = 25;
int BIN2 = 24;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600); //波特率设为9600
}
void loop() {
// put your main code here, to run repeatedly:
int i;
Serial.println("Hello World!"); //这个代码是一开始测试用的,用的Arduino上的串口监视器来测试数据是否接收到
if(Serial.available()) //下面这个if条件语句,是让从串口输入数据来给i赋值的
{
i=Serial.parseInt();
}
Serial.println(i,DEC);
switch(i) //i的值不同,所实现的功能不同
{
case 2: //如果i=2,小车前进
{
move(1,128,1);
move(2,128,1);
Serial.println("前进"); //输出这个是为了测试输入的数据是否进入了case语句中
break;
}
case 4: //如果i=4,小车左转
{
move(1,90,1);
move(2,90,0);
Serial.println("左转");
break;
}
case 6: //如果i=6,小车右转
{
move(1,90,0);
move(2,90,1);
Serial.println("右转");
break;
}
case 8: //如果i=8,小车后退
{
move(1,128,0);
move(2,128,0);
Serial.println("后退");
break;
}
case 5: //如果i=5,小车停止
{
move(1,0,0);
move(2,0,0);
Serial.println("STOP!!!");
break;
}
}
}
当然要控制,只有代码是不行的,要下一个app叫蓝牙串口。
就是这么一个app,进去后也要设置好。进入页面,点击右上角的连接,找到HC—05,连接初始密码是1234
成功连接后,你就可以输入消息了。比如输入2,则给i赋值为2,就会打印“前进”字符,证明了成功进入了case 2语句中,随后小车前进。其他样例与之类似,蓝牙功能就可以实现了。 这个app有一点十分方便,输入数据的十分麻烦,如果是按键形式,那不就简单多了,这个app就有这种功能。
聊天那一行,如果往右滑,会发现一个键盘的操作界面,打开编辑模式,你就可以自己改变了。比如点击前进,就自动输入2这个消息,十分方便吧。
我的想法:
在蓝牙功能这一设计上,并没有出现太多的困难。(大概是实现的功能太简单了吧,蓝牙的其他功能没有涉及到的缘故吧) 至此,Arduino智能小车的三个功能就介绍完了。不出意外的话,下一篇智能小车介绍的内容应该是矩阵焊接(因为现在实现的功能是一个一个的,还没有选择这一功能),完成矩阵焊接,各个模块就都可以放在小车上了。