« LovyanGFX-Display ライブラリを使用したスケッチをplatformioでビルドする | トップページ | Wio_ExtFlashLoad(WriteSampleMenu.ino)スケッチをplatformioでビルドする »

2022年1月31日 (月)

uncannyeyesスケッチをplatformioでビルドする

2022/1/30
初版

uncannyeyes sketch build by platformio

uncannyeyes sketch build by platformio

概要

M5Stack Electronic Animated Eyes」、 「M5StickC Electronic Animated Eyes」のuncannyeyesスケッチをplatformioでビルドする。
両目バージョンは、M5Core2/M5Stack-Fireで共通ソース化する。
片目バージョンは、M5StickC/M5stickCPlusで共通ソース化する。
platformio.iniの内容で、対応ボードを切り替えることになる。

両目バージョン

M5Stack-Fireは、オリジナルのソースで動作するが、
M5Core2でも動作するように共通化する。

以下の手順をダウンロード/ビルド/書き込みする:

# platformioの環境に入る # プロジェクト・ディレクトリを作成する mkdir M5Stack_uncannyEyes cd M5Stack_uncannyEyes wget https://macsbug.files.wordpress.com/2019/05/m5stack_uncannyeyes.zip_-1.pdf mv m5stack_uncannyeyes.zip_-1.pdf m5stack_uncannyeyes.zip unzip m5stack_uncannyeyes.zip mv M5Stack_uncannyEyes src cd src mv screenshotToConsole.ino screenshotToConsole.ino.bu gedit M5Stack_uncannyEyes.ino # M5Core2のために以下のパッチをかける

パッチ内容:

#56行目付近: #include <M5Stack.h> → #ifndef M5C2 #include <M5Stack.h> #endif #ifdef M5C2 #include <M5Core2.h> #endif ------------------------------------- #88行目付近: #define WINK_L_PIN 39 // Pin for LEFT eye wink button #define BLINK_PIN 38 // Pin for blink button (BOTH eyes) #define WINK_R_PIN 37 // Pin for RIGHT eye wink button → #ifndef M5C2 #define WINK_L_PIN 39 // Pin for LEFT eye wink button #define BLINK_PIN 38 // Pin for blink button (BOTH eyes) #define WINK_R_PIN 37 // Pin for RIGHT eye wink button #endif #ifdef M5C2 // M5Core2 #define WINK_L_PIN 32 // Pin for LEFT eye wink button #define BLINK_PIN 32 // Pin for blink button (BOTH eyes) #define WINK_R_PIN 33 // Pin for RIGHT eye wink button // for eyes enable status int eyesStatus = 3; // 1:left 2:right 3:both #endif ------------------------------------- #122行目: M5.Speaker.begin(); → #ifndef M5C2 M5.Speaker.begin(); #endif #129行目付近: pinMode(37, INPUT);pinMode(38, INPUT);pinMode(39, INPUT); → #ifndef M5C2 pinMode(37, INPUT);pinMode(38, INPUT);pinMode(39, INPUT); #endif #ifdef M5C2 pinMode(32, INPUT);pinMode(33, INPUT); #endif ------------------------------------- #153行目付近: if (e == 0){ M5.Lcd.setAddrWindow ( 1,0,128,128);} // set left window if (e == 1){ M5.Lcd.setAddrWindow (191,0,128,128);} // set right window → #ifndef M5C2 if (e == 0){ M5.Lcd.setAddrWindow ( 1,0,128,128);} // set left window if (e == 1){ M5.Lcd.setAddrWindow (191,0,128,128);} // set right window #endif #ifdef M5C2 switch(eyesStatus) { case 3: // both if (e == 0){ M5.Lcd.setAddrWindow ( 1,0,128,128);} // set left window if (e == 1){ M5.Lcd.setAddrWindow (191,0,128,128);} // set right window break; case 1: // left M5.Lcd.fillRect(191,0,128,128,TFT_BLACK); // clear oposite side if (e == 0){ M5.Lcd.setAddrWindow ( 1,0,128,128);} // set left window break; case 2: // right M5.Lcd.fillRect(1,0,128,128,TFT_BLACK); // clear oposite side if (e == 1){ M5.Lcd.setAddrWindow (191,0,128,128);} // set right window break; default: break; }; #endif ------------------------------------- #423行付近: //screenshotToConsole(); } → //screenshotToConsole(); #ifdef M5C2 //<<============================================ // touch button int keyCode = 0; TouchPoint_t pos = M5.Touch.getPressPoint(); if (pos.y > 240) { // Yが240以上はボタンのエリア if (pos.x < 109) { keyCode = 1; // Left Button } else if (pos.x > 218) { keyCode = 3; // Mid Button } else if (pos.x >= 109 && pos.x <= 218) { keyCode = 2; // Right Button } if (keyCode != 0) { // ボタンを押した場合には75ミリ秒振動モーターを動かす M5.Axp.SetLDOEnable(3, true); delay(75); M5.Axp.SetLDOEnable(3, false); //Serial.println(keyCode); // for Debug } if (keyCode == 1) eyesStatus = 1; // Left Button if (keyCode == 3) eyesStatus = 2; // Mid Button if (keyCode == 2) eyesStatus = 3; // Right Button } //Serial.println(eyesStatus); // for Debug //>>=========================================== #endif } -------------------------------------

