xqxyk 发表于 2017-5-7 00:40:52

新人求教:红外线遥控舵机,如何能做到按着按键不放的时候持续增加转向角度

本帖最后由 xqxyk 于 2017-5-7 09:34 编辑

/*红外线遥控舵机,用长虹电视遥控器,按一次左或右方向键转动10度,按中心键返回90度,求教的问题是当持续按着左方向键或者右方向键的时候遥控器输出的编码是“4294967295”,如何能做到按着不放的时候持续增加转向角度,刚开始学习,不会发视频,请见谅,各位老师看一眼代码就清楚了。[email protected]*/

#include <Servo.h>

#include <IRremote.h>
Servo myservo;
int pos = 90;
int RECV_PIN = 11;//定义红外接收器的引脚为11
IRrecv irrecv(RECV_PIN); //解码结果放在decode_results构造的对象results里
decode_results results;
int ledpin=2;
int ledlpin=4;
int ledrpin=3;
void setup()
{
myservo.attach(9);
irrecv.enableIRIn();
pinMode(ledpin,OUTPUT );
pinMode(ledlpin,OUTPUT );
pinMode(ledrpin,OUTPUT );
}
void loop()
{
if (irrecv.decode(&results)){ // 解码成功,收到一组红外线信号
   digitalWrite(ledpin,HIGH);
   switch(results.value){
   case 50160285:
   pos=pos-10;
   pos=constrain(pos,0,90);
   myservo.write(pos);
   digitalWrite(ledlpin,HIGH);
   break;
   case 50192925:
   pos=pos+10;
   pos=constrain(pos,90,180);
   myservo.write(pos);
   digitalWrite(ledrpin,HIGH);
   break;
   case 50155695:
   pos=90;
   myservo.write(pos);
   break;
   }
   delay(20);
   irrecv.resume();
}

else
{
   digitalWrite(ledpin,LOW);
   digitalWrite(ledlpin,LOW);
   digitalWrite(ledrpin,LOW);
}
}

HEIKEJI 发表于 2017-6-15 07:50:17

顶一个我也有同样的疑惑,这个好像和遥控器持续发送命令有关系

kiyang 发表于 2017-6-17 11:59:37

我记得重复按键后会不停发送ffff,你用红外接收模块从串口看下,在程序里用while判断fffff就重复执行舵机旋转
页: [1]
查看完整版本: 新人求教:红外线遥控舵机,如何能做到按着按键不放的时候持续增加转向角度