用l298n模块,51超简单代码来实现小车蓝牙控制和循迹
时间: 2023-05-27 07:01:32 浏览: 103
小车蓝牙控制和循迹是常见的机器人项目之一,可以通过L298N模块和51单片机来实现。
要实现小车蓝牙控制,需要准备以下材料和工具:
- 一台51单片机开发板
- 一块L298N模块
- 一对直流电机
- 一块蓝牙模块
- 一块面包板
- 杜邦线若干
- 电池或电源供电
首先,将L298N模块连接到51单片机开发板上,连接如下所示:
L298N模块IN1 → P2.0
L298N模块IN2 → P2.1
L298N模块IN3 → P2.2
L298N模块IN4 → P2.3
L298N模块ENA → P3.4
L298N模块ENB → P3.3
然后将直流电机连接到L298N模块上,电机的正极连接到OUT1和OUT2,负极连接到OUT3和OUT4。
接下来将蓝牙模块连接到51单片机开发板上,连接如下所示:
蓝牙模块TXD → P1.2
蓝牙模块RXD → P1.1
最后,将电源接到L298N模块上,启动程序即可实现小车蓝牙控制。以下是示例代码:
#include <STC89C5xRC.H>
sbit IN1 = P2^0; //控制左轮正转
sbit IN2 = P2^1; //控制左轮反转
sbit IN3 = P2^2; //控制右轮正转
sbit IN4 = P2^3; //控制右轮反转
sbit ENA = P3^4; //控制左轮速度
sbit ENB = P3^3; //控制右轮速度
void delay(WORD i) //延时
{
while (i--);
}
void main()
{
unsigned char receive;
P2 = 0x00; //初始化左右轮控制口
ENA = 1; //使能左轮
ENB = 1; //使能右轮
TMOD = 0x20; //定时器1工作在方式2
TH1 = 0xfd; //波特率9600
TL1 = 0xfd;
SCON = 0x50; //8位数据位,可变波特率
TR1 = 1; //启动定时器1
EA = 1; //总中断打开
ES = 1; //串口中断打开
while (1);
}
void ser() interrupt 4 using 1
{
if (RI == 1) //收到数据
{
RI = 0; //清除接收中断标志位
receive = SBUF; //将数据存储在变量中
switch (receive)
{
case '1': //前进
IN1 = 1;
IN2 = 0;
IN3 = 1;
IN4 = 0;
break;
case '2': //后退
IN1 = 0;
IN2 = 1;
IN3 = 0;
IN4 = 1;
break;
case '3': //左转
IN1 = 0;
IN2 = 1;
IN3 = 1;
IN4 = 0;
break;
case '4': //右转
IN1 = 1;
IN2 = 0;
IN3 = 0;
IN4 = 1;
break;
case '5': //停止
IN1 = 0;
IN2 = 0;
IN3 = 0;
IN4 = 0;
break;
}
}
}
要实现小车循迹,同样需要准备以上材料和工具,并且需要在小车底部安装两个红外传感器。红外传感器探测到黑色时输出高电平,探测到白色时输出低电平。
将红外传感器分别连接到51单片机的P1.6和P1.7引脚上。
接下来,编写循迹代码:
#include <STC89C5xRC.H>
sbit IN1 = P2^0; //控制左轮正转
sbit IN2 = P2^1; //控制左轮反转
sbit IN3 = P2^2; //控制右轮正转
sbit IN4 = P2^3; //控制右轮反转
sbit ENA = P3^4; //控制左轮速度
sbit ENB = P3^3; //控制右轮速度
sbit L_sensor = P1^6; //左传感器
sbit R_sensor = P1^7; //右传感器
void delay(WORD i) //延时
{
while (i--);
}
void main()
{
P2 = 0x00; //初始化左右轮控制口
ENA = 1; //使能左轮
ENB = 1; //使能右轮
while (1)
{
if (L_sensor == 0 && R_sensor == 0) //黑黑
{
IN1 = 0;
IN2 = 1;
IN3 = 0;
IN4 = 1;
delay(20000); //调整小车转弯效果
}
else if (L_sensor == 1 && R_sensor == 0) //白黑
{
IN1 = 1;
IN2 = 0;
IN3 = 0;
IN4 = 1;
}
else if (L_sensor == 0 && R_sensor == 1) //黑白
{
IN1 = 0;
IN2 = 1;
IN3 = 1;
IN4 = 0;
}
else if (L_sensor == 1 && R_sensor == 1) //白白
{
IN1 = 1;
IN2 = 0;
IN3 = 1;
IN4 = 0;
}
}
}
以上就是用L298N模块,51单片机的超简单代码来实现小车蓝牙控制和循迹的过程。这些代码只是简单的示例代码,可以根据需要进行修改。实现小车蓝牙控制和循迹还需要更多的代码和硬件配置。如果您对此感兴趣,可以深入了解更多相关知识和技术。
阅读全文