M5StickC Plusの使い方、初期設定、サンプルプログラム、M5StickCとの違い等を詳しく紹介

M5StickC Plusアイキャッチ

「M5StickC Plus」の使い方、初期設定や「M5StickC」との違いを比較表で詳しく紹介します。

新モデルの「M5StickC Plus2」が発売されたので「M5StickC Plus」は生産中止予定です。
新モデルになって結構使い方が変わったので、変更点と合わせて以下のリンクで詳しく紹介しています。
M5StickC Plus2の使い方、初期設定、旧モデルとの違い等サンプルプログラムで詳しく紹介
M5StickCの最新版M5StickC Plus2について、旧モデルとの違いを確認しながら、初期設定や端子配列、機能、使い方をサンプルプログラムで詳しく紹介します。

「液晶表示器」の使い方については、以下のリンクで詳しく紹介しています。

M5Stack 液晶表示の使い方まとめ - 完全版 -(Arduinoコマンド)
M5Stackの液晶の使い方を初期設定から文字表示(print,draw関数)中央揃えや右揃え,フォント,線,図形,M5GFXのスプライト等わかりやすくまとめました。
lovyanGFXの使い方 M5Stackシリーズ編 基本的な表示(日本語、図形)方法
lovyanGFXで簡単日本語表示、データ更新やグラフ表示で「チラツキ」を抑えるための「スプライト」について、コピペ用サンプルプログラムでCORE2,M5Stick Plus,GRAYで表示して詳しく紹介します。
スポンサーリンク

1.「M5StickC Plus」とは

「M5StickC Plus」とは「M5Stackテクノロジー社」のマイコンボードで「M5StickC」のバージョンアップ品です。

大きさは 縦48.2 × 横25.5 × 高さ13.7と小さいながら 1.14インチTFT液晶画面や入出力端子、2個のボタン、LED、赤外線送信、ブザー、3軸ジャイロ+3軸加速度センサ、マイク、RTC(リアルタイムクロック)、バッテリーが内蔵されています。

他にもシリアル通信はもちろんWiFiやBluetoothにも対応していて、これらの機能をプログラムで自由に使用することができるので電子工作やデータ表示器、IoT機器の製作等いろいろなアイデアを形にすることができます。

プログラムは「C言語」ベースの「Arduino IDE」「PlatformIO」や「ビジュアルプログラミング(UiFlow)」「Python(MicroPython)」で作成できます。

スポンサーリンク

2.外観

梱包状態、本体外観は下画像のようになります。

M5StickC Plusの外観
M5StickC Plusの外観
M5StickC Plusの外観
M5StickC Plusの外観
スポンサーリンク

3.「M5StickC Plus」と「M5StickC」の違い比較表

「M5StickC Plus」と「M5StickC」との違いを比較表で紹介します。
太字部分が変更箇所です。

モデル名M5StickC PlusM5StickC
液晶表示器1.14 インチ、 135×240
カラーTFT LCD、ST7789v2
0.96 インチ、80×160
カラーTFT LCD、ST7735S
ブザー有り無し
バッテリー120 mAh@3.7 V95 mAh @3.7V
入出力端子G0、G26、G32、G33、G25/G36G0、G26、G32、G33、G36
本体重量15g15.1
梱包重量21g33g
パッケージ寸法53 × 27 × 17 mm55 × 55 × 20 mm
付属品無しUSBケーブル(Type-C)

大きさはそのままで液晶表示が大きくなり画面がとても見やすくなりました。
「M5StickC Plus(左)」と「M5StickC(右)」を比較すると下画像のようになります。

M5StickC PlusとM5StickCの外観比較

他にもブザーが内蔵されて簡単なコマンドで制御できます。
バッテリー容量がわずかですが大きくなっています。

入出力端子の「G36」が「G25」と共用になり、どちらかを選択して使えるようになってます。
「G36」はアナログ入力(A/D変換)として使用できて、もともと使える端子が少ない構成だったので自由度が広がりました。

本体重量はほぼ同じですが、梱包重量と梱包サイズが小さくなってます。
これはUSBケーブルが付属しなくなったためです。
本体側のUSBはType-Cなので持っていない方は別途準備が必要です。

4.基本仕様

基本仕様については下表のようになります。基本仕様は「M5StickC」と同じです。

