壮大51 发表于 2020-3-30 10:12 你也说了“因为我在操作完direction函数后,用IrValue[2]=0把数据码清空了,所以在下一次循环时就不会执行direction” 所以你的P1状态为上次操作后的状态即 P1=0x55;电机前进,而后面的程序没有对P1的状态进行改变;所以车一直前进 |
壮大51 发表于 2020-3-30 10:12 main你应该可以改成 while(1) { if (IrValue[2]==0x18) direction(0x55); else direction(0x00); } |
game灬boy 发表于 2020-3-29 15:13 direction 里面就是对P1总线赋值 direction(u8 i) { P1=i; } P1八个IO口控制两个L293D的信号,以此来让电机正反转 |
//估计是遥控的接收码你没列全, 你这样试下 while(1) { switch(IrValue[2]) { case(0x45): startstop();IrValue[2]=0;break; case(0x18): direction(0x55);IrValue[2]=0;break; //你应该是截取的数据码不全, 你试加下面几句试下 default: startstop();IrValue[2]=0; //电机停, 接收数据清0, 不是这二句就按你的改 break; } } |
direction();可以发出来吗? 你的程序应该是IrValue[2]=0x18;然后电机的信号线的状态变为前进状态;当IrValue[2]=0时你的电机的状态没有更新 |
while(1) { switch(IrValue[2]) { case(0x45): startstop();IrValue[2]=0;break; case(0x18): direction(0x55);IrValue[2]=0;break; //估计是你还有数据没截取, 如释放键码, 新加下面试下 default: break; } } |