自己做电路才是牛人 |
加油加油。 |
期待楼主早日完工。 |
期待楼主早日完工。 |
另外,周五去焊接轮子,四个轮子的棘轮焊死,花了50块,感觉被人坑了。 大家焊过的感觉我是被坑了吗? |
好了今天试验了转向,找到以前不能转向的原因:因为以前是我坐在车上,导致车轮对地的压力太大,导致车轮摩擦太大。 现在发现只装电池(5KG,4块12v12AH铅酸)能正常转向。 我的体重60KG,则最多还能装60KG的东西。 解决方法1.是让轮子变光滑,但车的爬坡能力会下降。 2.是加装履带。这个是推理的,具体怎么个原理很难说。要画个图解释的画,我也能把自己弄晕。 |
真的很期待你的作品 |
另外发现一个问题,就是这个车本来是靠左右轮的差速转弯,就像坦克那样,但是实验的时候发现转不了。 请高手看看,是不是因为轮子的摩擦力太大,如何解决。 |
昨天想了一晚,发现程序里有问题,若是一帧出现问题,可能信号永远连不上 今天新写了一个Bate2,准备用手机为通讯,即手机的话筒和耳机。 现在把程序贴上来,延时 2500 是用开发板的LED与肉眼测试的,延时1000时看不出来,延时2500时能看出来闪烁。因为人眼对闪烁的分辨力比声音低,所以2500这个延时用手机应该能很容易,很有效的传输。对于延时2500是不是太长,到时候硬件齐全会进行测试。 /* Remote control car Remote transmitter Thought Mobilephone (The whole world!) Main Max Ping: 65 */ #include<reg52.h> sbit IN0 = P0^0; sbit IN1 = P0^1; sbit IN2 = P0^2; sbit IN3 = P0^3; //2 motors for moving sbit IN4 = P0^4; sbit IN5 = P0^5; sbit IN6 = P0^6; sbit IN7 = P0^7; //2 motors for weapons sbit LIGHT0 = P1^0; sbit LIGHT1 = P1^1; sbit LAMB = P1^2; sbit SPEAKER = P1^3; sbit LOCK0 = P1^4; sbit LOCK1 = P1^5; //2 weapon locks sbit FIRE = P1^6; // --WEAPON-- sbit OTHER = P1^7; //Other use (RELAY) ( decided by user ) sbit LED0 = P2^0; //All ready sbit LED1 = P2^1; //C373 Locking sbit LED2 = P2^2; //C373 unlocking sbit LED3 = P2^3; //OUT sbit LED4 = P2^4; // sbit LED5 = P2^5; //LOCK0 sbit LED6 = P2^6; //LOCK1 sbit LED7 = P2^7; //Weapon uncloking //8 LED interface sbit C373 = P3^6; //IC 74HC373 sbit OUT = P3^7; //OUT( Connect with mobilephone ) void main() { unsigned int i; P0=0x00; P1=0x00; P2=0x00; P3=0x00; C373=0; for(i=0;i<10000;i++); LED0=1; for(i=0;i<5000;i++); LED1=1; for(i=0;i<5000;i++); LED2=1; for(i=0;i<5000;i++); LED3=1; for(i=0;i<5000;i++); LED4=1; for(i=0;i<5000;i++); LED5=1; for(i=0;i<5000;i++); LED6=1; for(i=0;i<5000;i++); LED7=1; for(i=0;i<5000;i++); P2=0x00; for(i=0;i<2500;i++); P2=0xff; for(i=0;i<5000;i++); P2=0x00; for(i=0;i<2500;i++); LED0=1; for(i=0;i<10000;i++); //All ready! while(1) { //Begin! OUT=LED3=1; delay(); delay(); delay(); delay(); OUT=LED3=0; delay(); OUT=LED3=IN0; delay(); OUT=LED3=IN1; delay(); OUT=LED3=IN2; delay(); OUT=LED3=IN3; delay(); OUT=LED3=IN4; delay(); OUT=LED3=IN5; delay(); OUT=LED3=IN6; delay(); OUT=LED3=IN7; delay(); OUT=LED3=LIGHT0; delay(); OUT=LED3=LIGHT1; delay(); OUT=LED3=LAMB; delay(); OUT=LED3=SPEAKER; delay(); OUT=LED3=LOCK0; delay(); OUT=LED3=LOCK1; delay(); OUT=LED3=FIRE; delay(); OUT=LED3=OTHER; delay(); OUT=LED3=0; delay(); delay(); delay(); delay(); delay(); //End, return to "begin!". } } //For delay (Decided on how fast the mobilephone can trans.) //(Now, it is in testing.) delay() { unsigned int s; for(s=0;s<2500;s++); } /* Remote control car Remote-controlled receiver Thought Mobilephone (The whole world!) Main Max Ping: 65 */ #include<reg52.h> sbit MOTOR0 = P0^0; sbit MOTOR1 = P0^1; sbit MOTOR2 = P0^2; sbit MOTOR3 = P0^3; //2 motors for moving sbit MOTOR4 = P0^4; sbit MOTOR5 = P0^5; sbit MOTOR6 = P0^6; sbit MOTOR7 = P0^7; //2 motors for weapons sbit LIGHT0 = P1^0; sbit LIGHT1 = P1^1; sbit LAMB = P1^2; sbit SPEAKER = P1^3; sbit LOCK0 = P1^4; sbit LOCK1 = P1^5; //2 weapon locks sbit FIRE = P1^6; // --WEAPON-- sbit OTHER = P1^7; //Other use (RELAY) ( decided by user ) sbit WRONG = P2^0; //Interface ( if "IN" is wrong ). sbit C373 = P3^6; //IC 74HC373 For balance sbit IN = P3^7; //OUT( Connect with mobilephone ) void main() { unsigned int i; //Begin if(IN=1) { delay(); for(i=0;i<1250;i++);//Delay ( At 1/2 ) if(IN=1) { delay(); if(IN=1) { delay(); if(IN=1) { delay(); if(IN=0) { delay; //All check! //Star to get info MOTOR0=IN; delay(); MOTOR1=IN; delay(); MOTOR2=IN; delay(); MOTOR3=IN; delay(); MOTOR4=IN; delay(); MOTOR5=IN; delay(); MOTOR6=IN; delay(); MOTOR7=IN; delay(); LIGHT0=IN; delay(); LIGHT1=IN; delay(); LAMB=IN; delay(); SPEAKER=IN; delay(); LOCK0=IN; delay(); LOCK1=IN; delay(); FIRE=IN; delay(); OTHER=IN; delay(); //End, return } else { WRONG=1; for(i=0;i<500;i++); WRONG=0; } } else { WRONG=1; for(i=0;i<500;i++); WRONG=0; } } else { WRONG=1; for(i=0;i<500;i++); WRONG=0; } } else { WRONG=1; for(i=0;i<500;i++); WRONG=0; } } else { WRONG=1; for(i=0;i<500;i++); WRONG=0; } //End, return to "Begin!". } //For delay (Decided on how fast the mobilephone can trans.) //(Now, it is in testing.) delay() { unsigned int s; for(s=0;s<2500;s++); } |
看贴 |
樓主不是在做車床咩? |
把发射机程序修改了一下,加上了锁存,接收机的也做了。 目前接收机程序还差信号错误时的中断返回和停止动作没做。 (程序新手,欢迎老手拍砖。) //遥控发射器端 //NO1,测试(Testing) //1CH输出 ---串行--- #include<reg51.h> //定义行走与炮塔转动信号脚, sbit IN0=P0^0; sbit IN1=P0^1; sbit IN2=P0^2; sbit IN3=P0^3; //CH0.0 sbit IN4=P0^4; sbit IN5=P0^5; sbit IN6=P0^6; sbit IN7=P0^7; //CH0.1 //定义小工具信号脚。 sbit LIGHT0=P1^0; sbit LIGHT1=P1^1; sbit LAMB=P1^2; sbit SPEAKER=P1^3; sbit OTHER0=P1^4; sbit OTHER1=P1^5; sbit OTHER2=P1^6; sbit OTHER3=P1^7; //CH0.2 //定义武器信号脚。 sbit LOCK0=P2^0; sbit LOCK1=P2^1; sbit READY=P2^2; sbit FIRE=P2^3; sbit LED0=P2^4; sbit LED1=P2^5; sbit LED2=P2^6; sbit LED3=P2^7; //CH0.3 //定义编码输出信号脚。 sbit RELAY=P3^3; sbit OUT=P3^4; sbit C573=P3^5;//C573锁存器 //延时申明。 void main () { unsigned int i;//定义延时函数i。 //unsigned int a;//定义延时函数a。 //准备工作。 P0=0x00; P1=0x00; P2=0x00; P3=0x00; LED0=1; for(i=0;i<25000;i++); LED1=1; for(i=0;i<25000;i++); LED2=1; for(i=0;i<25000;i++); LED3=1; for(i=0;i<25000;i++); LED0=0; LED1=0; LED2=0; LED3=0; for(i=0;i<15000;i++); LED0=1; LED1=1; LED2=1; LED3=1; SPEAKER=1; for(i=0;i<25000;i++); P0=0x00; P1=0x00; P2=0x00; P3=0x00; RELAY=1; for(i=0;i<5000;i++); //继电器自锁(OUT输出) RELAY=0; //系统信号有效。 //All ready. //主程序 while(1) { //CH0.0,1,2计算 OUT=1; for(i=0;i<2000;i++); OUT=0; for(i=0;i<750;i++);//引导码 C573=0;//锁存 OUT=IN0; //编码开始 for(i=0;i<50;i++); OUT=IN1; for(i=0;i<50;i++); OUT=IN2; for(i=0;i<50;i++); OUT=IN3; for(i=0;i<50;i++); OUT=IN4; for(i=0;i<50;i++); OUT=IN5; for(i=0;i<50;i++); OUT=IN6; for(i=0;i<50;i++); OUT=IN7; for(i=0;i<50;i++); OUT=LIGHT0; for(i=0;i<50;i++); OUT=LIGHT1; for(i=0;i<50;i++); OUT=LAMB; for(i=0;i<50;i++); OUT=SPEAKER; for(i=0;i<50;i++); OUT=OTHER0; for(i=0;i<50;i++); OUT=OTHER1; for(i=0;i<50;i++); OUT=OTHER2; for(i=0;i<50;i++); OUT=OTHER3; for(i=0;i<50;i++); //编码结束 C573=1;//锁存结束,开始输入 OUT=1; for(i=0;i<200;i++); OUT=0; for(i=0;i<750;i++);//结束识别码。 //CH4计算 --FIRE专用--(所有结果延时相同(1000)) if(LOCK0==1&&LOCK1==1)//LOCK1,2打开 { if(FIRE==1)//若开火 { LED0==1; for(i=0;i<200;i++); LED1==1; for(i=0;i<200;i++); LED2==1; for(i=0;i<200;i++); LED3==1; for(i=0;i<200;i++);//延时,LED倒计时 if(FIRE==1)//若开火 { OUT=1; for(i=0;i<200;i++);//FIRE! LED0=0; LED1=0; LED2=0; LED3=0;//LED复原 } if(FIRE==0)//开火键松开 { OUT=0; for(i=0;i<200;i++);//无FIRE信号发出 LED0=0; LED1=0; LED2=0; LED3=0;//LED复原 } } if(FIRE==0)//保险打开,但未开火 { OUT=0; for(i=0;i<1000;i++);//无FIRE信号发出 } } if(LOCK0==0&&LOCK1==1)//保险LOCK未全开 { OUT=0; for(i=0;i<1000;i++);//无FIRE信号发出 } if(LOCK0==1&&LOCK1==0)//保险LOCK未全开 { OUT=0; for(i=0;i<1000;i++);//无FIRE信号发出 } if(LOCK0==0&&LOCK1==0)//保险LOCK未全开 { OUT=0; for(i=0;i<1000;i++);//无FIRE信号发出 } } } //遥控接受器端 //NO1,测试(Testing) //1CH输出 ---串行--- #include<reg51.h> //定义行走与炮塔转动信号脚, sbit MOTOR0=P0^0; sbit MOTOR1=P0^1; sbit MOTOR2=P0^2; sbit MOTOR3=P0^3; //CH0.0 sbit MOTOR4=P0^4; sbit MOTOR5=P0^5; sbit MOTOR6=P0^6; sbit MOTOR7=P0^7; //CH0.1 //定义小工具信号脚。 sbit LIGHT0=P1^0; sbit LIGHT1=P1^1; sbit LAMB=P1^2; sbit SPEAKER=P1^3; sbit OTHER0=P1^4; sbit OTHER1=P1^5; sbit OTHER2=P1^6; sbit OTHER3=P1^7; //CH0.2 //定义武器信号脚。 sbit LOCK0=P2^0; sbit LOCK1=P2^1; sbit READY=P2^2; sbit FIRE=P2^3; sbit LED0=P2^4; sbit LED1=P2^5; sbit LED2=P2^6; sbit LED3=P2^7; //CH0.3 //定义编码输出信号脚。 sbit C573=P3^3; sbit IN=P3^4; sbit HELPOUT=P3^5; void main () { unsigned int i; C573=1;//锁存 if(IN==1) { for(i=0;i<200;i++);//Check0 if(IN==1) { for(i=0;i<200;i++);//Check1 if(IN==1) { for(i=0;i<200;i++);//Check2 if(IN==1) { for(i=0;i<200;i++);//Check3 if(IN==1) { for(i=0;i<200;i++);//Check4 if(IN==1) { for(i=0;i<200;i++);//Check5 if(IN==1) { for(i=0;i<200;i++);//Check6 if(IN==1) { for(i=0;i<200;i++);//Check7 if(IN==1) { for(i=0;i<200;i++);//Check8 if(IN==1) { for(i=0;i<200;i++);//Check9 if(IN==0) { for(i=0;i<400;i++);//Check10 if(IN==0) { for(i=0;i<200;i++);//Check11 //All Checked, begin! //数据检查完毕,此时应为MOTOR0(发射机IN0)的第25/50处 MOTOR0=IN; for(i=0;i<50;i++);//#0 MOTOR1=IN; for(i=0;i<50;i++);//#1 MOTOR2=IN; for(i=0;i<50;i++);//#2 MOTOR3=IN; for(i=0;i<50;i++);//#3 MOTOR4=IN; for(i=0;i<50;i++);//#4 MOTOR5=IN; for(i=0;i<50;i++);//#5 MOTOR6=IN; for(i=0;i<50;i++);//#6 MOTOR7=IN; for(i=0;i<50;i++);//#7 LIGHT0=IN; for(i=0;i<50;i++);//#8 LIGHT1=IN; for(i=0;i<50;i++);//#9 LAMB=IN; for(i=0;i<50;i++);//#10 SPEAKER=IN; for(i=0;i<50;i++);//#11 OTHER0=IN; for(i=0;i<50;i++);//#12 OTHER1=IN; for(i=0;i<50;i++);//#13 OTHER2=IN; for(i=0;i<50;i++);//#14 OTHER3=IN; for(i=0;i<50;i++);//#15 if(IN=1); { for(i=0;i<200;i++); if(IN=0); { for(i=0;i<425;i++); if(IN=0); { for(i=0;i<100;i++); C573=1;//锁存解锁 for(i=0;i<100;i++);//数据输入锁存 C573=1;//锁存 for(i=0;i<100;i++); } } } for(i=0;i<900;i++); FIRE=1; for(i=0;i<100;i++); } } } } } } } } } } } } } |
支持你!加油 |
厉害,新手学习 |