項目詳細
ESP32ESP32-PICO-D4
240 MHzデュアルコア、600 DMIPS
520 KB SRAM、Wi-Fi、デュアルモードBluetooth
フラッシュメモリ4 MB
電源入力5 V @500 mA
通信ポートUSB Type-C × 1
GROVE互換(I2C + I/O + UART)× 1
ボタン正面ボタンA/側面ボタンB
LED赤色LED
IMU(慣性計測装置)MPU6886(3軸ジャイロ+3軸加速度)
IR(赤外線送信機)赤外線LED
マイクロフォンSPM1423
RTC(リアルタイムクロック)BM8563
PM IC(電源管理IC)AXP192
アンテナ2.4 GHz 3D アンテナ
動作温度0℃~ 60℃
本体寸法48.2 × 25.5 × 13.7 mm
ケース素材プラスチック(ポリカーボネート)

5.本体機能、端子配列

本体のボタンやLEDの位置、使用可能な端子機能は下画像のようになります。

M5StickC Plus本体機能、端子配列
G0は内部でマイクと繋がっているのでマイクと併用不可です。
また、1kΩの抵抗で3.3Vにプルアップされているため、入出力特に出力使用時には注意が必要です。
アナログ入力としては使えないこともないですがおすすめしません。

6.端子機能詳細(入出力/ADC/DAC)

LEDやボタンの端子番号、使用可能な端子機能詳細は下表のようになります。

※2022/3/5 表のG25とG26が逆でしたので修正しました。ご指摘ありがとうございました。
M5StickC Plus端子機能詳細
※注1:G0、G25、G26のアナログ入力(ADC)は無線通信使用時は使用できません。

「G25」と「G36」の使用しない方をフローティング入力に設定する方法は以下になります。
例として「G25」をフローティング入力としています。

setup() {
   M5.begin();
   pinMode(36, INPUT);
   gpio_pulldown_dis(GPIO_NUM_25);
   gpio_pullup_dis(GPIO_NUM_25);
}

7.開発環境別初期設定、使い方

・Arduino IDE

「Arduino IDE」を使用した「M5StickC Plus」の使い方を紹介します。
「Arduino IDE」のインストール方法は以下のリンクで詳しく紹介しています。

M5StackシリーズのためのArduino IDEのインストール方法と初期設定、使い方紹介
ArduinoIDEバージョン2のインストール方法から初期設定、スケッチ例の書き込み、コピペでの使い方まで詳しく紹介します。インストールはArduinoでも同じです。

インストールから初期設定までは「M5Stackシリーズ」で共通です。
「ライブラリ」だけ使用するマイコンボードごとに異なるので以下のように「M5StickC Plus」のライブラリを検索してインストールします。


まずは「ツール」→「ライブラリ管理」をクリックします。

M5StackシリーズのためのArduino IDEの初期設定

次に下画像のようなウインドウが表示されるので、検索窓に「M5StickCPlus(全部小文字でもOK)」と入力します。
「M5StickCPlus」ライブラリが出てくるので「インストール」をクリックします。

「M5StickCPlus」表示の右に「INSTALLED」が表示されていたら既にインストール済みです。
Arduino IDEでM5StackC Plusライブラリの準備

「インストール」をクリックすると下画像のようなウインドウが表示されます。
関連するライブラリがあることを教えてくれているので「Install all」をクリックして全部インストールしましょう。

Arduino IDEでM5StackC Plusライブラリの準備

下画像のように「INSTALLED」が表示されたらインストール完了です。
「閉じる」をクリックして終了してください。

Arduino IDEでM5StackC Plusライブラリの準備

これで初期設定は完了です。
「スケッチ例」やこの下で紹介する「サンプルプログラム」を「コピペ」して書き込んで動作確認してみましょう。

「Arduino IDE」に「コピペ」で書き込む方法は以下のリンクで詳しく紹介しています。

※サンプルプログラムはこのページ下の物を使用してくださいこちら
M5StackシリーズのためのArduino IDEのインストール方法と初期設定、使い方紹介
ArduinoIDEバージョン2のインストール方法から初期設定、スケッチ例の書き込み、コピペでの使い方まで詳しく紹介します。インストールはArduinoでも同じです。

・PlatformIO

「PlatformIO」を使用した「M5StickC Plus」の使い方を紹介します。
本格的にプログラミングするなら「PlatformIO」がおすすめです!

「PlatformIO」のインストール方法は以下のリンクで詳しく紹介してます。
「VS Code」と「Python」のインストールも別途必要になりますのでリンクを載せておきます。

