2022/1/30
初版
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を使用する:
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
以上