続き:

cd .. # platformioの設定ファイルをダウンロードする wget https://raw.githubusercontent.com/espressif/arduino-esp32/master/tools/partitions/default_16MB.csv gedit platformio.ini # 後節にあるplatformio.iniの内容をビルドするボードに応じて作成する # ビルド&書き込み pio run -t upload

動作説明:
1.オリジナル版(M5Stack版)
オリジナルのものは、左ボタン、右ボタンを押すと、それぞれの目を瞑る(消える)。
中央ボタンを押すと両目を瞑る(消える)。
2.M5Core2版
オリジナルと同じ操作性は実装が難しかったので、
下の3つのタッチボタンで表示モードの切り替えにした。
左ボタン、右ボタンを押すとそれぞれの片目を表示するモードになり
中央ボタンは両目を表示するモードになる。

片目バージョン

M5StickCは、オリジナルのソースで動作するが、
M5StickCPlusでも動作するように共通化する。

以下の手順をダウンロード/ビルド/書き込みする:

以下のダウンロードurlがあるが、NOT_FOUNDになり使用できない。 https://macsbug.files.wordpress.com/2019/05/m5stickc_uncannyeyes_left.zip_.pdf https://macsbug.files.wordpress.com/2019/05/m5stickc_uncannyeyes_right.zip_.pdf そこで両目バージョンのプロジェクトを流用する: (1)両目バージョンのプロジェクト・ディレクトリをコピーして  片目バージョンのプロジェクト・ディレクトリ「M5SCx_uncannyEyes」を作成する。 (2)「M5StickC Electronic Animated Eyes」(https://macsbug.wordpress.com/2019/05/08/m5stickc-electronic-animated-eyes/)の末尾のスケッチ・ソースをコピーして、 プロジェクト・ディレクトリのM5Stack_uncannyEyes.inoの内容を差し替える。 (3)以下のようにパッチをかける: 変更前: #include <M5StickC.h> → 変更後: #ifdef M5STICK_C #include <M5StickC.h> #endif #ifdef M5STICK_CP #include <M5StickCPlus.h> #endif (4)platformio.iniをM5StickC,M5StickCPlus用に差し替える。 (5)「pio run -t upload」でビルド&書き込みする。

動作説明:
正面の[M5]ボタンを押すと目を瞑る(消える)

platformio.ini

上のスケッチをビルドするには、ボードに応じて、
以下のplatformio.iniを使用する:

M5Core2用:

[env:m5core2] platform = espressif32 board = m5stack-core2 framework = arduino upload_speed = 2000000 monitor_speed = 115200 board_build.partitions = default_16MB.csv build_flags = -DM5C2 -DCORE_DEBUG_LEVEL=4 -DBOARD_HAS_PSRAM -mfix-esp32-psram-cache-issue lib_deps = https://github.com/m5stack/M5Core2.git https://github.com/FastLED/FastLED ;https://github.com/m5stack/M5Core2/blob/master/examples/core2_for_aws/ArduinoECCX08.zip ;lovyan03/LovyanGFX adafruit/Adafruit BMP280 Library @ ^2.5.0 adafruit/Adafruit Unified Sensor @ ^1.1.4 m5stack/UNIT_ENV @ ^0.0.2 https://github.com/earlephilhower/ESP8266Audio.git tobozo/M5Stack-SD-Updater@^1.1.8 lib_ldf_mode = deep+

