机器人创新实践报告 - 图文 下载本文

--

void delay_nus(unsigned int i) //延时:i>=12 ,i的最小延时单12 us {

i=i/10;

while(--i); }

void delay_nms(unsigned int n) //延时n ms {

n=n+1;

while(--n)

delay_nus(900); //延时 1ms,同时进行补偿 }

void ControlCar(unsigned char ConType) //定义电机控制子程序 {

tingzhi();

switch(ConType) //判断用户设定电机形式 {

case 1: //前进 //判断用户是否选择形式1 {

qianjin(); break; }

case 2: //后退 //判断用户是否选择形式2 {

---

--

houtui(); //M2电机反转

break; }

case 3: //左转 //判断用户是否选择形式3 {

zuozhuan(); //M2电机正转 break; }

case 4: //右转是否选择形式4 {

youzhuan(); //M1电机正转

//M2反转

break; }

case 8: //停止是否选择形式8 {

tingzhi();

break; //选择 } } }

void main() //口 {

bit RunFlag=0; //---

判断用户电机判断用户退出当前主程序入定义小车

// //--

运行标志位

//RunShow=0; //初始化显示状态

ControlCar(8); //初始化小车运行状态

while(1) //程序主循环 {

Start:

LeftLed=LeftIR; //指示灯指示出前方左侧红外探头状态

RightLed=RightIR; //指示灯指示出前方右侧红外探头状态 FontLled= FontIR; SB1=LeftIR;

if(LeftIR == 0 && RightIR == 0) //到黑线,就前进 {

ControlCar(1); //有信号时,开始向右转一定的角度 delay_nms (10); goto NextRun; }

if(LeftIR == 0 && RightIR == 1) {

ControlCar(3); //有信号时,开始向左转一定的角度 delay_nms (10); goto NextRun; }

---

前方左侧前方右侧三个红外检测左侧没右侧没--

if(LeftIR == 1 && RightIR == 0) {

ControlCar(4); //右侧没有信号时,开始向左转一定的角度 delay_nms (10); goto NextRun; }

goto Start; NextRun:

ControlCar(8); } }

4 结果与分析

小车的运行如视频附件所示,能实现常规的巡线,遥控,寻光功能

---