pdf-icon

Arduino入門

2. デバイス&サンプル

6. アプリケーション

Chain Joystick 使用チュートリアル

1. 準備作業

  • 環境構成: Arduino IDE 入門チュートリアルを参照して IDE のインストールを完了し、使用する開発ボードに応じたボードマネージャと必要なドライバライブラリをインストールします。
  • 使用するドライバライブラリ:

2. サンプルプログラム

コンパイル要件
M5Stack ボードマネージャ バージョン >= 3.2.4
M5Chain ライブラリ バージョン >= 1.0.0
cpp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
#include "M5Chain.h"

#define RXD_PIN GPIO_NUM_5  // Chain DualKey のもう一方の側では 47
#define TXD_PIN GPIO_NUM_6  // Chain DualKey のもう一方の側では 48

Chain M5Chain;

device_list_t *device_list = NULL;
uint16_t device_count = 0;

int16_t x_value, y_value;
uint8_t button_status;
chain_button_press_type_t button_press_type;

void setup() {
  Serial.begin(115200);
  delay(1000);
  Serial.println("===========================");
  Serial.println("M5Stack Chain Joystick Test");

  M5Chain.begin(&Serial2, 115200, RXD_PIN, TXD_PIN);

  M5Chain.getDeviceNum(&device_count);
  device_list = (device_list_t *)malloc(sizeof(device_list_t));
  device_list->count = device_count;
  device_list->devices = (device_info_t *)malloc(sizeof(device_info_t) * device_count);
  M5Chain.getDeviceList(device_list);

  if (device_list->devices[0].device_type == CHAIN_JOYSTICK_TYPE_CODE) {
    Serial.println("ID[1] is Chain Joystick\n");
    delay(1000);
  } else {
    Serial.println("ID[1] is NOT Chain Joystick\n");
    return;
  }
}

void loop() {
  M5Chain.getJoystickMappedInt16Value(1, &x_value, &y_value);  // デバイスID
  Serial.print("x_value:");
  Serial.println(x_value);
  Serial.print("y_value:");
  Serial.println(y_value);

  M5Chain.getJoystickButtonStatus(1, &button_status);  // デバイスID
  Serial.print("button_status:");
  Serial.println(button_status);

  while (M5Chain.getJoystickButtonPressStatus(1, &button_press_type)) {  // デバイスID
    switch (button_press_type) {
      case CHAIN_BUTTON_PRESS_SINGLE:
        Serial.println("Single pressed");
        break;
      case CHAIN_BUTTON_PRESS_DOUBLE:
        Serial.println("Double pressed");
        break;
      case CHAIN_BUTTON_PRESS_LONG:
        Serial.println("Long pressed");
        break;
    }
  }
}

Chain Bridge コネクタを使用してメインコントローラ Chain DualKey と Chain Joystick を接続します。接続時は、三角の矢印がメインコントローラ Chain DualKey から外側を指すように注意してください。図を参照してください:

上記のプログラムをコンパイルしてデバイスに書き込み、Arduino IDE の右上にあるシリアルプロッター(Serial Plotter)を開きます。Chain Joystick のスティックを動かすと、X・Y の値がリアルタイムでグラフに表示されます:

プログラムの loop 部分の最初の 2 セクション(39–47 行)をコメントアウトして再度アップロードし、シリアルモニタを開きます。プログラムはジョイスティックの押下イベント(シングルクリック・ダブルクリック・長押し)を検出してメッセージを出力します:

3. 参考リンク

On This Page