(A)BlueTooth蓝牙模块上的5V、3.3V任意接一个到相应的电塌宴巧压就可以KEY接高电平、TX-->D2、RX-->D3 ,然后通过USB把UNO接到电脑上。
上电后,模块上的POWER二极管会一直亮,LED1会半秒闪一次,如果不是这样,重新上电或复位。
B)烧录代码
关于Arduino UNO如何烧录代码,在此不细讲,不懂了请参考相关资料。
通过如下程序可以修改相关参数:
#include <NewSoftSerial.h> //Software Serial Port
#define RxD 2
#define TxD 3
#define LED 13
NewSoftSerial blueToothSerial(RxD,TxD)
void setup()
{
Serial.begin(9600)
pinMode(RxD, INPUT)
pinMode(TxD, OUTPUT)
setupBlueToothConnection()
}
void loop()
{
digitalWrite(LED, HIGH)
delay(500)
digitalWrite(LED, LOW)
delay(500)
}
void setupBlueToothConnection()
{
Serial.println("Setting Bluetooth parameters")
blueToothSerial.begin(38400)//Set BluetoothBee BaudRate to default baud rate 38400
delay(100)
sendBlueToothCommand("AT\r\n")
sendBlueToothCommand("AT+NAME=HC-05\r\n")//命名模块名
sendBlueToothCommand("AT+ROLE=0\r\n")//设置主从模式:0从机,1主机
sendBlueToothCommand("AT+PSWD=1234\r\n")//设置配对祥虚密码,如0123
sendBlueToothCommand("AT+UART=38400,0,0\r\n")//设置波特率9600,停止位1,校验团键位无
sendBlueToothCommand("AT+RMAAD\r\n")//清空配对列表
delay(100)
Serial.println("Setup complete")
}
void sendBlueToothCommand(char command[])
{
char a
blueToothSerial.print(command)
Serial.print(command)
delay(100)
while(blueToothSerial.available())
{
Serial.print(char(blueToothSerial.read()))
}
}
程序中的蓝牙名称、命令等信息都可以修改或添加。
#include<reg52.h>//声明头文件#define uchar unsigned char//宏定义
#define uint unsigned int//宏定义
sbit deng=P2^0//定义车灯的控制引脚
sbit z=P2^1//定义左转向灯的控制引脚
sbit y=P2^2//定义右转向灯的引脚
sbit BEEP=P2^3//定义蜂鸣冲仔器的引脚
sbit zuo1=P0^0//定义控制左边电机的单片机引脚
sbit zuo2=P0^1//定义控制左边电机的散漏汪单片机引脚
sbit you1=P0^2//定义控制右边电机的单片机引脚
sbit you2=P0^3//定义控制右边电机的单片机引脚
uchar a=0//定义一个变量a,用来读取串口的数据
void delay(uint z)//一个带参数的延时程序
{
int i,j//定义两个变量
for(i=10i>0i--)
for(j=zj>0j--)//将参数z赋值给j
}
void init()//初始化子程序
{
TMOD=0x20 //设置定时器T1为工作方式2
TH1=0xfd
TL1=0xfd //T1定时器装初值
TR1=1 //启动定时器T1
REN=1 //允许串口接收
SM0=0
SM1=1 //设置串口工作方式1
EA=1 //开总中断
ES=1 //开串口中断
}
void go()//前进子程序
{
zuo1=0
zuo2=1//左边轮子正转
delay(25)//pwm有用值,越大左边方向的轮子越快
zuo1=1//关闭左边轮子
you1=0
you2=1 //右边轮子正转
delay(24)//pwm有用值,越大搜缓右边的轮子越快
you1=1//关闭右边轮子
delay(100)//pwm无用值,越大,小车跑的越慢
z=1
y=1//关闭转向灯
}
void hui()//小车后退的子程序
{
zuo1=1
zuo2=0//左边轮子倒转
delay(25)//pwm有用值,越大左边方向的轮子越快
zuo2=1//关闭左边轮子
you1=1
you2=0 //右边轮子倒转
delay(24)//pwm有用值,越大右边的轮子越快
you2=1//关闭右边轮子
delay(100)//pwm无用值,越大,小车跑的越慢
z=1
y=1//关闭转向灯
}
void turnleft()//小车左转弯子程序
{
zuo1=1
zuo2=1//左边轮子停止转动
you1=0
you2=1 //右边轮子正转
delay(24)//pwm有用值,越大右边的轮子越快
you1=1//右边轮子停止
delay(100)//pwm无用值,越大,小车跑的越慢
z=1
y=1//关闭转向灯
z=~z//左转向灯打开
}
void turnright()//小车右转弯子程序
{
zuo1=0
zuo2=1//左边轮子正转
delay(25)//pwm有用值,越大左边方向的轮子越快
zuo1=1//左边轮子停止
you1=1
you2=1 //右边轮子停止
delay(100)//pwm无用值,越大,小车跑的越慢
z=1
y=1//关闭转向灯
y=~y//右转向灯打开
}
void down()//停止子程序
{
zuo1=1
zuo2=1
you1=1
you2=1 //左右轮全部停止
z=1
y=1//关闭转向灯
}
void onbeep()//蜂鸣器鸣响子程序
{
BEEP=0
}
void offbeep()//蜂鸣器鸣响子程序
{
BEEP=1
}
void main()//主程序
{
init()//调用初始化子程序
while(1)//死循环
{
switch(a)//判断a从串口读取到的数据
{
case 0x1f://如果是0x1f就前进
go()
break
case 0x2f://如果是0x2f就后退
hui()
break
case 0x3f://如果是0x3f就左转
turnleft()
break
case 0x4f://如果是0x4f就右转
turnright()
break
case 0x00://如果是0x00就停止
down()
break
case 0xa0://如果是0xa0车灯打开
deng=0
break
case 0xb0://如果是0xb0车灯关闭
deng=1
break
case 0xc0://如果是0xc0蜂鸣器鸣响
onbeep()
break
case 0xd0://如果是0xc0蜂鸣器鸣响
offbeep()
break
}
}
}
void chuan() interrupt 4//串口中断服务程序
{
RI=0//软件清除串口响应
a=SBUF//读取单片机串口接受的蓝牙模块发送的数据
}
HC-05蓝牙模块的state是连接状态隐颤引脚,en应该是使能,这两个引脚一般不需要连接,悬空即可凳高,关于程序灶粗败请参考https://zhidao.baidu.com/question/370353409139226284欢迎分享,转载请注明来源:内存溢出
评论列表(0条)