arduino循迹小车代码_基于stm32循迹避障语音控制金属探测蓝牙小车设计(原理图+pcb+源码+参考文档)...

功能描述及设计原理:

小车具有检测里程功能,在金属探测模式,槽型光耦会检测小车车轮的圈数,以此来计算小车行走的里程,并可以通过OLED屏幕显示出来。还可以显示小车的工作模式以及小车距离前方障碍物的距离。

》默认模式:默认为语音控制模式。通过语音控制。可以实现切换到避障模式、金属探测模式、语音控制模式、蓝牙遥控模式、循迹模式。

》避障模式:核心板通过超声波传感器检测前方距离,驱动小车电机进行前进、后退、左右转等操作,且在小车前进时检测前方距离,若小于20cm则自动右转以达到避障目的。

》金属探测模式:小车同时驱动舵机在扫描到金属时,根据金属探测模块探测到的位置,驱动舵机指针指向检测到金属方向,在金属探测模式,自动开启避障功能。

》语音控制模式:小车受控于语音识别模块。距离小车较近处,呼叫“小车”,待看到LD3320语音识别模块亮2个灯时,呼叫“前进”、“后退”、“左转”、“右转”、“停止”即可对小车进行控制,特别注意:语音控制受环境噪声影响比较大,所以在小车行驶过程中,由于小车电机的噪音,是语音控制识别较困难,反应不灵敏,故应近距离大声呼叫,或者重启小车电源,进行重新语音控制。

》蓝牙遥控模式:打开手机蓝牙,并打开控制小车的APP,手机连接小车的蓝牙,连接成功后,即可控制小车“前进”、“后退”、“左转”、“右转”、“停止”。并可控制小车速度。

》循迹模式:在循迹模式。需要有循迹的线路才可以,用黑色的胶带在地上粘出线路出来,然后将小车放在黑线的上面,小车就会沿黑色的线条进行行走。

afe830374039f3852614a8c6db95a3d8.png fde1d41d609eee6bd26feef136fd0392.png 40c5518c621dacb4f8dfcf8a519cdafc.png

资料说明:

·  STM32程序采用C语言编写,通过Keil5软件编译,文件为工程源代码。

·  电路图为AD格式原理图PCB工程文件,用altiumDesigner打开。

温馨提示:

这个设计是有实物验证的,可以看下演示视频,电路图源文件和源程序都是验证成功可用的,可以说是学习单片机设计制作的好素材!希望这个分享对大家有所帮助!

资料内容包含截图如下,下载后请解压压缩包后打。

4ef7284be8291095c8278c7888c0e583.png d0847aa698cb51bc78b92c5318c26263.png

视频内容截图:

657577e49205211cbe35177a32060c65.png d0847aa698cb51bc78b92c5318c26263.png

附件内容截图:

1690efdd3a2eec61eef1b10388bebad9.png f5988e3dd970f164e60a47e4eb1741a4.gif

加入群聊

传感器技术交流2群:954070515

射频/无线交流2群:725064756

电机控制研发交流2群:619795552

电源开发交流2群:457910972

EDA/PCB设计交流2群:743876836

物联网技术交流2群:992318230

汽车电子交流1群:238034110

嵌入式交流1群:852018713

电路城官方交流群,期待你的加入。

876998088485e37d0803f447528aac85.gif

点击“

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Arduino循迹小车代码是一种用于控制小车在黑色线路上行驶并碍物的程序。以下是一个简单的示例代码: ``` #define IR_IN A0 //红外传感器模拟输入引脚 #define IR_OUT 13 //红外传感器数字输出引脚 #define ENA 9 //左侧电机使能引脚 #define ENB 10 //右侧电机使能引脚 #define IN1 6 //左侧电机控制引脚1 #define IN2 7 //左侧电机控制引脚2 #define IN3 11 //右侧电机控制引脚3 #define IN4 12 //右侧电机控制引脚4 #define SPEED 100 //电机速度 void setup() { pinMode(IR_OUT, OUTPUT); pinMode(ENA, OUTPUT); pinMode(IN1, OUTPUT); pinMode(IN2, OUTPUT); pinMode(ENB, OUTPUT); pinMode(IN3, OUTPUT); pinMode(IN4, OUTPUT); Serial.begin(9600); } void loop() { int IRValue = analogRead(IR_IN); if (IRValue > 100) { digitalWrite(IR_OUT, HIGH); } else { digitalWrite(IR_OUT, LOW); } if (digitalRead(IR_OUT) == HIGH) { moveForward(); delay(500); } else { backOff(); delay(500); turnLeft(); delay(500); } } void moveForward() { analogWrite(ENA, SPEED); analogWrite(ENB, SPEED); digitalWrite(IN1, HIGH); digitalWrite(IN2, LOW); digitalWrite(IN3, HIGH); digitalWrite(IN4, LOW); Serial.println("前进"); } void backOff() { analogWrite(ENA, SPEED); analogWrite(ENB, SPEED); digitalWrite(IN1, LOW); digitalWrite(IN2, HIGH); digitalWrite(IN3, LOW); digitalWrite(IN4, HIGH); Serial.println("后退"); } void turnLeft() { analogWrite(ENA, SPEED); analogWrite(ENB, SPEED); digitalWrite(IN1, LOW); digitalWrite(IN2, HIGH); digitalWrite(IN3, HIGH); digitalWrite(IN4, LOW); Serial.println("左转"); } ``` 这段代码首先定义了红外传感器的输入输出引脚和电机的使能引脚和控制引脚,并设置了电机的速度常量。 在`setup()`函数中,为红外和电机引脚设置了相应的模式,并通过串口初始化以便进行调试。 在`loop()`函数中,先读取红外传感器的模拟值并根据阈值设定红外输出引脚的电平。若红外传感器检测到黑线,则执行`moveForward()`函数使小车前进,并延时500毫秒。若未检测到黑线,则执行`backOff()`函数使小车后退,延时500毫秒,然后执行`turnLeft()`函数使小车左转,延时500毫秒。 上述三个控制函数根据传感器的状态控制小车的运动和方向,并通过串口输出相应的信息以便调试。 这只是一个简单的示例代码Arduino循迹小车的具体实现可能有所不同,可以根据实际情况进行修改和优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值