用51单片机做的小车如何实现小车走迷宫

硬件电路我就不说了,主要说说算法.
1. 先从一种比较简单的迷宫说起,我称之为"二叉树"迷宫,即每个节点上最多连接三条支路,换句话 说,就是当你面对岔路时,你最多只有三个选择,要么左转,要么右转,要么回头.
假如,我们将左转编码为0,右转编码为1,则迷宫的从入口到出口的路径为一串二进制编码.对于最短路径,我们可以让机器人多走几次迷宫,得到一系列二进制串,位数最少的即为"局部最短路径".我们还可以通过这些二进制串,得到迷宫"局部拓扑结构",一种二叉树结构.
注意,在上面的结果上我都加有"局部"两字,这是因为机器人走迷宫的次数如果不够多,或则说少于迷宫的总路径数,我们得到结果都是不完整的,只有当机器人走迷宫的次数足够大,以致于走遍了迷宫所有的路径,这时我们才能得到完整的结果,然而这对于大多数迷宫来说都是不可实现的,也就是说,我们得到的结果都是局部的,最多是趋近于全局结果.
不知大家发现没有,上面还有一种情况我没有编码,那就是回退.这个问题处理起来比较复杂,因此不能仅仅用一位二进制码来表示,必须有专门的处理机制.
这个机制分为三个方面,
一是,每次只回退一步,即当前方无路可走时,回到上一个叉路口,选择另一条支路,程序上就是将当前二进制串减少一位,并将改变后的二进制串的最后一位取反,代表选另一条支路.
二是, 回退一步后,仍无路可走时,再回退一部,重复上述过程,直至有岔路可选.
三是,整个回退过程中,记录并保存每次回退的路径,即左右转向的二进制编码,一个回退过即既是由开始回退到开始前进的整段过程.保留这些二进制串,是因为可以通过他们反推得出迷宫的一些局部的拓扑结构

2. 熟悉上面"二叉树迷宫"后 ,对于一般迷宫通过如下方法设计
一、估计出迷宫最大的支路数,即一个叉路口最多有几条岔路,这里假设为a
二 、用a为二进制码对每一个岔路编码,例如我们可以按顺时针编码
三、 将a为二进制编码代替“二叉树迷宫 ”的一位二进制,其它步骤相仿即可。
当然,我们也可以用变长二进制码表示一次路径选择,不过这时得记录保存每次选则对应的二进制码的长度。

补充:
上面的算法,我说的都很笼统,但总体思路是明确的,即:以迷宫入口为根节点,每个叉路口为一个节点,每个岔路为一段树枝,每个树枝用一定位数的二进制码编码,以树形结构表示迷宫的拓扑结构,于是迷宫的通路可以表示为从树的根节点到某一叶节点的路径。
硬件电路上,主要有两个方面的设计:一是,前进河和回退两个状态的识别与转换;二是,岔路的识别与选择。

以上都是个人观点,思考并不周全,还望大家指正补充。

安装两路红外检测系统,两路系统同时对行走路线的记号检测对比,如果没有偏差,不会产生偏差电流,小车正常前走,如果通过对比计算有偏差电流,就会自动校正方向,你按这个思路设计即可。

一般不用51,要处理的数据太多了,建议用ARM

2楼的同学只是解决了小车直行的问题
并没有解决小车如何去记忆迷宫结构以及路径算法
作为迷宫来讲
如何分辨岔路和选择进入不同的通道比较困难
我的思路是
在小车两侧安装两个长臂微动开关
设计迷宫时迷宫通道的宽窄压缩两个开关
当路过岔路时开关弹开就可以判断出岔路的位置
(这是廉价的解决方式 可以做成红外测距更好)
这样在小车行进过程中会将途径的所有岔路全部记录
然后逐条道路搜索 程序始终记录从原点开始的路径长度
重复走过的路线长度做减运算 直至小车走出迷宫

需要考虑的东西较多 做的过程中慢慢摸索吧

怎样用51单片机控制小车走圆形轨迹~

