本帖最后由 lxf 于 2020-8-15 17:10 编辑
目标
1、HC-06蓝牙模块的连接
2、Arduino蓝牙小车程序编写
3、APP Inventor小车控制组件界面和逻辑设计 4、手机APP远程控制小车
实验材料
Arduino UNO开发板
HC-06蓝牙模块 L298N电机驱动板 9V充电锂电池和9V电池扣子 装有两个直流电机马达小车 配套USB数据线 配套杜邦线若干 Arduino IDE软件 APP Inventor软件 手机/平板
(硬件对照图)
内容
用APP Inventor制作手机APP,控制小车前进、后退、左转、右转、停止。
当按下向上键时,小车全速前进,按下向下键时,全速后退,按下向左键时,大幅度左转弯,按下右键时,大幅度右转弯,当按下S键时,小车停止,按下B键时小车减速前进,按下D键时,小车减速后退,按下A键时,小车小幅度左转弯,按下C键时,小车小幅度右转弯。
过程一、App 制作:手机连接HC-06 蓝牙模块,蓝牙小车遥控器APP制作。
1、App 组件设计:
32个水平布局 8个垂直布局 一个列表选择框 一个标签,命名为状态显示 九个按钮,分别命名为上、下、左、右、A、B、C、D、E 一个蓝牙客户端组件 提取码:wkpv
2、App 逻辑设计:
(1)蓝牙连接
(2)按钮设置
提取码:wkpv
过程二:硬件连接及Arduino IDE程序编写
接线图
备注: L298N电机驱动板的ENA接Arduino UNO的4号引脚,ENB接Arduino UNO的12号引脚。
接线方式
Arduino UNO <------> HC-06蓝牙模块 5V <------> VCC GND <------> GND RX←0 <------> TXD TX→1 <------> RXD Arduino UNO <------> L298N电机驱动板 5V <------> 5V GND <------> GND
ENA <------> 4 IN1 <------> 5
IN2 <------> 6
ENB <------> 12
IN3 <------> 10 IN4 <------> 11 L298N电机驱动板 <------> 直流减速电机A OUT1 <------> 一端接口 OUT2 <------> 另一端接口 L298N电机驱动板 <------> 直流减速电机B OUT3 <------> 一端接口 OUT4 <------> 另一端接口 9V充电锂电池 <------> L298N电机驱动板 正极 <------> +12V 负极 <------> GND
程序实现代码
- String item; //声明一个字符串变量item
- void setup(){
- item = ""; //变量item赋值为空
- Serial.begin(9600); //设置串口波特率为9600
- pinMode(4, OUTPUT); //定义4号引脚为输出
- pinMode(5, OUTPUT); //定义5号引脚为输出
- pinMode(6, OUTPUT); //定义6号引脚为输出
- pinMode(10, OUTPUT); //定义10号引脚为输出
- pinMode(11, OUTPUT); //定义11号引脚为输出
- pinMode(12, OUTPUT); //定义12号引脚为输出
- }
- void loop(){
- if (Serial.available() > 0) { //如果串口收到字符数大于零,即串口接收到数据
- item = Serial.readString(); //那么将获取串口接收到的数据赋值给变量item
- if (item == "U") { //如果接收到的数据是U,那么小车全速前进
- digitalWrite(4,HIGH);
- digitalWrite(5,HIGH);
- digitalWrite(6,LOW);
- digitalWrite(12,HIGH);
- digitalWrite(10,HIGH);
- digitalWrite(11,LOW);
- } else if (item == "D") { //如果接收到的数据是D,那么小车全速后退
- digitalWrite(4,HIGH);
- digitalWrite(5,LOW);
- digitalWrite(6,HIGH);
- digitalWrite(12,HIGH);
- digitalWrite(10,LOW);
- digitalWrite(11,HIGH);
- }
- else if (item == "L") { //如果接收到的数据是L,那么小车大幅度左转弯
- digitalWrite(4,HIGH);
- analogWrite(5,80);
- digitalWrite(6,LOW);
- digitalWrite(12,LOW);
- }
- else if (item == "R") { //如果接收到的数据是R,那么小车大幅度右转弯
- digitalWrite(4,LOW);
- digitalWrite(12,HIGH);
- analogWrite(10,80);
- analogWrite(11,LOW);
- }
- else if (item == "S") { //如果接收到的数据是S,那么小车停止
- digitalWrite(4,LOW);
- digitalWrite(12,LOW);
- }
- else if (item == "Q") { //如果接收到的数据是Q,那么小车减速前进
- digitalWrite(4,HIGH);
- analogWrite(5,80);
- digitalWrite(6,LOW);
- digitalWrite(12,HIGH);
- analogWrite(10,80);
- digitalWrite(11,LOW);
- }
- else if (item == "T") { //如果接收到的数据是T,那么小车减速后退
- digitalWrite(4,HIGH);
- digitalWrite(5,LOW);
- analogWrite(6,80);
- digitalWrite(12,HIGH);
- digitalWrite(10,LOW);
- analogWrite(11,80);
- }
- else if (item == "Z") { //如果接收到的数据是Z,那么小车小幅度左转弯
- digitalWrite(4,HIGH);
- analogWrite(5,80);
- digitalWrite(6,LOW);
- digitalWrite(12,HIGH);
- analogWrite(10,60);
- digitalWrite(11,LOW);
- }
- else if (item == "Y") { //如果接收到的数据是Y,那么小车小幅度右转弯
- digitalWrite(4,HIGH);
- analogWrite(5,60);
- digitalWrite(6,LOW);
- digitalWrite(12,HIGH);
- analogWrite(10,80);
- digitalWrite(11,LOW);
- }
- }
- }
复制代码 |