欢迎来到天天文库
浏览记录
ID:38353267
大小:41.50 KB
页数:3页
时间:2019-06-11
《碰撞程序_智能小车》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、/******************************************2012年4月19日2012年4月20日左右碰撞匹配成功此函数实现循迹同时在碰撞时可以返回编辑环境:ICCAVR功能:实现循迹和碰撞发布时间:2012/8/1*******************************************/#include#include#defineuintunsignedint#defineucharunsignedchar#defineIN
2、1_0PORTA&=~(1<3、=(1<4、=(1<5、=(1<6、=(1<7、A=(x)#definePWM_Z(x)OCR1B=(x)//PWM_Z(x)代表左边的赋值Y代表右/*******************************系统延时函数********************************/voiddelay(uintms){inti,j;for(i=0;i8、R1B定时计数器的设置PB5接EN1右边的电机*********************************/voidcar_qudong_init(void){DDRA9、=0X0F;PORTA10、=0X0F;DDRB11、=(1<12、(1<13、(1<14、***控制函数左右转动,给PWM输入负值时,该条履带往后转***************************************************/voidcar(signedshortintZ,signedshortintY){if(Y>=0){IN1_1;IN2_0;PWM_Y(Y);//右履带向前}else{IN1_0;IN2_1;PWM_Y(-Y);//右履带向后}if(Z>=0){IN3_1;IN4_0;PWM_Z(Z);//左履带向前}else{IN3_0;IN4_1;PWM_Z(-Z15、);//左履带向后}}voidcar_xunji(void){//switch后表达式,接受到相同就执行switch(PIND&0Xff){case0x00:car(0,0);delay(1140);break;//00000000case0x1f:car(248,248);break;//00011111case0x1b:car(248,248);break;//00011011case0x1e:car(-250,250);delay(258);break;//00011110case0x1d:car(-1716、8,178);delay(158);break;//00011101case0x19:car(-178,178);delay(158);break;//00011001case0x13:car(178,-178);delay(158);break;//00010011case0x17:car(178,-178);delay(158);break;//00010111case0x0f:car(248,-248);delay(258);break;//00011111//pengzhuang检测碰撞情况并且后退ca17、se0x3b:car(-248,-248);delay(1000);break;//00111011case0x3e:car(-248,-248);delay(258);break;//00111110case0x3d:car(-158,-158);delay(158);break;//00111101case0x39:car(-168,-168);delay(158);break;/
3、=(1<4、=(1<5、=(1<6、=(1<7、A=(x)#definePWM_Z(x)OCR1B=(x)//PWM_Z(x)代表左边的赋值Y代表右/*******************************系统延时函数********************************/voiddelay(uintms){inti,j;for(i=0;i8、R1B定时计数器的设置PB5接EN1右边的电机*********************************/voidcar_qudong_init(void){DDRA9、=0X0F;PORTA10、=0X0F;DDRB11、=(1<12、(1<13、(1<14、***控制函数左右转动,给PWM输入负值时,该条履带往后转***************************************************/voidcar(signedshortintZ,signedshortintY){if(Y>=0){IN1_1;IN2_0;PWM_Y(Y);//右履带向前}else{IN1_0;IN2_1;PWM_Y(-Y);//右履带向后}if(Z>=0){IN3_1;IN4_0;PWM_Z(Z);//左履带向前}else{IN3_0;IN4_1;PWM_Z(-Z15、);//左履带向后}}voidcar_xunji(void){//switch后表达式,接受到相同就执行switch(PIND&0Xff){case0x00:car(0,0);delay(1140);break;//00000000case0x1f:car(248,248);break;//00011111case0x1b:car(248,248);break;//00011011case0x1e:car(-250,250);delay(258);break;//00011110case0x1d:car(-1716、8,178);delay(158);break;//00011101case0x19:car(-178,178);delay(158);break;//00011001case0x13:car(178,-178);delay(158);break;//00010011case0x17:car(178,-178);delay(158);break;//00010111case0x0f:car(248,-248);delay(258);break;//00011111//pengzhuang检测碰撞情况并且后退ca17、se0x3b:car(-248,-248);delay(1000);break;//00111011case0x3e:car(-248,-248);delay(258);break;//00111110case0x3d:car(-158,-158);delay(158);break;//00111101case0x39:car(-168,-168);delay(158);break;/
4、=(1<5、=(1<6、=(1<7、A=(x)#definePWM_Z(x)OCR1B=(x)//PWM_Z(x)代表左边的赋值Y代表右/*******************************系统延时函数********************************/voiddelay(uintms){inti,j;for(i=0;i8、R1B定时计数器的设置PB5接EN1右边的电机*********************************/voidcar_qudong_init(void){DDRA9、=0X0F;PORTA10、=0X0F;DDRB11、=(1<12、(1<13、(1<14、***控制函数左右转动,给PWM输入负值时,该条履带往后转***************************************************/voidcar(signedshortintZ,signedshortintY){if(Y>=0){IN1_1;IN2_0;PWM_Y(Y);//右履带向前}else{IN1_0;IN2_1;PWM_Y(-Y);//右履带向后}if(Z>=0){IN3_1;IN4_0;PWM_Z(Z);//左履带向前}else{IN3_0;IN4_1;PWM_Z(-Z15、);//左履带向后}}voidcar_xunji(void){//switch后表达式,接受到相同就执行switch(PIND&0Xff){case0x00:car(0,0);delay(1140);break;//00000000case0x1f:car(248,248);break;//00011111case0x1b:car(248,248);break;//00011011case0x1e:car(-250,250);delay(258);break;//00011110case0x1d:car(-1716、8,178);delay(158);break;//00011101case0x19:car(-178,178);delay(158);break;//00011001case0x13:car(178,-178);delay(158);break;//00010011case0x17:car(178,-178);delay(158);break;//00010111case0x0f:car(248,-248);delay(258);break;//00011111//pengzhuang检测碰撞情况并且后退ca17、se0x3b:car(-248,-248);delay(1000);break;//00111011case0x3e:car(-248,-248);delay(258);break;//00111110case0x3d:car(-158,-158);delay(158);break;//00111101case0x39:car(-168,-168);delay(158);break;/
5、=(1<6、=(1<7、A=(x)#definePWM_Z(x)OCR1B=(x)//PWM_Z(x)代表左边的赋值Y代表右/*******************************系统延时函数********************************/voiddelay(uintms){inti,j;for(i=0;i8、R1B定时计数器的设置PB5接EN1右边的电机*********************************/voidcar_qudong_init(void){DDRA9、=0X0F;PORTA10、=0X0F;DDRB11、=(1<12、(1<13、(1<14、***控制函数左右转动,给PWM输入负值时,该条履带往后转***************************************************/voidcar(signedshortintZ,signedshortintY){if(Y>=0){IN1_1;IN2_0;PWM_Y(Y);//右履带向前}else{IN1_0;IN2_1;PWM_Y(-Y);//右履带向后}if(Z>=0){IN3_1;IN4_0;PWM_Z(Z);//左履带向前}else{IN3_0;IN4_1;PWM_Z(-Z15、);//左履带向后}}voidcar_xunji(void){//switch后表达式,接受到相同就执行switch(PIND&0Xff){case0x00:car(0,0);delay(1140);break;//00000000case0x1f:car(248,248);break;//00011111case0x1b:car(248,248);break;//00011011case0x1e:car(-250,250);delay(258);break;//00011110case0x1d:car(-1716、8,178);delay(158);break;//00011101case0x19:car(-178,178);delay(158);break;//00011001case0x13:car(178,-178);delay(158);break;//00010011case0x17:car(178,-178);delay(158);break;//00010111case0x0f:car(248,-248);delay(258);break;//00011111//pengzhuang检测碰撞情况并且后退ca17、se0x3b:car(-248,-248);delay(1000);break;//00111011case0x3e:car(-248,-248);delay(258);break;//00111110case0x3d:car(-158,-158);delay(158);break;//00111101case0x39:car(-168,-168);delay(158);break;/
6、=(1<7、A=(x)#definePWM_Z(x)OCR1B=(x)//PWM_Z(x)代表左边的赋值Y代表右/*******************************系统延时函数********************************/voiddelay(uintms){inti,j;for(i=0;i8、R1B定时计数器的设置PB5接EN1右边的电机*********************************/voidcar_qudong_init(void){DDRA9、=0X0F;PORTA10、=0X0F;DDRB11、=(1<12、(1<13、(1<14、***控制函数左右转动,给PWM输入负值时,该条履带往后转***************************************************/voidcar(signedshortintZ,signedshortintY){if(Y>=0){IN1_1;IN2_0;PWM_Y(Y);//右履带向前}else{IN1_0;IN2_1;PWM_Y(-Y);//右履带向后}if(Z>=0){IN3_1;IN4_0;PWM_Z(Z);//左履带向前}else{IN3_0;IN4_1;PWM_Z(-Z15、);//左履带向后}}voidcar_xunji(void){//switch后表达式,接受到相同就执行switch(PIND&0Xff){case0x00:car(0,0);delay(1140);break;//00000000case0x1f:car(248,248);break;//00011111case0x1b:car(248,248);break;//00011011case0x1e:car(-250,250);delay(258);break;//00011110case0x1d:car(-1716、8,178);delay(158);break;//00011101case0x19:car(-178,178);delay(158);break;//00011001case0x13:car(178,-178);delay(158);break;//00010011case0x17:car(178,-178);delay(158);break;//00010111case0x0f:car(248,-248);delay(258);break;//00011111//pengzhuang检测碰撞情况并且后退ca17、se0x3b:car(-248,-248);delay(1000);break;//00111011case0x3e:car(-248,-248);delay(258);break;//00111110case0x3d:car(-158,-158);delay(158);break;//00111101case0x39:car(-168,-168);delay(158);break;/
7、A=(x)#definePWM_Z(x)OCR1B=(x)//PWM_Z(x)代表左边的赋值Y代表右/*******************************系统延时函数********************************/voiddelay(uintms){inti,j;for(i=0;i8、R1B定时计数器的设置PB5接EN1右边的电机*********************************/voidcar_qudong_init(void){DDRA9、=0X0F;PORTA10、=0X0F;DDRB11、=(1<12、(1<13、(1<14、***控制函数左右转动,给PWM输入负值时,该条履带往后转***************************************************/voidcar(signedshortintZ,signedshortintY){if(Y>=0){IN1_1;IN2_0;PWM_Y(Y);//右履带向前}else{IN1_0;IN2_1;PWM_Y(-Y);//右履带向后}if(Z>=0){IN3_1;IN4_0;PWM_Z(Z);//左履带向前}else{IN3_0;IN4_1;PWM_Z(-Z15、);//左履带向后}}voidcar_xunji(void){//switch后表达式,接受到相同就执行switch(PIND&0Xff){case0x00:car(0,0);delay(1140);break;//00000000case0x1f:car(248,248);break;//00011111case0x1b:car(248,248);break;//00011011case0x1e:car(-250,250);delay(258);break;//00011110case0x1d:car(-1716、8,178);delay(158);break;//00011101case0x19:car(-178,178);delay(158);break;//00011001case0x13:car(178,-178);delay(158);break;//00010011case0x17:car(178,-178);delay(158);break;//00010111case0x0f:car(248,-248);delay(258);break;//00011111//pengzhuang检测碰撞情况并且后退ca17、se0x3b:car(-248,-248);delay(1000);break;//00111011case0x3e:car(-248,-248);delay(258);break;//00111110case0x3d:car(-158,-158);delay(158);break;//00111101case0x39:car(-168,-168);delay(158);break;/
8、R1B定时计数器的设置PB5接EN1右边的电机*********************************/voidcar_qudong_init(void){DDRA
9、=0X0F;PORTA
10、=0X0F;DDRB
11、=(1<12、(1<13、(1<14、***控制函数左右转动,给PWM输入负值时,该条履带往后转***************************************************/voidcar(signedshortintZ,signedshortintY){if(Y>=0){IN1_1;IN2_0;PWM_Y(Y);//右履带向前}else{IN1_0;IN2_1;PWM_Y(-Y);//右履带向后}if(Z>=0){IN3_1;IN4_0;PWM_Z(Z);//左履带向前}else{IN3_0;IN4_1;PWM_Z(-Z15、);//左履带向后}}voidcar_xunji(void){//switch后表达式,接受到相同就执行switch(PIND&0Xff){case0x00:car(0,0);delay(1140);break;//00000000case0x1f:car(248,248);break;//00011111case0x1b:car(248,248);break;//00011011case0x1e:car(-250,250);delay(258);break;//00011110case0x1d:car(-1716、8,178);delay(158);break;//00011101case0x19:car(-178,178);delay(158);break;//00011001case0x13:car(178,-178);delay(158);break;//00010011case0x17:car(178,-178);delay(158);break;//00010111case0x0f:car(248,-248);delay(258);break;//00011111//pengzhuang检测碰撞情况并且后退ca17、se0x3b:car(-248,-248);delay(1000);break;//00111011case0x3e:car(-248,-248);delay(258);break;//00111110case0x3d:car(-158,-158);delay(158);break;//00111101case0x39:car(-168,-168);delay(158);break;/
12、(1<13、(1<14、***控制函数左右转动,给PWM输入负值时,该条履带往后转***************************************************/voidcar(signedshortintZ,signedshortintY){if(Y>=0){IN1_1;IN2_0;PWM_Y(Y);//右履带向前}else{IN1_0;IN2_1;PWM_Y(-Y);//右履带向后}if(Z>=0){IN3_1;IN4_0;PWM_Z(Z);//左履带向前}else{IN3_0;IN4_1;PWM_Z(-Z15、);//左履带向后}}voidcar_xunji(void){//switch后表达式,接受到相同就执行switch(PIND&0Xff){case0x00:car(0,0);delay(1140);break;//00000000case0x1f:car(248,248);break;//00011111case0x1b:car(248,248);break;//00011011case0x1e:car(-250,250);delay(258);break;//00011110case0x1d:car(-1716、8,178);delay(158);break;//00011101case0x19:car(-178,178);delay(158);break;//00011001case0x13:car(178,-178);delay(158);break;//00010011case0x17:car(178,-178);delay(158);break;//00010111case0x0f:car(248,-248);delay(258);break;//00011111//pengzhuang检测碰撞情况并且后退ca17、se0x3b:car(-248,-248);delay(1000);break;//00111011case0x3e:car(-248,-248);delay(258);break;//00111110case0x3d:car(-158,-158);delay(158);break;//00111101case0x39:car(-168,-168);delay(158);break;/
13、(1<14、***控制函数左右转动,给PWM输入负值时,该条履带往后转***************************************************/voidcar(signedshortintZ,signedshortintY){if(Y>=0){IN1_1;IN2_0;PWM_Y(Y);//右履带向前}else{IN1_0;IN2_1;PWM_Y(-Y);//右履带向后}if(Z>=0){IN3_1;IN4_0;PWM_Z(Z);//左履带向前}else{IN3_0;IN4_1;PWM_Z(-Z15、);//左履带向后}}voidcar_xunji(void){//switch后表达式,接受到相同就执行switch(PIND&0Xff){case0x00:car(0,0);delay(1140);break;//00000000case0x1f:car(248,248);break;//00011111case0x1b:car(248,248);break;//00011011case0x1e:car(-250,250);delay(258);break;//00011110case0x1d:car(-1716、8,178);delay(158);break;//00011101case0x19:car(-178,178);delay(158);break;//00011001case0x13:car(178,-178);delay(158);break;//00010011case0x17:car(178,-178);delay(158);break;//00010111case0x0f:car(248,-248);delay(258);break;//00011111//pengzhuang检测碰撞情况并且后退ca17、se0x3b:car(-248,-248);delay(1000);break;//00111011case0x3e:car(-248,-248);delay(258);break;//00111110case0x3d:car(-158,-158);delay(158);break;//00111101case0x39:car(-168,-168);delay(158);break;/
14、***控制函数左右转动,给PWM输入负值时,该条履带往后转***************************************************/voidcar(signedshortintZ,signedshortintY){if(Y>=0){IN1_1;IN2_0;PWM_Y(Y);//右履带向前}else{IN1_0;IN2_1;PWM_Y(-Y);//右履带向后}if(Z>=0){IN3_1;IN4_0;PWM_Z(Z);//左履带向前}else{IN3_0;IN4_1;PWM_Z(-Z
15、);//左履带向后}}voidcar_xunji(void){//switch后表达式,接受到相同就执行switch(PIND&0Xff){case0x00:car(0,0);delay(1140);break;//00000000case0x1f:car(248,248);break;//00011111case0x1b:car(248,248);break;//00011011case0x1e:car(-250,250);delay(258);break;//00011110case0x1d:car(-17
16、8,178);delay(158);break;//00011101case0x19:car(-178,178);delay(158);break;//00011001case0x13:car(178,-178);delay(158);break;//00010011case0x17:car(178,-178);delay(158);break;//00010111case0x0f:car(248,-248);delay(258);break;//00011111//pengzhuang检测碰撞情况并且后退ca
17、se0x3b:car(-248,-248);delay(1000);break;//00111011case0x3e:car(-248,-248);delay(258);break;//00111110case0x3d:car(-158,-158);delay(158);break;//00111101case0x39:car(-168,-168);delay(158);break;/
此文档下载收益归作者所有