インストール順は「① VS Code」「② Python」「③ PlatformIO」です。

Visual Studio Code (VSCode)のインストールと日本語化から基本設定まで紹介
簡単高機能エディタ「VS Code(Visual Studio Code)」のインストールから初期設定まで紹介。 様々なプログラム言語に対応。プログラミング初心者にもおすすめ、現役最強エディタを使いこなしていきましょう。
pythonのダウンロードからインストール方法の紹介
人気のプログラミング言語 python のインストール方法の紹介です。python はアプリ開発やWebサイト構築、ディープラーニングにも使用されますが、マイコンボードの統合開発環境「Platform IO」のインストールにも必要です。
PlatformIO のダウンロードからインストールの紹介。Arduino IDEより速い!高性能!
Platform IOとは VSCode(エディタ)で動作する、IDEと呼ばれる統合開発環境です。 Arduino IDEでも開発できますが、見やすさ、編集のしやすさ、書込みスピード、どれをとってもPlatform IOの方がおすすめです

初期設定については「M5Stackシリーズ」の「ATOM LITE」の初期設定で詳しく紹介しています。

ATOM LITE の初期設定。プログラミング初心者におすすめ
Platform IOを使用した ATOM LITE の初期設定です。ファイルを作成、必要なライブラリの準備、初期設定方法を紹介。実際に「Lチカ」プログラムを「コピペ」で書き込み動作確認まで行います。

手順は「ATOM LITE」とほぼ同じですがインストールする「ライブラリ」が異なるので以下で紹介します。

まずは「PlatformIO」の「HOME」画面で「New Project」をクリックしてください。

PlatformIOでM5StickC Plusの初期設定

下画像のようなウインドウが表示されるので「Name」にプロジェクト名を入力してください。
今回は例としてプロジェクト名を「M5StickC_Plus」としています。

「Board」に「M5Stick」と入力するとドロップダウンリストに「M5Stick-C(M5Stack)」があるので選択してください。

下画像のように入力したら「Finish」をクリックしてください。

PlatformIOでM5StickC Plusの初期設定

次にライブラリをインストールします。

「Home」メニューの「Libraries」をクリックすると下画像のような画面になるので検索窓に「M5StickCPlus(すべて小文字でもOK)」と入力し「エンター」を押します。

「M5StickCPlus」ライブラリが表示されるのでクリックします。

PlatformIOでM5StickC Plusの初期設定

次に「Add to Project」をクリックします。

PlatformIOでM5StickC Plusの初期設定

「Select a project」をクリックするとドロップダウンリストに先ほど作成した「M5StickC_Plus」があるので選択します。

PlatformIOでM5StickC Plusの初期設定

下画像のように設定したら「Add」をクリックします。
プロジェクトの作成が始まります。終わるまで待ちましょう。

PlatformIOでM5StickC Plusの初期設定

プロジェクトの作成が終了したら設定内容を確認してみましょう。

画面左の「ワークスペース」の中から「platformio.ini」をクリックすると設定内容が確認できます。
下画像のようになっていればOKです。
(バージョンの@^0.0.5は異なる場合があります。)

PlatformIOでM5StickC Plusの初期設定


「ワークスペース」の「src」→「main.cpp」をクリックすると下画像のようになります。
初期プログラムが書かれてますが全て消去して、この下で紹介する「サンプルプログラム」を「コピペ」して書き込んで動作確認してみてください。

PlatformIOでM5StickC Plusの初期設定

プログラムを「コピペ」で書き込んで動作確認する方法も以下のリンクを参考にしてください。

※サンプルプログラムはこのページ下の物を使用してください → こちら
ATOM LITE の初期設定。プログラミング初心者におすすめ
Platform IOを使用した ATOM LITE の初期設定です。ファイルを作成、必要なライブラリの準備、初期設定方法を紹介。実際に「Lチカ」プログラムを「コピペ」で書き込み動作確認まで行います。

・UiFlow(ビジュアルプログラミング)

「UiFlow」を使用した「M5StickC Plus」の使い方を紹介します。
「UiFlow」の使い方は以下のリンクで詳しく紹介しています。

最新版UIFlowの使い方。初期設定から動作確認まで詳しく紹介
M5Stack CORE2,StickC,ATOM LITE等でビジュアルプログラミング(ブロックプログラミング)の開発環境UIFlowを使うための使い方を詳しく紹介します。

