完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
我用蓝牙控制的arduino循迹小车一旦进入循迹模式就回不到遥控状态,求大神指点! #define IN4 6 #define IN3 7 #define IN1 4 #define IN2 5 #define SensorLeft 10 #define SensorRight 11 int SL; int SR; char c; void setup() { Serial.begin(9600); pinMode(IN1,OUTPUT); pinMode(IN2,OUTPUT); pinMode(IN3,OUTPUT); pinMode(IN4,OUTPUT); pinMode(SensorLeft,INPUT); pinMode(SensorRight,INPUT); digitalWrite(IN1,LOW); digitalWrite(IN2,LOW); digitalWrite(IN3,LOW); digitalWrite(IN4,LOW); } void goforward( ) { digitalWrite(IN1,LOW); digitalWrite(IN2,HIGH); digitalWrite(IN3,LOW); digitalWrite(IN4,HIGH); } void goback( ) { digitalWrite(IN1,HIGH); digitalWrite(IN2,LOW); digitalWrite(IN3,HIGH); digitalWrite(IN4,LOW); } void turnright( ) { digitalWrite(IN1,LOW); digitalWrite(IN2,HIGH); digitalWrite(IN3,HIGH); digitalWrite(IN4,LOW); } void turnleft( ) { digitalWrite(IN1,HIGH); digitalWrite(IN2,LOW); digitalWrite(IN3,LOW); digitalWrite(IN4,HIGH); } void _stop( ) { digitalWrite(IN1,LOW); digitalWrite(IN2,LOW); digitalWrite(IN3,LOW); digitalWrite(IN4,LOW); } void xunji( ) { while(c='z') //如果没有while循环,循迹就不起作用 { SL=digitalRead(SensorLeft); SR=digitalRead(SensorRight); if(SL==LOW&&SR==LOW) { digitalWrite(IN1,LOW); digitalWrite(IN2,HIGH); digitalWrite(IN3,LOW); digitalWrite(IN4,HIGH); } else { if(SL==LOW && SR==HIGH) { delay(1); digitalWrite(IN3,HIGH); digitalWrite(IN4,LOW); digitalWrite(IN1,LOW); digitalWrite(IN2,HIGH); } else if(SR==LOW && SL==HIGH) { delay(1); digitalWrite(IN3,LOW); digitalWrite(IN4,HIGH); digitalWrite(IN2,LOW); digitalWrite(IN1,HIGH); } else { digitalWrite(IN2,LOW); digitalWrite(IN1,LOW); digitalWrite(IN4,LOW); digitalWrite(IN3,LOW); } } } } void loop() { while(1) { while(Serial.available()>0) { c=Serial.read(); switch(c) { case 'w': {goforward( );break;} case 's': {goback( );break;} case 'a': {turnleft( );break;} case 'd': {turnright( );break;} case 'z': {xunji( );} case 'q': {_stop( );break;} } } } } |
|
相关推荐
5个回答
|
|
你的xunji()循环中缺少判断串口按键的代码,所以一旦进入xunji()循环就自己寻上了。解决方法:
至少在循迹循环中加入一小段获得串口数据或调用串口读取数据的片段,改变字符串c的值,以便跳出。 或者,xunji()仅仅执行一次,由主程序的case 'z'调用重复执行 |
|
|
|
沙发说的对~~~~你程序里只有入口,没有出口那是不行地!
|
|
|
|
请问解决了吗?我也遇到这个问题了
|
|
|
|
看来程序已经解决了~~~~~
|
|
|
|
学习到了
|
|
|
|
只有小组成员才能发言,加入小组>>
WIO Terminal +MCP2515 实现车辆OBD的速度监控
9968 浏览 0 评论
60659 浏览 77 评论
5705 浏览 3 评论
一块扩展板完成Arduino的10类37项实验(代码+图形+仿真)
33334 浏览 219 评论
9846 浏览 0 评论
221浏览 1评论
2161浏览 1评论
请教:esp32中用u8g2显示shtc3传感器数据到i2c液晶屏,显示不稳定的问题
934浏览 1评论
1050浏览 1评论
1430浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-4-23 14:38 , Processed in 0.796359 second(s), Total 81, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号