基于89C51单片机和SU-03T 语音识别模块切换小车功能的实现

该文描述了一个使用89C51单片机和SU-03T语音识别模块来控制小车的系统。通过配置SU-03T模块,实现了对小车的三种模式控制:寻迹模式、跟随模式和避障模式。在每种模式下,小车根据传感器检测到的环境信息进行相应的动作,如前进、转弯或停止。代码中定义了不同模式下的逻辑判断和动作执行函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

基于89C51单片机和SU-03T 语音识别模块切换小车功能的实现

SU-03T模块登录厂家给的地址http://www.smartpi.cn/#/进行傻瓜式配置。

在这里插入图片描述

相关代码实现:

#include "reg52.h"

\#include "hc04.h"

\#include "delay.h"

\#include "sg90.h"

\#include "Oled.h"

\#include "motor.h"

\#define MIDDLE 0

\#define LEFT 1

\#define RIGHT 2

\#define BZ 1

\#define XJ 2#define GS 3

sbit A25 = P1^5;

sbit A26 = P1^6;

sbit A27 = P1^7;

sbit leftSensorX = P2^7;

sbit rightSensorX = P2^6;

sbit leftSensorG = P2^5;

sbit rightSensorG = P2^4;

char dir;

double disMiddle;

double disLeft;

double disRight;

void xunjiMode()

{

if(leftSensorX == 0 && rightSensorX == 0){

goForward();

}

if(leftSensorX == 1 && rightSensorX == 0){

goLeft();

}

if(leftSensorX == 0 && rightSensorX == 1){

goRight();

}

if(leftSensorX == 1 && rightSensorX == 1){

//停

stop();

}

}

void gensuiMode()

{

if(leftSensorG == 0 && rightSensorG == 0){

goForward();

}

if(leftSensorG == 1 && rightSensorG == 0){

goRight();

}

if(leftSensorG == 0 && rightSensorG == 1){

goLeft();

}

if(leftSensorG == 1 && rightSensorG == 1){

//停

stop();

}

}void bizhangMode()

{

if(dir != MIDDLE){

sgMiddle();

dir = MIDDLE;

Delay300ms();

}

disMiddle = get_distance();

if(disMiddle > 35){

//前进

goForward();

}else if(disMiddle < 10){

goBack();

}else

{

//停止

stop();

//测左边距离

sgLeft();

Delay300ms();

disLeft = get_distance();

sgMiddle();

Delay300ms();

sgRight();

dir = RIGHT;

Delay300ms();

disRight = get_distance();

if(disLeft < disRight){

goRight();

Delay150ms();

stop();

}

if(disRight < disLeft){

goLeft();

Delay150ms();

stop();

}

}

}

void main()

{

int mark = 0;

Time0Init();

Time1Init();

//舵机的初始位置

sgMiddle();

Delay300ms();

Delay300ms();

dir = MIDDLE;

Oled_Init();

Oled_Clear();

Oled_Show_Str(2,2,"-----Ready----");

while(1){

//满足寻迹模式的条件

if(A25 == 0 && A26 == 1 && A27 == 1){

if(mark != XJ){

Oled_Clear();

Oled_Show_Str(2,2,"-----XunJi----");

}

mark = XJ;

xunjiMode();

}

//满足跟随模式的条件

if(A25 == 1 && A26 == 0 && A27 == 1){

if(mark != GS){

Oled_Clear();

Oled_Show_Str(2,2,"-----GenSui----");

}

mark = GS;

gensuiMode();

}

//满足避障模式的条件

if(A25 == 1 && A26 == 1 && A27 == 0){

if(mark != BZ){

Oled_Clear();

Oled_Show_Str(2,2,"-----BiZhang----");

}

mark = BZ;

bizhangMode();

}

}

}

lear();

Oled_Show_Str(2,2,"-----GenSui----");

}

mark = GS;

gensuiMode();

}

//满足避障模式的条件

if(A25 == 1 && A26 == 1 && A27 == 0){

if(mark != BZ){

Oled_Clear();

Oled_Show_Str(2,2,"-----BiZhang----");

}

mark = BZ;

bizhangMode();

}

}

}

实现视频:

VID_20230329_153617

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值