まずは「M5Burner」を起動して画面左の機種選択メニューで「M5StickC」を選択します。
下画像のように「UIFLOW(StickC Plus)」が表示されるのでその下の「Download」をクリックします。

UiFlowでM5StickC Plusの初期設定

ダウンロードが終わると下画像ような表示に変わります。
「M5StickC Plus」を「パソコン」と接続して画面左上の「COMポート」を設定した後に「Burn」をクリックします。

UiFlowでM5StickC Plusの初期設定

WiFi通信のための「SSID」と「パスワード」を入力する画面が表示されるので、お使いの環境に合わせて入力したら「Start」をクリックします。

M5StackシリーズのM5Burnerの使い方


「ファームウェア」の書き込みが始まるので終わるまで待ちましょう。


「ファームウェア」の書き込みが終わると「M5StickC Plus」に下画像のように「Api key」が表示されます。

UiFlowでM5StickC Plusの初期設定

次に「UiFlow」を起動して、下画像のように画面右上の設定アイコンから「設定」をクリックします。

UiFlowでM5StickC Plusの初期設定

下画像のような設定ウインドウが表示されるので「M5StickC Plus」本体に表示された「Api Key」を入力して「M5StickC Plus」を選択した後に「OK」をクリックします。

UiFlowでM5StickC Plusの初期設定

「OK」をクリックすると下画像のように画面が変わります。
画面左下に、入力した「Api Key」と「接続済み」と表示されていれば設定完了です。

UiFlowでM5StickC Plusの初期設定

「UiFlow」を使用したビジュアルプログラミングの方法も以下のリンクで紹介してます。

最新版UIFlowの使い方。初期設定から動作確認まで詳しく紹介
M5Stack CORE2,StickC,ATOM LITE等でビジュアルプログラミング(ブロックプログラミング)の開発環境UIFlowを使うための使い方を詳しく紹介します。

8.サンプルプログラム(コピペ)

全ての端子機能を確認するためのサンプルプログラムを以下に準備しました。

本体ボタンと外部入力による「Lチカ」やアナログ入力、アナログ出力、ブザー出力、液晶表示、バッテリー残量表示等の基本的な動作が確認できます。

本体だけでも一部の動作確認はできますが、下画像のように「LED」や「抵抗」「ボタンスイッチ」を接続することで全ての端子の動作確認ができます。
M5StickC Plusとボタンスイッチの接続

サンプルプログラムの動作については以下のようになります。

G26のアナログ出力とG36のアナログ入力を接続して、本体から出力された電圧を本体で読み取って液晶画面に表示します。

本体ボタンAまたは外部ボタン赤を押すと、本体LED赤が点灯しアナログ出力電圧が増えます。
本体ボタンBまたは外部ボタン青を押すと、外部LED青が点灯しアナログ出力電圧が減ります。

電源ボタン(PWR)を利用して、短押し(1秒以下)でブザーが高音で鳴り、長押し(1秒以上6秒以下)でブザーが低音で鳴ります。

LEDは「抵抗内蔵LED」の青色を使用してます。
抵抗は510Ωを使用してますが1kΩ程度~10kΩ程の抵抗であれば何でも良いです。
ボタンスイッチは「M5Stackテクノロジー」社の「デュアルボタンユニット」です。

「抵抗内蔵LED」と「デュアルボタンユニット」については以下のリンクで詳しく紹介しています。

LED(発光ダイオード)の使い方。Lチカでの動作確認方法
LEDが登場するまで光源としては白熱電球が主流でした。白熱電球は電気を熱に変えて光りますがLEDは+と-の電気が結合する時のエネルギーで光り、電気を直接光に変換するため発光効率が非常に良いです。
スイッチ(操作用)の使い方。便利なスイッチユニットについても詳しく紹介
スイッチとは「開閉器」とも呼ばれ電気の通り道をつないだり開いたりするものです。 スイッチには人が操作して動作する「操作スイッチ」と、状況によって動作する「検知スイッチ(センサー)」があります。 ここでは「操作スイッチ」について紹介します。

サンプルプログラムは以下になります。「コピペ」して書き込んでください。

※下コード(黒枠)内の右上角にある小さなアイコンのクリックでコピーできます。

