小车超声波避障 红外遥控失效
当我单独将超声波函数放到loop里面的时候,小车是可以实现避障功能的,void loop() {
// put your main code here, to run repeatedly:
if(irrecv.decode(&results))
{
Serial.println(results.value,HEX);
irrecv.resume();
}
Bi_Zhang();
}
但是加了个红外遥控,想先让遥控器按下B键,
void loop() {
// put your main code here, to run repeatedly:
if(irrecv.decode(&results))
{
Serial.println(results.value,HEX);
irrecv.resume();
}
// Bi_Zhang();
switch(results.value)
{
case 0XFFA25D: key ();break; //按下A键,进入手动模式
case 0XFF629D: Bi_Zhang();break; //按下B键,进入避障模式
// case 0XFFE21D: Xun_Ji();break; //按下C键,进入循迹模式
case 0XFFE21D: beep();break;
}
}
然后在启动避障功能,但是却发现原来的避障功能完全失效,只会前行或者是后退,就是单个模块运行没有问题,一整合起来就不行了,请问这是什么原因? 本帖最后由 1415926 于 2015-9-10 11:54 编辑
把当前模式定义一个全局变量
int mode = 避障;
loop(){
if(irrecv.decode(&results)){
switch(results.value){
case0XFFA25D:
mode=手工;
break;
...
}
}
switch(mode){
case 避障:
bizhang();
break;
....
}
}
我估计你的个代码要一直按着B键就会一直避障了。松开了键之后,下次LOOP执行switch(result.value)时,一个case也执行不到,所以电机保持了上次的状态(前进或后退)运转。
1415926 发表于 2015-9-10 11:44 static/image/common/back.gif
把当前模式定义一个全局变量
int mode = 避障;
谢谢你的回答,不过我还有个疑问,这个模式赋值的时候,这个赋值需要重新定义吧, mode=手工就好比是这里的“手工” 这个定义的类型也是int 吧,假如说我需要添加多个动能模块的时候,该怎么处理,不好意思新手上路麻烦你了 本帖最后由 1415926 于 2015-9-10 15:21 编辑
XXL 发表于 2015-9-10 12:59 static/image/common/back.gif
谢谢你的回答,不过我还有个疑问,这个模式赋值的时候,这个赋值需要重新定义吧, mode=手工就好比 ...
对的,我那个“手工”、“避障”就是表达一个意思,你肯定要用int型的,最好这样,不直接写1、2、3是因为读起来更容易些,容易理解,也不容易写错。#define BIZHANG 1
#define SHOUGONG 2
#define XUNXIAN 3
#define XINGONGNENGA 4
#define XINGONGNENGB 5
int mode = BIZHANG;
loop(){
switch(){
case xxx:
mode = BIZHANG;
break;
case xx2:
mode = XINGONGNENGA:
break;
...
}
} 1415926 发表于 2015-9-10 15:20 static/image/common/back.gif
对的,我那个“手工”、“避障”就是表达一个意思,你肯定要用int型的,最好这样,不直接写1、2、3是因 ...
谢谢,我调试调试去 1415926 发表于 2015-9-10 15:20 static/image/common/back.gif
对的,我那个“手工”、“避障”就是表达一个意思,你肯定要用int型的,最好这样,不直接写1、2、3是因 ...
:)你好,综合你两次给出的思路,小车的行走效果比之前好多了,解决了部分问题,但是还有一个小Bug,遥控器只能按一下有用,也就是说只能切换另外的一种状态,想要再次切换的话就是切换不了了 XXL 发表于 2015-9-11 08:59 static/image/common/back.gif
你好,综合你两次给出的思路,小车的行走效果比之前好多了,解决了部分问题,但是还有一个小Bug,遥控 ...
你的意思是,遥控器第一次切换有效,第二次开始无论按哪个键都无效?
先把小车架起来连电脑上,
把接收得一段程序加Serial.print,看看串口上是否能打印出来数据,
在后面的switch mode 一段也打印数据看看是否正确...
如果还不行,你把这部分代码贴出来 1415926 发表于 2015-9-11 09:27 static/image/common/back.gif
你的意思是,遥控器第一次切换有效,第二次开始无论按哪个键都无效?
先把小车架起来连电脑上,
嗯解决了,是注释的时候注释了不该注释的,麻烦你了,谢谢
页:
[1]