电脑鼠走迷宫算法C语言
#include "stdio.h"
#include "action.h"
#include "bmp_pixel.h"
#include "NOKIA_5110.h"
#include "configuration.h"
void Stop_On_Going()
{
Wheel_Control(LEFT,WHEEL_FRONT,255);
Wheel_Control(RIGHT,WHEEL_FRONT,255);
delay_ms(20);
}
void Turn_Left()
{
Stop_On_Going();
Wheel_Control(LEFT,WHEEL_BACK,80);
Wheel_Control(RIGHT,WHEEL_FRONT,80);
delay_ms(20);
}
void Go_straight() //直走的具体实现
{
Wheel_Control(LEFT,WHEEL_FRONT,80);
Wheel_Control(RIGHT,WHEEL_FRONT,80);
delay_ms(20);
}
void Turn_Right() //右转的具体实现
{
Stop_On_Going();
Wheel_Control(LEFT,WHEEL_FRONT,80);
Wheel_Control(RIGHT,WHEEL_BACK,80);
delay_ms(20);
}
void Turn_back() //调头的具体实现
{
Wheel_Control(LEFT,WHEEL_FRONT,80);
Wheel_Control(RIGHT,WHEEL_BACK,80);
delay_ms(20);
}
void Left_Adjust() //左偏 后向 右微调 的具体实现
{
Wheel_Control(LEFT,WHEEL_FRONT,80);
Wheel_Control(RIGHT,WHEEL_FRONT,70);
delay_ms(10);
}
void Right_Adjust() //右偏 后向 左微调 的具体实现
{
Wheel_Control(LEFT,WHEEL_FRONT,70);
Wheel_Control(RIGHT,WHEEL_FRONT,80);
delay_ms(10);
}
void main()
{
u16 mode ;
u8 sensor ;
u8 i=180,count=0,dir=0,pn =0,dis[20];
u16 l_count,r_count;
//功能模块初始化
// GPIO_config(); //STC15W4K32S4 PWM复用口 由高阻初始化为双向口
EXTI_config(); //外部中断 测速
Timer_config(); //定时器
PCA_config(); //PWM
UART_config(); //串口
ADC_config(); //AD 电压检测
//液晶屏初始化
LCD_init();
LCD_clear();
LCD_draw_bmp_pixel(15,0,BMP,48,56);
delay_ms(250);
delay_ms(250);
delay_ms(250);
delay_ms(250);
LCD_clear();
LCD_write_english_string(2,0," Welcome To ");
LCD_write_english_string(2,1," S W J T U ");
LCD_write_english_string(2,2," DNS VER 2.1 ");
LCD_write_english_string(2,3,"Nokia5110 LCD ");
LCD_write_chinese_string(1,4,12,6,0,2);
//wait for the start key down
while(Start_Key); /////
// 延时启动(start按键按下,等待n秒后启动)
delay_ms(250);
delay_ms(250);
delay_ms(250);
delay_ms(250);
delay_ms(250);
delay_ms(250);
delay_ms(250);
delay_ms(250);
delay_ms(250);
delay_ms(250);
delay_ms(250);
delay_ms(250);
LCD_clear();
//开总中断
SET_EA();
while(1)
{
Go_straight(); //测试直走
}
while(1)
{
while(1)
{
Go_straight();
}
while(1)
{
sensor = P1&0xf8;
switch(sensor)
{
case 0x18 : mode = 1; break; ////00011000 左转
case 0xd8 : mode = 2; break; ////11011000 直走
case 0xc0 : mode = 3; break; ////11000000 左转
case 0x00 : mode = 4; break; ////00000000 掉头
case 0x98 : mode = 10; break; ////10011000 稍微
偏左,后续调整
case 0xc8 : mode = 11; break; ////11001000 稍微偏右,后续调整
default : mode = 2; break; ////其他情况,执行直走
}
switch(mode)
{
case 1 : Turn_Left(); break;
case 2 : Go_straight(); break;
case 3 : Turn_Right(); break;
case 4 : Turn_back(); break;
case 10 : Left_Adjust(); break;
case 11 : Right_Adjust(); break;
default : Turn_Right(); break;
}
}
/* 以下是电脑鼠功能模块测试程序,方便测试各个模块功能是否正常,测试完毕后可注释掉或者删除 */
if(timer0_flag)
{
timer0_flag = 0;
count ++;
}
if(count == 10)
{
count = 0;
l_count = left_count;
r_count = right_count;
left_count = 0;
right_count = 0;
// 电机控制测试 加速->减速->反转->加速->减速...如此循环
if(i
{
dir = !dir;
pn = 1;
}
if(i>254)
pn = 0;
if(pn) i++;
else i--;
Wheel_Control(LEFT,dir,255-i);
Wheel_Control(RIGHT,dir,255-i);
// PWM 显示
sprintf(dis,"PWM :%d %3.0f%%",(int)i,(float)i/255*100);
LCD_write_english_string(0,0,dis);
// 电机供电电池电压 显示
sprintf(dis,"Vmotor:%.1fV",(float)(4.98/Get_ADC10bitResult(0)*Get_ADC10bitResult(1)));
LCD_write_english_string(0,2,dis);
// 单片机供电电池电压 显示
sprintf(dis,"Vmcu :%.1fV",(float)(4.98/Get_ADC10bitResult(0)*Get_ADC10bitResult(2)));
LCD_write_english_string(0,3,dis);
// 中断测速
sprintf(dis,"L:%d",(int)l_count);
LCD_write_english_string(0,4,dis);
sprintf(dis,"R:%d",(int)r_count);
LCD_write_english_string(40,4,dis);
}
}
/* 以上是电脑鼠功能模块测试程序,方便测试各个模块功能是否正常,测试完毕后可注释掉或者删除 */
}
相关文章
- 电子工艺实习实验报告
- 走迷宫游戏
- 基于栈实现的迷宫问题
- 迷宫问题2数据结构实验报告
- 数据结构课程设计题目详细要求
- VisualC++程序设计与应用报告---小兔子走迷宫
- 阅读经典__计算机科学与技术系推荐读物
- 数据结构课程设计-迷宫问题
- 心理迷宫--情境心理测验案例
电子工艺实习实验报告 (迷宫车实验) 院 系:xxxxxxxxxxxxx 姓名:xxxx 班 级:xxxxxxxxxx 学 号: 一. 任务要求 此次实验共有三个部分焊接练习,基本交替闪烁电路焊接和小车的制作与调试. 学生要按照老师要求完成 ...
课程名称: <数据结构>课程设计 课程设计题目: 走迷宫游戏 姓 名: 周楠 院系: 计算机学院 专 业: 软件工程 年 级: 2011 学 号: E01114323 指导教师: 王爱平 2013 年 9月29 日 目 录 1 ...
基于栈实现的迷宫问题 1.问题描述: 在一个二维阵列构成的迷宫里, 数组元素仅有0和1构成,其中 0表示可通行的路径, 1代表障碍.另外,定义左上角是迷宫的入口, 右下角是迷宫的出口, 在迷宫里面只允许上下左右四个方向行走, 2.算法基本思 ...
南昌航空大学实验报告 课程名称: 数据结构 实验名称:实验三.四:栈和队列应用-迷宫问题 班 级: 学生姓名: 学号: 指导教师评定: 签 名: 题目:假设迷宫由m行n列构成,有一个入口和一个出口,入口坐标为(1,1),出口坐标为 (m,n ...
课程设计方案及要求 一.课设说明 本次课设有两个方案,方案A 和方案B ,每个方案有两个题目(两个题目均要完成).大家可以任选一个方案进行课设. 二.时间安排 17周 周二 上午 软2 周二 下午 软3 周四 上午 软2 周五 上午 软2 ...
JIANGSU TEACHERS UNIVERSITY OF TECHNOLOGY 本科毕业设计(论文) Visual C++程序设计与应用报告 --小兔子走迷宫游戏 学院名称: 计算机工程学院 专 业: 计算机技术与应用 班 级: 09计 ...
推荐读物 推荐给计算机科学与技术专业本科生阅读的部分读物 1. <如何才能停止焦虑开始新生活> 2. The Art of Computer Programming,Donald.E.Knuth Web site: http:/ ...
课程名称:数据结构题 目:迷宫设计系 别:软件学院专 业:移动设备应用开发班 级:姓 名:黄国峰学 期:指导教师:李博时 间: 数据结构课程设计 15级移动1班 2016-2017第一学期 2016年12月 目录 第一部分 需求分析 第二部 ...
北京合君惠友科技有限公司 情境模拟测验 多维体验式智能心理迷宫 训练平台设计方案 心理迷宫训练平台设计方案 目 录 目 录 .......................................................... ...