? ? ? ?蓝牙驱动基本原理
?????????辆小车的基本功能就是让它能动起来,能通过手机蓝牙进行遥控,所以就需要用到L298N电机驱动模块,和HC-06蓝牙模块。下面就简单介绍一下这两个模块。
? ? ????????一个L298N电机驱动模块能驱动2个马达,小车是四驱驱动,我们可以把两个L298N模块并联,并用12V电压供电,如果你的小车不需要调速,就不用考虑PWM问题,也就无需把使能端ENA、ENB的跳线帽拔掉,直接将IN1、IN2、IN3、IN4与单片机的端口相连,把OUT1、OUT2、OUT3、OUT4与马达相连即可。
????????????????电机驱动模块弄好后,离它能动就只有一步之遥了,我们需要用到HC-06蓝牙模块对小车进行控制。
????????蓝牙模块的TXD,RXD要分别与单片机的RXD、TXD相连,这样串口通信才能收发正常,然后软件设置串口。利用switch 函数,对蓝牙接收的数据进行处理,执行相应的运动。(串口调试我推荐正点原子的Xcom都行啊,能有就行了)。
下面是引脚控制98N的驱动,主要是原理双H桥路理解了就差不多了,你马达接反了转向就会不一样,哈哈小爷我就是这样马达接反了,所以要灵活运用。
?
主要程序
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit IN1=P1^0; //
sbit IN2=P1^1; //
sbit IN3=P1^2; //
sbit IN4=P1^3; //
sbit IN5=P1^4; //
sbit IN6=P1^5; //
sbit IN7=P1^6; //
sbit IN8=P1^7; //
void stop()
{
IN1=0;
IN2=0;
IN3=0;
IN4=0;
IN5=0;
IN6=0;
IN7=0;
IN8=0;
}
void forward()
{
IN1=0;
IN2=1;
IN3=0;
IN4=1;
IN5=1;
IN6=0;
IN7=0;
IN8=1;
}
void back()
{
IN1=1;
IN2=0; //
IN3=1;
IN4=0; //
IN5=0;
IN6=1; //
IN7=1; //
IN8=0;
}
void left()
{
IN1=0;
IN2=0;
IN3=0;
IN4=0;
IN5=0;
IN6=0;
IN7=0;
IN8=1;
}
void right()
{
IN1=0;
IN2=0;
IN3=1;
IN4=0;
IN5=1;
IN6=0;
IN7=0;
IN8=0;
}
void Com_Int(void) interrupt 4
{
uchar receive_data;
EA = 0;
if(RI == 1)
{
RI=0;
IN2=0;
IN3=0;
IN4=0;
IN5=0;
IN6=0;
IN7=0;
IN8=0;
receive_data = SBUF;
switch(receive_data)
{
case ('1'):
forward();break;
case ('2'):
back();break;
case ('3'):
left();break;
case ('4'):
right();break;
case ('0'):
stop();break;
}
}
EA = 1;
}
void UsartConfiguration()
{
SCON=0X50; //
TMOD=0X20;
PCON=0X00;
TH1=0Xfd;
TL1=0Xfd; //
TR1= 1;
ES = 1;
EA = 1;
}
void main()
{
UsartConfiguration();
while(1);
}
? ??
? ? ? ?
?
|