本帖最后由 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);
}
} |