M5Stack-Fire用:

[env:m5stack-fire] platform = espressif32 board = m5stack-fire framework = arduino monitor_speed = 115200 lib_ldf_mode = deep+ upload_speed = 2000000 upload_protocol = esptool board_build.partitions = default_16MB.csv build_flags = -DM5STACK_FIRE -DCORE_DEBUG_LEVEL=4 -DBOARD_HAS_PSRAM -mfix-esp32-psram-cache-issue lib_deps = m5stack/M5Stack@^0.3.9 ;lovyan03/LovyanGFX adafruit/Adafruit BMP280 Library @ ^2.5.0 adafruit/Adafruit Unified Sensor @ ^1.1.4 m5stack/UNIT_ENV @ ^0.0.2 https://github.com/earlephilhower/ESP8266Audio.git tobozo/M5Stack-SD-Updater@^1.1.8

M5StickC用:

[env:M5StickC] platform = espressif32 board = m5stick-c framework = arduino build_flags = -DM5STICK_C monitor_speed = 115200 lib_ldf_mode = deep+ lib_deps = m5stack/M5StickC@^0.2.5 ;m5stack/M5StickCPlus @ ^0.0.5 tinyu-zhao/FFT @ ^0.0.1 ;https://github.com/earlephilhower/ESP8266Audio.git earlephilhower/ESP8266Audio@^1.9.5

M5StickCPlus用:

[env:M5StickCPlus] platform = espressif32 board = m5stick-c framework = arduino build_flags = -DM5STICK_CP monitor_speed = 115200 lib_ldf_mode = deep+ lib_deps = ;m5stack/M5StickC@^0.2.5 m5stack/M5StickCPlus @ ^0.0.5 tinyu-zhao/FFT @ ^0.0.1 ;https://github.com/earlephilhower/ESP8266Audio.git earlephilhower/ESP8266Audio@^1.9.5

参照情報

terminal関連:
Bootterm – a developer-friendly serial terminal program

M5Core2関連:
M5Stack Core2のタッチパネル研究
M5Stack Core2のGPIO調査
M5Stack Core2を使ってみました。

platformio関連:
arduinoフレームワーク用platformio.ini集
Building Core2 FactoryDemo in PlatformIO
VSCodeとPlatformIOでM5Stack Core2開発
M5Stack Core2とVSCode + PlatformIOとでM5Stackプログラミングを始めてみた。

Arduino-IDE関連:
Arduino IDE environment - M5Paper
Arduino IDEのインストールと設定 (Windows, Mac, Linux対応)

M5Stackファミリ関連:
M5Core2 Arduino Install
M5Paper Arduino Install
M5CoreInk Arduino Install
M5Stamp-PICO Arduino Install
M5Stamp-C3 Arduino Install
Wio-Terminal/ESP8622/ESP32ボードを共通のスケッチで動かす(NTP-CLIENT編)
Wio-Terminal/M5Atom/ESP8622/ESP32ボードを共通のスケッチで動かす(v2)(STARWARS編)
Wio-Terminal/M5Atom/ESP8622/ESP32ボードを共通のスケッチで動かす(v2)(MQTT編)
Wio-Terminal/M5Atom/ESP8622/ESP32ボードを共通のスケッチで動かす(v2)(REST-API編)
Wio-Terminal/M5Atom/ESP8622/ESP32ボードを共通のスケッチで動かす(v2)(OSC編)

その他;
Wio Electronic Animated Eyes

以上

|

« LovyanGFX-Display ライブラリを使用したスケッチをplatformioでビルドする | トップページ | Wio_ExtFlashLoad(WriteSampleMenu.ino)スケッチをplatformioでビルドする »

PlatformIO」カテゴリの記事

uncannyeyes」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




« LovyanGFX-Display ライブラリを使用したスケッチをplatformioでビルドする | トップページ | Wio_ExtFlashLoad(WriteSampleMenu.ino)スケッチをplatformioでビルドする »