淘宝买4路/8路循迹模块,再买黑色条做一个圆形轨道,剩下的就是C语言编程啦~
这个是借鉴别人的,写的很好。给你看看,看完你就有思路了。
基于51单片机的智能小车循迹讲解

呵呵,这个比较简单!做法通常是通过无线模块进行遥控,可以是蓝牙、红外,然后通过遥控器,进行控制;我加你好友了,可以交流交流!

满意的话记得赞一下,呵呵!

#19681795406# 51单片机小车的程序 - ******
#壤浩# sbit temp=P2^0;//通过switch语句你定义的是位,而swtich判断里应该是判断P2口,所以应写成sfr temp = P2;

#19681795406# 能否告诉一下基于51单片机的智能循迹小车具体的设计和电路图? ******
#壤浩# 用L298n驱动两个直流电机,如图所示,再用黑白线传感器TK-20,或者st168检测黑线

#19681795406# 做一个基于51单片机的红外遥控小车 - ******
#壤浩# 你这有现成的红外遥控器,那板子上红外发射就不需要用 了,只要用接收头就可以,首先单片机写个测试遥控器各个按键的键码的程序,有了键码后面你才能做控制.这样就只是简单的单片机检测红外接收数据,比如设置的是收到01前进,02后推这样,接收红外数据用定时写个函数,网上有现成的接收程序,简单修改下就能用了.

#19681795406# 智能小车51单片机用C语言如何编程 - ******
#壤浩# 这问题有点大,不百是51单片机,也不是C语言的问题.而是一个系统的问题,是各种算法和技巧度的问题 建议您细分问题,一个一个解决,如怎么内驱动电机,怎么驱动各种传感器等等.而谈到编程,用KEIL编写程序(容汇编和C语言都支持),编译后的HEX文件烧录到单片机里就行了.

#19681795406# 电脑控制 51单片机小车 - ******
#壤浩# 朋友,你以为高手会来给你编写一个连要求都不完整的程序吗?回答是肯定的,除非有人在做这个题目.有吗?朋友,如果你对单片机懂的话,我可以给你一些思路,或许能帮助你.你把这个问题考虑简单化了,或许我没有完全明白你的要求1...

#19681795406# 怎么用单片机使小车前进 - ******
#壤浩# 通过你的程序可以看出,是小车上驱动两个直流电机正反转的程序,刚刚有人提到了H桥式电路,因为单片机不能够驱动电机,所以找一个电机驱动器,你可以上网搜索下L298N驱动器,他就是桥式电路的应用,可以驱动两个最大12v直流电机,或者一个步进电机

#19681795406# 自己用stc89c52单片机做的小车,写了个简单的程序............ - ******
#壤浩# 你最好用单片机内部的RC震荡 不用外部晶体这样故障容易被排除晶体的问题,首先示波器检查晶体是否起震! 检查电源VCC 和GND电源是否为5V.判断单片机是否工作了?如果单片机是工作了!那就有可能是P0口的输出被拉低了! 最好把电路图发上来看看!

#19681795406# 如何用51编程PID实现智能小车平稳运行 - ******
#壤浩# pwmout=P*(E(0)-E(1))+I*E(0)+D*(E(0)-2*E(1)+E(2))+pwmpre;pwmpre=pwmout;E(0)是当前系统偏差,E(1)是上一次偏差,E(2)上上次偏差.P、I、D分别是比例系数、积分系数和微分系数E=SpeedSet-Speed ;SpeedSet可根据路况设置,是你期望小车行驶的速度.Speed是你当前测量的小车的实际速度

#19681795406# 51单片机的红外遥控小车设计和制作的C语言程序 - ******
#壤浩# 控器芯片HT6221,这个解码我刚研究过,是NEC协议,比较常用的,不过你要做小车我建议用PT2272/PT2262,他们接收发射与一体的,红外遥控可以帮你,不过其他的我就不会了.小车控制应该要用PWM电机控制吧.