#include <M5StickCPlus.h>
/* M5StickC Plus端子仕様
  G0 :入力/出力/アナログ入力(無線使用時無効、内部で1kΩでプルアップ)
  G36:入力/ ―  /アナログ入力
  G25:入力/出力/アナログ入力(無線使用時無効)/デジタル出力
  G26:入力/出力/アナログ入力(無線使用時無効)/デジタル出力
  G32:入力/出力/アナログ入力/Groveコネクタ(SDA)
  G33:入力/出力/アナログ入力/Groveコネクタ(SCL)
*/
// 端子割り付け
#define IN0 32  //入力端子
#define IN1 33
#define OUT0 0  //出力端子
#define ADC0 36 //アナログ入力端子
#define DAC0 26 //アナログ出力端子

// 変数設定
float ad_val;   //アナログ入力値格納用
float da_val;   //アナログ出力値指定用
float v_in = 0; //アナログ入力電圧換算値
float v_out = 0;//アナログ出力電圧換算用
int btn_pw = 0; //電源ボタン状態取得
float battery;  //バッテリー残量表示用

// 初期設定 -----------------------------------------
void setup() {
  M5.begin(); //(LCD有効, POWER有効, Serial有効)

  // 入出力ピン設定
  // 入力設定
  pinMode(IN0, INPUT_PULLUP); //入力設定(プルアップ)
  pinMode(IN1, INPUT_PULLUP);

  // 出力設定
  pinMode(OUT0, OUTPUT);      //出力設定(外部LED青)
  pinMode(10, OUTPUT);        //本体LED赤
  pinMode(2, OUTPUT);         //本体ブザー
  digitalWrite(OUT0, HIGH);   //出力(外部LED青)初期値
  digitalWrite(10, HIGH);     //本体LED初期値OFF(HIGH)
  digitalWrite(2, HIGH);      //本体ブザー初期値OFF

  // アナログ入力設定
  pinMode(ADC0, ANALOG);      //アナログ入力

  // アナログ出力設定
  pinMode(DAC0, OUTPUT);      //出力に設定
  dacWrite(DAC0, 0);          //初期値0設定

  // G36とG25は同時使用不可。使っていない方は以下のようにフローティング入力にする
  gpio_pulldown_dis(GPIO_NUM_25);
  gpio_pullup_dis(GPIO_NUM_25);

  // 液晶表示初期設定
  M5.Lcd.fillScreen(BLACK); //背景色
  M5.Lcd.setRotation(1);    //画面向き設定(USB位置基準 0:下/ 1:右/ 2:上/ 3:左)
  M5.Lcd.setTextSize(1);    //文字サイズ(整数倍率)
  M5.Lcd.setTextFont(4);    //フォント 1(8px), 2(16px), 4(26px)
                                     //6(36px数字-.:apm), 7(7セグ-.:), 8(75px数字-.:)
}
// メイン -----------------------------------------
void loop() {
  M5.update();                //本体ボタン状態更新
  M5.Beep.update();           //ブザー状態更新(M5.Beep.toneで指定した発音時間が経過していたらOFFする)

  // 本体ボタン、外部ボタン入力処理
    //ボタンA または 外部スイッチ赤が押されている かつ アナログ出力255より小さいなら
  if ((M5.BtnA.isPressed() || digitalRead(IN0) == 0) && da_val < 255) {
    digitalWrite(10, LOW);    //本体LED赤点灯
    da_val++;                 //アナログ出力 +1
  } else {                    //そうでなければ
    digitalWrite(10, HIGH);   //本体LED赤消灯
  }
    //ボタンB または 外部スイッチ青が押されてる かつ アナログ出力0より大きいなら
  if ((M5.BtnB.isPressed() || digitalRead(IN1) == 0) && da_val > 0) {
    digitalWrite(OUT0, LOW);  //外部LED青点灯
    da_val--;                 //アナログ出力 -1
  } else {                    //そうでなければ
    digitalWrite(OUT0, HIGH); //外部LED青消灯
  }
  // ブザー処理
  if (btn_pw == 2) {          //電源ボタン短押し(1秒以下)なら
    M5.Beep.beep();           //ブザー初期値(周波数:4000, 発音時間:100ms)で鳴らす
  }
  if (btn_pw == 1) {          //電源ボタン長押し(1秒以上6秒以下)なら
    M5.Beep.tone(440, 100);   //ブザー低音(周波数, 発音時間ms)で鳴らす
  }

  // 電源ボタン状態取得(1秒以下のONで「2」1秒以上で「1」すぐに「0」に戻る)
  btn_pw = M5.Axp.GetBtnPress();

  // アナログ入力処理
  ad_val = analogRead(ADC0);    //アナログ入力値を取得
  v_in = ad_val * (3.3 / 4095); //3.3Vへ換算

  // アナログ出力処理
  dacWrite(DAC0, da_val);       //アナログ出力実行
  v_out = da_val * (3.3 / 255); //3.3Vへ換算

  // バッテリー残量(MAX約4.2V、限界電圧3V)パーセント換算表示
  battery = (M5.Axp.GetBatVoltage() - 3) * 90;  //バッテリー残量取得、換算
  if (battery > 100) {                          //換算値が100以上なら
    battery = 100;                              //100にする
  }
  // LCD表示処理
  M5.Lcd.setTextFont(4);  //フォント
  M5.Lcd.setCursor(5, 5);  M5.Lcd.setTextColor(RED, BLACK); //座標設定(x, y)//(文字色, 背景)
  M5.Lcd.printf("LED_RED   : %d", digitalRead(10));           //本体LEDの状態表示

  M5.Lcd.setCursor(5, 30); M5.Lcd.setTextColor(BLUE, BLACK);
  M5.Lcd.printf("LED_BLUE : %d", digitalRead(OUT0));          //本体LEDの状態表示

  M5.Lcd.setCursor(5, 55); M5.Lcd.setTextColor(WHITE, BLACK);
  M5.Lcd.printf("ADC : %01.2fv  ( %04.0f )", v_in, ad_val);   //アナログ入力値表示

  M5.Lcd.setCursor(5, 80);
  M5.Lcd.printf("DAC : %01.2fv  ( %04.0f )", v_out, da_val);  //アナログ出力値表示

  M5.Lcd.setCursor(5, 105);
  M5.Lcd.setTextColor(ORANGE, BLACK);
  M5.Lcd.printf("PWR_BTN : %d", btn_pw);                      //電源ボタン状態取得

  M5.Lcd.setTextFont(2);  //フォント
  M5.Lcd.setCursor(200, 118); M5.Lcd.setTextColor(GREENYELLOW, BLACK);
  M5.Lcd.printf("%.0f%%    ", battery);                       //バッテリー残量表示

  delay(100);   //遅延時間(ms)
}

