云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 基于51的避障循迹重力感应遥控的智能小车设计(C语言)

基于51的避障循迹重力感应遥控的智能小车设计(C语言)

  • 62 次阅读
  • 3 次下载
  • 2025/12/3 8:28:00

case 0: //按键模式 IN1_1=0;IN1_2=0;IN2_1=0;IN2_2=0; //小车停止 while(CONTROL_MODE_FLAG==0) { RX_STATE(); KEY_VALUE=STATE&0x0f;//读取键值 switch(KEY_VALUE) { case 0x0e:IN1_1=1;IN1_2=0;IN2_1=1;IN2_2=0; speed1=20;speed2=20; break; case 0x07: IN1_1=0;IN1_2=1;IN2_1=0;IN2_2=1;speed1=20;speed2=20; break; case 0x0d: IN1_1=1;IN1_2=0;IN2_1=0;IN2_2=1;speed1=17;speed2=17; break; case

0x0b:IN1_1=0;IN1_2=1;IN2_1=1;IN2_2=0;speed1=17;speed2=17; break; default :IN1_1=0;IN1_2=0;IN2_1=0;IN2_2=0;speed1=0;speed2=0; //小车停止 break; } } IN1_1=0;IN1_2=0;IN2_1=0;IN2_2=0; //小车停止 break; case 1: //重力模式 jd=3; mode=0; delay(500); while(CONTROL_MODE_FLAG==1) { TR1=0; mode=1; TH1=0; TL1=0; StartModule(); while(!RX); //当RX为零时等待 TR1=1; //开启计数 while(RX); //当RX为1计数并等待

TR1=0; //关闭计数 Conut(); if(nRF24L01_RxPacket(RxBuf))//如果收到遥控器的数据则进入 { led2=~led2; R_S_Byte(RxBuf[0]); X_ANGLE=RxBuf[0];//读取纵向的倾斜度 Y_ANGLE=RxBuf[1];//读取横向的倾斜度 SIGN=RxBuf[2];//判断倾斜的方向 X_SIAN=0:前方 X_SIAN=1:下方 STATE=RxBuf[3];//判断倾斜的方向 Y_SIAN=0:左方 X_SIAN=1:右方 LED_FLAG=(SIGN&0x04)>>2;//判断小车灯光控制位 CONTROL_MODE_FLAG=(STATE&0xf0)>>4;//读取当前状态标志 KEY_VALUE=STATE&0x0f;//读取键值 if(LED_FLAG) LED1=1; else if(LED_FLAG==0) LED1=0; X_SIGN= SIGN&0x01; Y_SIGN= (SIGN&0x02)>>1; if(X_ANGLE>110) X_ANGLE=105;//全速时:if(X_ANGLE>160) X_ANGLE=155; if(Y_ANGLE>110) Y_ANGLE=110;//全速时:if(X_ANGLE>160) X_ANGLE=160; if(Y_ANGLE-X_ANGLE<30)//如果主要是往纵向倾斜则进入 { FLAG_ANGLE=1; if(Y_SIGN)//同时也往左方倾斜 {speed1=40-X_ANGLE/4;speed2=40-(X_ANGLE/4-Y_ANGLE/4);}//左轮 else if(Y_SIGN==0) {speed1=40-(X_ANGLE/4-Y_ANGLE/4);speed2=40-X_ANGLE/4;} } else { speed1=40-Y_ANGLE/4;speed2=40-Y_ANGLE/4; } if(X_SIGN) X_ANGLE=-X_ANGLE; if(Y_SIGN) Y_ANGLE=-Y_ANGLE;

if(FLAG_ANGLE) { FLAG_ANGLE=0; if(X_ANGLE>20){IN1_1=1;IN1_2=0;IN2_1=1;IN2_2=0; } //小车前进 else

if(X_ANGLE<-20&&middleS>200){IN1_1=0;IN1_2=1;IN2_1=0;IN2_2=1;} //小车后退 else { IN1_1=0;IN1_2=0;IN2_1=0;IN2_2=0; //小车停止 } } else { if(Y_ANGLE>20){IN1_1=1;IN1_2=0;IN2_1=0;IN2_2=1;} //小车左转 else

if(Y_ANGLE<-20){IN1_1=0;IN1_2=1;IN2_1=1;IN2_2=0;} //小车右转 else { IN1_1=0;IN1_2=0;IN2_1=0;IN2_2=0;; //小车停止 } } } } break; case 2: // speed1=15; // speed2=15; while(CONTROL_MODE_FLAG==2) { xunji(); } IN1_1=0;IN1_2=0;IN2_1=0;IN2_2=0; //小车停止 break; case 3: // TR0=0; while(CONTROL_MODE_FLAG==3) { csbmode();

} // TR0=1; IN1_1=0;IN1_2=0;IN2_1=0;IN2_2=0; //小车停止 break; } } }

//定时器中断

void zhongduan(void) interrupt 1 { TH0 = (65536-500)/256; TL0 = (65536-500)%6; aa++; if(aa==100) { led0=~led0; aa=0;t0++; }

/******************************************/ //大于则输出低电平

/******************************************/ if(count

void zhongduan_0(void) interrupt 3//定时器工作在舵机控制模式

  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
本文作者:...

共分享92篇相关文档

文档简介:

case 0: //按键模式 IN1_1=0;IN1_2=0;IN2_1=0;IN2_2=0; //小车停止 while(CONTROL_MODE_FLAG==0) { RX_STATE(); KEY_VALUE=STATE&0x0f;//读取键值 switch(KEY_VALUE) { case 0x0e:IN1_1=1;IN1_2=0;IN2_1=1;IN2_2=0; speed1=20;speed2=20; break; case 0x07: IN1_1=0;IN1_2=1;IN2_1=0;IN2_2=1;speed1=20;speed2=20; break; case 0x0d: IN1_1=1;IN1_2=0;IN

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com