#19681795406# 设计单片机小车 - ******
#壤浩# 跟人走可以实现,至少我已经实现了,用到一个传感器,也就是人体热释红外传感器,专门检测人体发出的红外线,做成的模块可以调节灵敏度.另外一个传感器就是电子罗盘,装在小车上,小车就可以知道东西南北的方向和角度了.在小车上装一步进电机,步进电机带动检测模块做360°旋转,数步进电机的步数,就知道在那个角度检测到有人,通过步进电机、电子罗盘、热释红外就可以让小车往有人的方向跑,假如不想撞到人的话,就加超声波或者光电开关壁障即可.

  • 用51单片机4个按键控制小车前进,后退,左右转的简单程序为什么不能这样...
  • 答:一、执行完 D0 的条件语句后,执行 D1 的条件语句,由于 D0 用到的是 IN2/IN4,D1 用到的是 IN1/IN3,互相之间没有冲突,所以能正常运行。二、D2 用到的是 IN4,与 D0 的有冲突,所以前面赋值后,后面又作...

  • 51单片机智能两路循迹小车程序,检测到黑线直走,检测不到黑线就左转或...
  • 答:只有高低两种电平,所以,你只需要把它当一个普通开关看待。然后,既然是普通开关,写代码时只需要位声明以及设置gpio为双向或强拉模式,51单片机都不用设置gpio。最后,程序里,检测到高电平然后io口电平取反就行。

  • 51单片机的红外遥控小车设计和制作的C语言程序
  • 答:本款小车具有红外线遥控手动驾驶、自动驾驶、寻迹前进等功能。本系统采用模块化设计,软件用C语言编写。转贴于 51论 文网 www.51lun-wen.cn一、设计任务和要求以AT98C51单片机为核心,制作一款红外遥控小车,小车具有自动驾驶...

  • 急求基于AT89C51单片机的循迹避障小车电路原理图和主程序(避障模块是超 ...
  • 答:include <reg51.h> defineuchar unsigned char define uint unsigned int sbit P1_O=P1^0;sbit P1_1=P1^1;sbit P1_2=P1^2;sbit P1_3=P1^3;sbit P0_2=P0^1;sbit P0_3=P0^2;void delaym1(uint z){ uint...

  • 单片机智能小车的问题
  • 答:然后才是控制逻辑,这个逻辑还是比较简单的,用两个模块应该就可以简单实现巡线功能,初始位置黑线在两个传感器中间,两个都没检测到黑线就直走,哪边检测到黑线就朝哪边拐弯

  • 如何用51单片机制作遥控小车
  • 答:需要加2个无线模块,你可以使短距离的433M,2,4G这样的模块,也可以使GPRS/CDMA这样的模块。一发一收,单片机就控制发送数据,小车还要加个电机驱动模块

  • 求最简单的51单片机智能循迹小车原理图以及程序以及制作过程,不胜感激...
  • 答:char judge(){ switch(P2 & 0x??)case 0x??:{ break;} ... ...return 某变量(用于选择拐弯方向程序)} 转弯比较简单,就是一个轮转,另一个不转达到转弯目的,你也可以用速度高低来控制,自己DIY就行。

  • 电脑控制 51单片机小车
  • 答:2、很显然你控制小车行走,是控制电机,你用的是直流电机还是步进电机!如果是直流电机相对好做,如果步进电机,你是用现成的驱动器还是自己去驱动 3、...给接你一些建议(如果你会单片机编程的话)单片机串口接收 初始化串...

  • 自动寻迹智能小车怎么做啊 具体要求如下51单片机
  • 答:接循迹用的光电传感器,用单片机判断,驱动电机执行。传感器越多越好。以比较奇葩的单路传感器为例,0驱动左轮,1驱动右轮,就可以沿黑线一侧摇摆前进。这么简单的判断都可以不用单片机,呵呵。

  • 想用51单片机做一个寻迹小车,需要些什么东西,能不能给我一个详细的清 ...
  • 答:首先你要有 一块单片机 小车 普通电机马达 电机驱动L298 用PWM控制 循迹板,可以用对管做,然后又一块循迹板采样信息的处理板,一般用324的比较电路就行了。还有什么问题吗?

    为传递更多家电数码信息,若有事情请联系
    数码大全网