マイクラでラジコンレース!?RCプロポで操作するMinecraft!

ラジコンのプロポでマイクラ、まずは Arduino LEONARDO を準備。

Let’s play Minecraft with RC controller. First let’s prepare a Arduino LEONARDO.

そして何はともあれプロポと受信機。お気に入りのランチボックスMINIでやろうと思ったけど受信機に出力が無く断念。

そこで引っ張り出した昔のラジコン、27MHzクリスタル時代。

こいつの CH1,CH2 から信号をひっぱりだします。

ちなみに受信機から出ていたPWMはこんな具合。

それを Arduino にいれます。今回は CH1,CH2 をそれぞれ pin2, pin3 に、また、Arduinoの5vを受信機に供給しました。

そしてプログラミング。公式のArduino IDEを使いましょう。

IDEはこんな具合。

ボードの種類を LEONARDO にして、以下のソースを貼り付けて実行。

#include <Keyboard.h>
#include <Mouse.h>

#define PIN_STEER 2
#define PIN_THROT 3

volatile int g_nSteer = 0;
volatile int g_nThrot = 0;

void onChangeSteer(){
  static unsigned long t0 = 0;
  if(digitalRead(PIN_STEER)){
    t0 = micros();
  }else{
    g_nSteer = micros() - t0;
  }
}

void onChangeThrot(){
  static unsigned long t0 = 0;
  if(digitalRead(PIN_THROT)){
    t0 = micros();
  }else{
    g_nThrot = micros() - t0;
  }
}

void setup() {
  pinMode(PIN_STEER, INPUT_PULLUP);
  pinMode(PIN_THROT, INPUT_PULLUP);

  attachInterrupt(digitalPinToInterrupt(PIN_STEER), onChangeSteer, CHANGE);
  attachInterrupt(digitalPinToInterrupt(PIN_THROT), onChangeThrot, CHANGE);

  Keyboard.begin();
  Mouse.begin();
}

void loop() {
  int steer = g_nSteer - 1500;
  Mouse.move(-steer/30, 0, 0);

  int throt = g_nThrot - 1500;
  if(-300 < throt && throt < -100){
    Keyboard.press('s');
  }else
  if(-450 < throt && throt < -300){
    Keyboard.press(KEY_LEFT_ALT);
    Keyboard.press('s');
  }else
  if(throt < -450){
    Keyboard.press(' ');
  }else
  if(100 < throt && throt < 300){
    Keyboard.press('w');
  }else
  if(300 < throt && throt < 450){
    Keyboard.press(KEY_LEFT_ALT);
    Keyboard.press('w');
  }else
  if(450 < throt){
    Keyboard.press(' ');
  }else
  {
    Keyboard.releaseAll();
  }

  delay(10);
}

「ラジオコントロール マイクラ」完成、Arduino LEONARDO は簡単に HID になれるのがいいね!

マイクラ世界にアスレチックコース作って、みんなでレースすると楽しいかも!










.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s