关于红外遥控器解码的一点疑问

最开始由3D打印机接触到arduino,燃起了一点兴趣,最近有些空闲时间开始研究arduino程序,发现各种库果然十分方便,适合我这种怕麻烦星人。。。
计划是做红外遥控器控制舵机的小程序,经过一下午的查资料,敲代码,改代码,改代码,改代码。。。终于可以实现功能。按下遥控器数字键舵机转动到相对应的角度。

#include 
#include 

#define MAX 22
Servo myservo;//定义舵机变量名
int val; 
int angle; 
int RECV_PIN = 7;      //定义红外接收模块输出口接arduino数字引脚11

IRrecv irrecv(RECV_PIN);
decode_results results;
//Car mp3编码
unsigned long rremote_code[MAX] = {
    0xFFA25D,0xFF629D,0xFFE21D,//CH- CH CH+
    0xFF22DD,0xFF02FD,0xFFC23D,//PREV NEXT PLAY
    0xFFE01F,0xFFA857,0xFF906F,//VOL- VOL+ EQ
    0xFF6897,0xFF9867,0xFFB04F,// 0 100+ 200+
    0xFF30CF,0xFF18E7,0xFF7A85,// 1  2  3
    0xFF10EF,0xFF38C7,0xFF5AA5,// 4  5  6
    0xFF42BD,0xFF4AB5,0xFF52AD, // 7  8  9
    0xFFFFFFFF//长按
};

void setup()
{
  Serial.begin(9600);
  irrecv.enableIRIn(); //初始化红外遥控
  myservo.attach(9);//定义舵机接口(9、10 都可以,缺点只能控制2 个)
}

void loop() {
  if (irrecv.decode(&results)) {
    //打印字符串
    int val = getRremoteString(results.value);
      Serial.println("遥控输入:");
      Serial.println(val);
      angle=val*20;
      Serial.println("舵机当前角度:");
      Serial.println(angle);
      myservo.write(angle);//设置舵机旋转的角度
      delay(50);
    irrecv.resume(); // 接收下一个值
  }
}

/**
* 解析红外编码并返回对应的字符串
*/
int getRremoteString(unsigned long code){
  int codeString=0;
      switch (code){
        case 0xFF6897: codeString=0; break;
        case 0xFF30CF: codeString=1; break;
        case 0xFF18E7: codeString=2; break;
        case 0xFF7A85: codeString=3; break;
        case 0xFF10EF: codeString=4; break;
        case 0xFF38C7: codeString=5; break;
        case 0xFF5AA5: codeString=6; break;
        case 0xFF42BD: codeString=7; break;
        case 0xFF4AB5: codeString=8; break;
        case 0xFF52AD: codeString=9; break;
        default: codeString=0;
        }
        return codeString;
}

程序借鉴了arduino中文社区的文章:感谢
关于红外遥控器解码的一点疑问_第1张图片
有几个问题
1.原程序中编码与字符串一一对应的思路非常简洁,但转换后数据类型变为字符串,无法进行后续处理屏蔽掉无关按键只留下数字键,以及给舵机复制操作。尝试强制转换为int型,不过没能成功,希望能获得指点。
2.使用switch语句后无法屏蔽长按操作,当前定义是长按归零。不知怎样实现长按舵机无操作功能。
初次接触arduino编程,水平有限,见谅见谅

你可能感兴趣的:(关于红外遥控器解码的一点疑问)