ブザーの制御についての主なコマンドは以下になります。

M5.Beep.update();                 //ブザー状態更新(M5.Beep.toneで指定した発音時間が経過していたらOFFする)
M5.Beep.tone(周波数, 発音時間);    //設定周波数、発音時間でブザーを鳴らす
                                  //発音時間経過後 M5.Beep.update()が実行されたらOFFする

M5.Beep.tone(周波数);           //設定周波数でブザーを鳴らし続ける
M5.Beep.mute();                   //ブザーをOFFにする

M5.Beep.setBeep(周波数, 発音時間); //beep()で鳴らすブザーの設定
M5.Beep.beep();                   //setBeep()で設定したブザーを鳴らす(内部的にはtoneが実行される)

今回ブザーを鳴らすのに電源(PWR)ボタンを利用しています。

電源ボタンは個別に電源管理IC「AXP192」で管理されていて、以下のコマンドを実行する事で電源ボタンの状態が取得できるのでこれを利用しています。

M5.Axp.GetBtnPress(); //1秒以下のONで「2」1秒以上で「1」すぐに「0」に戻る
「AXP192」で1秒以下のONはスリープからの復帰に使用されます。
6秒押すと電源OFFで2秒押すと電源ONします。

液晶表示については、液晶表示ライブラリ「LovyanGFX」を使うと、日本語表示や「チラツキ」を防止する「スプライト」が簡単にできるため、以下のリンクで詳しく紹介しています。

lovyanGFXの使い方 M5Stackシリーズ編 基本的な表示(日本語、図形)方法
lovyanGFXで簡単日本語表示、データ更新やグラフ表示で「チラツキ」を抑えるための「スプライト」について、コピペ用サンプルプログラムでCORE2,M5Stick Plus,GRAYで表示して詳しく紹介します。

「入出力端子」や「ボタン」「アナログ入力」の使い方、「C言語」については以下のリンクで詳しく紹介しています。

「Arduino」コマンドによるプログラミングについては → こちら
「C言語」については → こちら

9.動作確認

