基于FPGA的蓝牙遥控,超声波避障,红外循迹的智能小车

文章介绍了一款可通过蓝牙控制的智能小车设计,包括使用红外模块进行黑线循迹,超声波模块实现避障,以及蓝牙模块接收指令进行模式切换。代码示例展示了如何处理红外和超声波传感器的信号,并通过蓝牙接收控制信息来驱动小车运动。
摘要由CSDN通过智能技术生成

        闲来无事整个小车玩玩,设想的小车可以有蓝牙模块来控制模式切换,通过发送指令来更改相对应的功能,当避障的时候可以自动规避障碍物,当处于红外循迹时,可以跟随规划的轨迹前线,当手动遥控时可以控制前进后退左右转向停止等功能。

        先介绍一下使用的红外模块,其上有四个管脚,vcc接电源,gnd接地,D0传输红外线是否被吸收,A0传输模拟信号主要是不同距离输出不同的电压,但是此脚一般可以不接.

        然后思路就是通过判断D0传过来的电平信号来判断小车有没有接触到黑线,当红外线被吸收,也就是触碰到黑线,D0会持续输出高电平,直到它检测到红外线返回才会回归低电平,基于对管脚传回的电平检测,可以判断是否接触到黑线。

这部分代码很好写,可以参考如下代码:

`timescale 1ns / 1ps


module red_line(
input sysclk         ,///系统时钟
input rst_n          ,///复位
input [1:0] D0       ,///红外探测模块的电平输入
output  reg [3:0] car//输出轮子控制
    );
always @(posedge sysclk)
   if(!rst_n)
      car<=4'b1001;
   else if( D0[0]==1 && D0[1]==1 )
      car<=4'b0000;     
   else if(D0[0]==1)   //左边的红外探测模块
      car<=4'b0101;
   else if(D0[1]==1)  //右边的红外探测模块
      car<=4'b1010;
   else
      car<=4'b1001;    //保持状态
endmodule

输入系统时钟,复位,红外探测模块的电平输入,然后输出小车轮子一个怎么走,就只有一个简单的判断语句。

然后是超声波模块,超声波模块的应用,之前写过了,这里就不再赘述。

超声波模块的距离还要输入到一个避障模块中,这个模块只负责成立输入的距离信息,判断是否达到阈值。

`timescale 1ns / 1ps


module car_c(
input sysclk,
input rst_n,
input [13:0] distance,
output  reg [3:0] car
    );
 always @(posedge sysclk)
    if(!rst_n)
        car<=4'b1001;
    else if(distance>=15)
        car<=4'b1001;
    else if(distance<15)
        car<=4'b1010 ; 
    else
        car<=car;
 //assign car=4'b1001;
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值