本项目用于模拟迷宫小车。
计算机类的学生面临嵌入式开发这个课程应该都会遇到一个课程设计——迷宫小车。
迷宫小车 一般是基于C51或者STM32这些系列的单片机的小车子,让你实现遍历迷宫,找出最短路径,并从起点沿最短路径到达终点。
但是实操的时候就会发现很多麻烦的点,比如有时候你遇到一些奇怪的情况,比如莫名奇妙的你的小车转弯了之类的奇怪的问题,这个时候我们不像之前写c、java、python等项目时,可以debug,最多也就是利用下蜂鸣器、数码管、灯来勉强体现出一点调试能力,可是也是很难用的,我们不清楚是由于硬件问题比如红外传感器没检测到?是检测范围调高了或者调低了?还是由于软件问题比如你的代码中哪里没写对这样子。就特别不好排查。
因此我简要设计了这样一个迷宫小车的模拟器。
我会提供下面这些接口供你使用。
void GoForwardV();// 向前走
void TurnLeftV();// 向左转
void TurnRightV();// 向右转
void TurnBackV();// 向后转
void ChangeSymbol(char, char, char, char, char, char);// 改变地图的显示符号
void ChangeStartPos(int, int);// 改变小车的起始位置
void ChangeStartDirection(int);// 改变小车的起始方向
uchar getIR(uchar);// 模拟获取小车的红外传感
void printMap();// 打印地图
下面提供两种使用方式
- 直接使用本项目中的MazeSimulation.c文件,你可以基于这个文件来直接写你的代码就行。
- 下载release中提供的
libVirtuallyMouse.h
头文件和libVirtuallyMouse.dll
动态链接库,将.dll
文件放置在你的项目的输出位置即你编译后生成的.exe
文件所在的目录以便于你的.exe
文件能够调用到我的动态链接库,然后将下载的.h
文件放置在你的源代码所处位置即你的.c
文件所在目录,最后在你的代码中添加上#include "libVirtuallMouse.h"
即可。 注意:能够使用的只能是我上面提供的那些接口,如果你直接基于本项目中的.c
文件编写,严格注意不得擅自更改文件中原有的代码,也不得直接调用别的参数,只能使用上面提供的接口。除非你有自己的理解,否则报错概不负责。
补充:
- ChangeSymbol()所传参数按照顺序分别是墙、上、右、下、左、空。其默认值分别是
#
、U
、R
、D
、L
、 - ChangeStartPos()所传参数分别是
x,y
,一般是四个角如0,0
左上角、0,7
右上角、7,0
左下角、7,7
右下角。 - ChangeStartDirection()所传的是方向代码,
0 - 上 | 1 - 右 | 2 - 下 | 3 - 左
这里的上下左右均是以打印出来的迷宫直接看出来的方向。 - getIR()所传的也是方向代码,不同的是此处的上下左右是小车的方向(此处有个错误,红外传感应该是没有小车后方的传感器的,但是我懒得改了,你反正也用不上,因为你现实中的小车也没有后方的传感器,也就是说实际上这个函数你只能用
0 | 1 | 3
这三个方向),会返回一个unsigned char
类型的变量当然,只有0和1,0代表该方向无障碍物,1代表该方向有障碍物。 - 那几个转向、直走的函数,就相当于是模拟了小车现实中的电机执行的操作。