サンプルプログラムの動作確認をしてみましょう。
各部品を接続してプログラムを書きこむと本体液晶表示は下画像のようになります。

M5StickC Plusのサンプルプログラム動作確認

液晶画面の表示内容について
・LED_RED:本体LED赤の状態表示「1:消灯/0:点灯」
・LED_BLUE:外付けLED青の状態表示「1:消灯/0:点灯」
・ADC:アナログ入力電圧換算値0~3.3V(アナログ入力値 0~4095)
・DAC:アナログ出力電圧換算値0~3.3V(アナログ出力値 0~255)
・PWR_BTN:電源ボタン状態表示「1:長押し/2:短押し」
・右下(%):バッテリー残量表示


M5StickC Plusのサンプルプログラム動作確認

本体ボタンAを押すと本体LED赤が点灯し「LED_RED:」表示が「0」になります。
押している間「DAC:」表示のアナログ出力値が1づつ増えていき「ADC:」表示も読み取ったアナログ入力値に応じて変化します。

M5StickC Plusのサンプルプログラム動作確認

本体ボタンBを押すと出力端子「G0」が「LOW」になり外付けのLED青が点灯し 「LED_BLUE:」表示が「0」になります。
押している間「DAC:」表示のアナログ出力値が1づつ減っていき「ADC:」表示も読み取ったアナログ入力値に応じて変化します。

M5StickC Plusのサンプルプログラム動作確認

外部スイッチを付けている場合は、赤ボタンと本体ボタンAは同じ動作になります。

M5StickC Plusのサンプルプログラム動作確認

外部スイッチを付けている場合は青ボタンと本体ボタンBは同じ動作になります。

M5StickC Plusのサンプルプログラム動作確認

「電源(PWR)ボタン」を長押し(1秒以上)すると「PWR_BTN」表示が「1」になり、ブザーが鳴ります(低音)
6秒以上の長押しで電源OFFになります。
電源ONは2秒の長押しです。

M5StickC Plusのサンプルプログラム動作確認

「電源(PWR)ボタン」を短押し(1秒以下)すると「PWR_BTN」表示が「2」になり、ブザーが鳴ります。(高音)

今回アナログ出力端子とアナログ入力端子を接続して表示させました。
アナログ出力は分解能が256でアナログ入力は4096のため、多少の表示誤差で近い数値になるかと思ったのですが結構大きな差になりました。
どちらの精度が悪いのか内部電源が安定してないのか、この辺りはまた調べたいと思います。

10.まとめ

「M5StickC Plus」は「M5StickC」のバージョンアップ品で、本体のサイズはそのままで液晶表示が大きくなりブザーが搭載されて、バッテリー容量も80mAhから120mAhに大きくなりました。

開発環境は「C言語」ベースの「Arduino IDE」「PlatformIO」やビジュアルプログラミングの「UiFlow」を使ってプログラミングを行うことができます。

個人的に「M5StickC」の時は液晶が小さく入出力端子も少ないため、主に「M5Stack GRAY/BASIC」や「ATOM LITE」+格安液晶の「SSD1306」の組み合わせで使っていましたが、バージョンアップされた「M5StickC Plus」の液晶は非常に見やすく、端子の使用範囲も広がったため今後はメインとして使用することになりそうです。

価格も3000円程と性能のわりにお手頃なので、これからプログラミングを初めてみる人の最初の1台としてもとても良いと思います。

ATOM LITE プログラミング初心者におすすめ超小型で高機能!
マイコンボードはRaspberry Pi、Arduino、M5Stack等がありますが、一通りやってみてそれぞれの良さはあるものの「最初に何を?」と聞かれたらATOM LITEが一番お手軽♪プログラミング初心者におすすめ
SSD1306有機ELディスプレイOLEDの使い方、簡単2画面表示の方法も紹介
SSD1306はライブラリを準備してI2C通信と簡単なコマンドで表示可能。ATOM LITEやESP32、Arduino等に表示器を追加したい時に手軽に安価で実現できるのでとても便利です。

コメント

  1. nanasi より:

    表の中の25と26が逆だと思います

  2. It’s difficult to find experienced people about this topic,
    however, you sound like you know what you’re talking about!
    Thanks

    • logikara より:

      Thank you for your comment!
      Few people may be involved in this, but I think many of them need this information.
      I will continue to do my best to disseminate information for such people.

タイトルとURLをコピーしました