2015年9月12日 星期六

ROSA 系統開發 4 ─ 紅外線遙控接收

http://4rdp.blogspot.com/2015/09/rosa-4.html

續前文,紅外線遙控很適合室內單機使用,一般距離五公尺內,還可以藉由牆面反射,按遙控器按鍵速度要求並不快,把前文的系統時間建起來後,將紅外線檢查放在 PROCESS_100ms()中就可以了,

// (C) 2015, Bridan Wang, CC BY-NC-SA 3.0 TW
// http://4rdp.blogspot.tw/search/label/ROSA%20(Arduino)
//
void PROCESS_100ms(void){
  IR_CHECK();

}


// pin 2,3   IR
#include "MeIR.h"
MeIR ir;

void IR_CHECK() {   // for mBot car
  //Serial.println(ir.key());
  switch (ir.key()) {
    case 64: // mBot-up
      //MOTOR(MOVE_FORWARD, car_speed);
              break;
    case 25: // mBot-down
      //MOTOR(MOVE_BACK, car_speed);
              break;
    case 7:  // mBot-left
       //MOTOR(MOVE_LEFT, car_speed);
             break;
    case 9:  // mBot-right
      //MOTOR(MOVE_RIGHT, car_speed);
              break;
    case 69: // mBot-A
      //MOTOR(MOVE_STOP, car_speed);
              break;
    case 70: // mBot-B
              break;
    case 71: // mBot-C
              break;
    case 68: // mBot-D
              break;
    case 67: // mBot-E
              break;
    case 13: // mBot-F
              break;
    case 22: // mBot-0
              break;
    case 12: // mBot-1
              break;
    case 24: // mBot-2
              break;
    case 94: // mBot-3
              break;
    case  8: // mBot-4
              break;
    case 28: // mBot-5
              break;
    case 90: // mBot-6
              break;
    case 66: // mBot-7
              break;
    case 82: // mBot-8
              break;
    case 74: // mBot-9
              break;
    case 21: // mBot-setup
              break;
          default:
              break;
    }
    ir.loop();
}


這裡我引用 mBlock 所提供的 MeIR.cpp 程式庫,因為它的 ir.keyPressed() 函數將紅外線碼壓縮成 1 byte 識別,可減少記憶體耗用空間。

boolean MeIR::keyPressed(unsigned char r){
  irIndex = 0;
  if (millis() / 1000.0 - lastIRTime>0.2){
    return false;
  }
  return irRead == r;

}

參考它的原碼,加一個自己要的,修改如下:
unsigned char MeIR::key(){
  irIndex = 0;
  if (millis() / 1000.0 - lastIRTime>0.2){
    return 0;
  }
  return irRead;

}


沒有留言:

張貼留言