pdf-icon

Arduino入門

2. デバイス&サンプル

6. アプリケーション

Cardputer Keyboard

Cardputer Keyboard 入力に関する API とサンプルプログラムで、Cardputer と Cardputer-Adv に対応しています。

サンプルプログラム

コンパイル要件

  • M5Stack ボードマネージャーのバージョン >= 3.2.2
  • ボードオプション = M5Cardputer
  • M5Cardputer ライブラリのバージョン >= 1.1.0
  • M5Unified ライブラリのバージョン >= 0.2.8
  • M5GFX ライブラリのバージョン >= 0.2.10
注意事項
キーボードを使用する際は、メインループ内に M5Cardputer.update() 関数を含めて状態更新を読み取る必要があります。さらに、できるだけブロッキング処理を減らさないと、キーボードの変化をタイムリーに取得できない場合があります。
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
#include "M5Cardputer.h"

M5Canvas canvas(&M5Cardputer.Display);
String data = "> ";

void setup() {
  auto cfg = M5.config();
  M5Cardputer.begin(cfg, true);  // enableKeyboard
  M5Cardputer.Display.setRotation(1);
  M5Cardputer.Display.setTextSize(0.5);
  M5Cardputer.Display.setTextFont(&fonts::FreeSerifBoldItalic18pt7b);

  M5Cardputer.Display.drawRect(0, 0, M5Cardputer.Display.width(), M5Cardputer.Display.height() - 28, GREEN);
  M5Cardputer.Display.fillRect(0, M5Cardputer.Display.height() - 4, M5Cardputer.Display.width(), 4, GREEN);

  canvas.setTextSize(0.5);
  canvas.setTextFont(&fonts::FreeSerifBoldItalic18pt7b);
  canvas.setTextScroll(true);

  canvas.createSprite(M5Cardputer.Display.width() - 8, M5Cardputer.Display.height() - 36);
  canvas.println("Press Key and Enter to Input Text");
  canvas.pushSprite(4, 4);

  M5Cardputer.Display.drawString(data, 4, M5Cardputer.Display.height() - 24);
}

void loop() {
  M5Cardputer.update();

  if (M5Cardputer.Keyboard.isChange()) {
    if (M5Cardputer.Keyboard.isPressed()) {
      Keyboard_Class::KeysState status = M5Cardputer.Keyboard.keysState();

      for (auto i : status.word) {
        data += i;
      }

      if (status.del) {
        data.remove(data.length() - 1);
      }

      if (status.enter) {
        data.remove(0, 2);
        canvas.println(data);
        canvas.pushSprite(4, 4);
        data = "> ";
      }

      M5Cardputer.Display.fillRect(0, M5Cardputer.Display.height() - 28, M5Cardputer.Display.width(), 25, BLACK);
      M5Cardputer.Display.drawString(data, 4, M5Cardputer.Display.height() - 24);
    }
  }
}

実行結果は以下の図の通りです:

Keyboard_Class API

begin

関数プロトタイプ:

void begin();

機能説明:

  • キーボードを初期化する

M5Cardputer.begin() を呼び出す際に、パラメータ enableKeyboardtrue に設定すると、同時にキーボードを初期化できます。

M5Cardputer.begin(m5::M5Unified::config_t cfg, bool enableKeyboard);

入力パラメータ:

  • null

戻り値:

  • null

isChange

関数プロトタイプ:

bool isChange();

機能説明:

  • キーボードの状態に変化があるかを検出します。キーボード上の任意のキーが押されたり離されたりするとトリガーされます。

入力パラメータ:

  • null

戻り値:

  • bool
    • true: キーボードの状態に変化がある
    • false: キーボードの状態に変化がない

isPressed

関数プロトタイプ:

uint8_t isPressed();

機能説明:

  • 押されているキーの数を読み取ります

入力パラメータ:

  • null

戻り値:

  • uint8_t
    • 押されているキーの数

isKeyPressed

関数プロトタイプ:

bool isKeyPressed(char c);

機能説明:

  • 指定したキーが現在押されているかを検出します

入力パラメータ:

  • char c
    • キー名。例:'A''a''1'','' '(スペース)、KEY_LEFT_SHIFTKEY_BACKSPACEKEY_ENTERKEY_FN など。

戻り値:

  • bool
    • true: 指定したキーが押されている
    • false: 指定したキーが押されていない

getKey

関数プロトタイプ:

uint8_t getKey(Point2D_t keyCoor);

機能説明:

  • 指定した座標のキーに対応する10進数 ASCII コードを返します

入力パラメータ:

  • Point2D_t keyCoor
    • keyCoor.x: キーの横座標、範囲 [0, 13]、最も左の列は 0
    • keyCoor.y: キーの縦座標、範囲 [0, 3]、最上段は 0

戻り値:

  • uint8_t
    • 指定したキーに対応する10進数 ASCII コード

関連リンク

  • GitHub M5Cardputer ライブラリのキーボード部分のソースコード
On This Page