macsbug

Just another WordPress.com site

esp32 spaceShooter with M5STACK

leave a comment »

esp32-spaceShooter ゲームを M5STACK に移植しました。   2019.01.12

SHOOTボタンで スタート と シュート。LEFTボタンで左。RIGHTで右移動です。
敵を全て破壊すると点数が加わり 次のステージに進む事ができます。

GitHub の 「HailTheBDFL」 に 「esp32-spaceShooter」 があります。

ESP32 用で Arduino IDE で使用できます。
基の仕様は ESP32 + ILI9314 TFT Display で M5STACK ( ILI9314 TFT ) に
移植致しました。 初心者にも解りやすいスケッチですので 勉強にもなる
かと思います。「HailTheBDFL」 に感謝致します。


準備:
esp32-spaceShooter-v1_0 」を ダウンロードします。


移植:合計 24箇所で 削除 13箇所、変更 3つ、追加 8箇所 です。

1. 削除:もしくはコメントアウト( // ) します。:13箇所です。
_ 01. #include <Adafruit_GFX.h>
_ 02. #include <Adafruit_ILI9341.h>
_ 03. #define TFT_CS 19
_ 04. #define TFT_DC 22
_ 05. #define TFT_MOSI 23
_ 06. #define TFT_CLK 26
_ 07. #define TFT_RST 21
_ 08. #define TFT_MISO 25
_ 09. Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC, TFT_MOSI,
_     TFT_CLK, TFT_RST, TFT_MISO);
_ 10. touchAttachInterrupt(27, left, threshold); //Touch input
_ 11. touchAttachInterrupt(12, right, threshold);
_ 12. touchAttachInterrupt(14, up, threshold);
_ 13. ttouchAttachInterrupt(15, select, threshold);

2. 変更:DISPLAYを Adafruit_ILI9341 から M5STACK用に 3つ変更します。
_ 14. void setup() の「tft.begin(); 」 は 「 M5.begin(); 」に変更します。
_ 15. 全ての「 tft 」を 「 M5.Lcd 」に変更します。
_   Arduino IDE の「編集」の「検索」で 「検索テキスト = tft. 」,
_   「 置換テキスト = M5.Lcd. 」, 「 全て置換 」で 一気に変更できます。
_ 16. 「 tft.setRotation(3); 」は「 M5.Lcd.setRotation(0); 」:3 から 0
_   にします。これは 画面の向きです。

3. 追加:M5STACK用に 7箇所追加します。
_   場所:宣言部の最初の行:#include <Adafruit_ILI9341.h> のあった所。
_ 17. #include <M5Stack.h>
_   場所:setup() の1番下に追加します。ボタンをプルアップします。
_ 18. pinMode(BUTTON_A_PIN, INPUT_PULLUP);
_ 19. pinMode(BUTTON_B_PIN, INPUT_PULLUP);
_ 20. pinMode(BUTTON_C_PIN, INPUT_PULLUP);
_   場所:void loop() {  の最初の行に追加します。ボタン操作です。
_ 21. if(M5.BtnA.isPressed()) { left () ;}
_ 22. if(M5.BtnB.isPressed()) { right () ;}
_ 23. if(M5.BtnC.isPressed()) { select() ;}
_   場所:void loop() {  の最後の行に追加します。
_      ボタンやスピーカーを使用した時は M5.update を入れます。
_ 24. M5.update();


コントロール:
_ 原作のコントロールは ESP32 の Touch input 端子を使用しています。
_  Touch input 端子は TOUCH 0 – TOUCH 9 まで 10個あります。
_  GPIO 0,2,4,12,13,14,15,27,32,33 です。
_ コントロールの内容は up, down, left, right, select の 4つです。
_ M5STACK の 全面フロントにある 左から A , B , C ボタンに置き換えます。
_ ボタンは 3つですので left = A, right = B, select = C にしました。
_ 結果:スタート と シュートは C ボタンです。左移動は A, 右は B です。
_   SHOOTのCボタンは ボタンを痛めない様に 押している時は連射する
_   様に「isPressed」にしました。

_ ボタン操作:
_  if(M5.BtnC.isPressed()) { select() ;}
_      C ボタンを「押している間は」 次の命令(select)を実行。
_  if(M5.BtnC.wasPressed(); { select() ;}
_      C ボタンを「押した時に」   次の命令(select)を実行。
_  他に、read, isReleased, wasReleased, pressedFor, releasedFor,
_     lastChange の便利な命令があります。


感想:
スケッチは 解り安い内容で 各自のアイデアを盛り込める事が出来そうです。
音を追加したり 画像をもっとリアルで綺麗に 変更できるかと思います。
高速画像操作では M5STACKのサンプルにある「TFT_Flash_Bitmap」の
drawIcon命令は サンプルを動かすと高速である事が体験できます。
M5STACK には多様なライブラリーがありますので これをマスターすると
素晴らしい表示が出来るかと思います。

音:SHOOT の音を追加して雰囲気をだそうとしましたが、うるさくなり
_ 逆に雰囲気を下げるのでやめました。


 

広告

Written by macsbug

1月 12, 2018 @ 2:14 pm

カテゴリー: ESP32

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。