macsbug

Just another WordPress.com site

Archive for 3月 2018

Make M5STACK’s PROT Module

leave a comment »

M5STACK の PROT Module を作りました。         2018.03.15

M5STACK Store:PROT Module


.
準備:
_ DIY : M5STACK PROT Module:合計:215円。
_ ebay の Screw を除き 国内の部品で製作しました。
_ PROT Frame は 3D Printer OBJET で製作しました。
_ 3D Printer : MakerBot Replicator の場合は 2.35g ( 7円 ) で 合計 180円です。
_ M5STACK の PROT Module ($9.9) には 叶いませんが 自由な物が作れます。
_ 基板は 0.3mm厚 と 1.0mm厚があります。

No NOMEN 販売店 価格 Note
1  PROT Frame  自作    42円 OBJET
1  PROT Frame  自作     7円 Replicator
2   0.3mm厚基板 C Type  72x47mm  秋月電子通商  120円 0.3mm厚
2   1.0mm厚基板 C Type  72x47mm  秋月電子通商  120円 1.0mm厚
3  ピンヘッダ (オス) 2×30 (60P)  秋月電子通商    25円
4  M2 Hex Head Tapping Screw (4 ea )  ebay    28円
 —————————————  —————-  ——-
TOTAL  215円 OBJET
TOTAL  180円 Replicator

 

廉価版部品リスト:追記 2013.03.16

No NOMEN 販売店 価格 Note
1  PROT Frame  自作     7円 Replicator
2   1.0mm厚基板 C Type  72x47mm  秋月電子通商  120円 1.0mm厚
3  ピンヘッダ (オス) 2×30 (60P)  秋月電子通商    25円
4  Screw : 2×5 タッピン A ナベ ( 4 ea )  西川電子部品      6円 100個150円
 —————————————  —————-  ——-
TOTAL  158円 Replicator

 
コネクター:
_ 2 x 30 Pin ストレートを 2 x 15 Pin にして使用します。
_ M5STACK のピンは オスとメスの2つを装着しますが 手間や部品費を
_ 考慮して ストレートのピンを使用しました。
_ 出力側のピンは ハンダ後に 10mm の長さがあり ピンソケットタイプで
_ 接続が可能です。

 
Screw:M2 Size の Hex Head Tapping Screw は 秋葉原で入手できず ebay から
_   購入しました。
_   国内では 秋葉原 西川電子部品にある 「タッピンAナベ」「 2 x 5 」
_   のプラスネジが使用できます。( 1袋 100個 150円 )
_   M2 に対するネジ穴は 1.8mm では少し固く 2.0mm では 程よく軽く
_   ねじ込めます。ただし 何度もねじ混みますと 緩めになってきます。


.
工作:

1. PROT Frame:3D Printer で作ります。
_ Screw を止めるネジ穴の場所は 基板の穴の位置に合わせます。
_ 後日談:検討を重ねると ネジ穴は M5STACK の PROT と同じにした方が良いです。

2. 基板カット:赤線部分を切ります。M2 Screw用の穴も空けます。M-BUS側。

基板とコネクターの位置。M-BUS側。
___

3. PCB と コネクター:
0.3mm厚の基板:ハサミで切れる基板で加工が楽です。
_ 2 x 30 Pin コネクターは 半分 ( 2 x 15 ) にします。
_ 短いピンは M-BUS 側にします。
_ M-BUS とコネクターの高さ調整は PC Board 2枚(0.6mm)を入れます。
_ この高さにより PROT Board コネクター と M5STACK M-BUS
_ との距離と接触が最良になります。
_ 注意:M-BUS と PROT Module コネクターの位置は微妙です。
_    ハンダ付け時は M-BUS との位置も確認してハンダ付けします。
_    位置決めは コネクターをフレームに取り付け、M-BUS にコネクター
_    を差し込んで 数カ所ハンダ付けし 残りは外してハンダ付けします。
_    M5STACK の メスのコネクターに負担を与えないようにします。
1.0mm厚の基板:万能ハサミなら切れます。
_ 1.0mm厚基板 CType(72x47mm) の場合、Spacer は不要です。

4. PROT Frame に取り付け:画像の向きに Screw で止めます。

OBJET + 0.3mm PCB + M2 Hex Head Tapping Screw:215円。

Replicator 2X + 1.0mm PCB + 2×5 Tapping Screw:158円。


.
感想:
M5STACK を綺麗に仕上げるにはケースが必要です。3D Printer での基本のデーター
_ が出来ましたので 短時間に低価格で応用ができるかと思います。
M5STACK で使用している オスとメスのコネクター(少し長め) を ebay から
_ 購入しましたが 基板の表と裏にハンダ付けするのが面倒ですので やめました。
_ M5STACK に使用しているコネクターは L型で 基板上に乗せてハンダ付け
_ してあります。製作時にコネクターの位置が ずれないかと感心しています。
スタック:M5STACKは スタックする為に同じ場所に コネクターをそろえています。
_ 製作時には基板両面にコネクターを付ける事になります。
_ 基板に余裕があれば オスとメスのコネクターの位置は 別な場所でも可能かと
_ 思っています。


 

広告

Written by macsbug

3月 15, 2018 at 10:42 am

カテゴリー: ESP32, Uncategorized

M5Stack-SD-Updater

leave a comment »

Micro SD にアプリを入れ メニューから ロードすると アプリが動作します。 2018.03.12

使用方法:
ボタン: INFO = 名前とサイズ , LOAD = アプリをロード , > = アプリ選択。
M5STACKを起動すると メニューにアプリが表示されます。
> ボタン:アプリを選択します。
LOAD ボタン:選択したアプリをロードして アプリが起動します。
メニューに戻す:電源ボタン+Aボタン -> 電源ボタンを離す -> Aボタンを離す。
INFOボタン:アプリの名前とサイズを表示します。

効果:
M5STACK 1台で複数のアプリの動作が可能になります。
M5STACK へのアプリの書込みは不要になります。
他の M5STACK や 他の人に渡して直ぐ使用する事ができます。
Micro SD に 沢山のアプリを入れて持ち歩く事ができます。

作成者はフランス パリ在住の tobozo 氏です。tobozo 氏 からは
当ブログ Audio Spectrum Display with M5STACK ( 2017.12.31 ) で
ESP32_Spectrum_Display_03.ino」を M5STACK に移植させて頂きました。
この原型となる 「M5Stack-SAM」は Github Tomáš Suchan の tomsuch 氏の作品です。
そして「ArduinoJson」は  Github Benoît Blanchon の bblanchon 氏による 作品です。
tobozo 氏 , tomsuch 氏 , bblanchon 氏 に感謝致します。

YouTube:M5Stack Apps loaded from SD Card


.
準備と手順:tobozo の M5Stack-SD-Updater に 説明があります。
_ memu.bin の作成と アプリを bin タイプにコンパイルし Micro SD に保存します。
_ メニューのアプリ(M5Stack-SD-Menu.ino) を M5STACKへ書き込みます。

Micro SD の用意:
01.  FAT32 Formatの Micro SD を用意します。(通常の市販品です)

Library の DownLoad:
02.  tobozo から M5Stack-SD-Updater を DL します。
03.  M5StackSAM を DL します。
04.  ArduinoJSON を DL します。
05.  上記の3つのフォルダーを Arduino IDE の Library へ入れます。

「menu.bin」を作成:
06.  M5Stack-SD-Updater 内の example 「M5Stack-SD-Menu.ino」を
_ 「コンパイルしたバイナリーを出力」します。
_ 出力先は 「M5Stack-SD-Menu.ino」と 同じ場所に
_ 「M5Stack-SD-Menu.bin」と言う名前で作られます。
_ 

07.  名前「M5Stack-SD-Menu.bin」を 「menu.bin」に変更します。
08.  「menu.bin」を Micro SD に保存します。

アプリをコンパイルし bin を作成:
09. Arduino IDE で 使用する アプリ を用意します。
10. #include <M5Stack.h> の下に #include “M5StackUpdater.h” を追加します。

#include <M5Stack.h>
#include "M5StackUpdater.h" 

11. setup() 内の

M5.begin(); 
Wire.begin(); 

の下に

if(digitalRead(BUTTON_A_PIN) == 0) {
   Serial.println("Will Load menu binary");
   updateFromFS(SD);
   ESP.restart();
}

を追加します。
この定型文は 「M5Stack-SDLoader-Snippet.ino」 に書かれています。
12. アプリを「コンパイルしたバイナリーを出力」で 「xxx.bin」 を出力します。
13. 「xxx.bin」 アプリを Micro SD に保存します。
14. 同様に 必要なアプリを bin にして Micro SD に保存します。

M5Stack-SD-Menu.ino を書き込む:
15. 「M5Stack-SD-Menu.ino」 を M5STACKへ書き込みます。
_  M5STACK は Micro SD 内にあるアプリを表示します。

以上で Micro SD と M5STACKの準備は終了です。


.
表示機能:
リストのアイコンに jpg画像を表示できます。最大200 x 100 です。
jsonファイルを記載します。{“width”:xxx, “height”:yyy}

SD ファイルの最大サイズは 255 の様です。
_ M5Stack-SD-Menu.ino:
_ #define MAX_FILES 255 // this affects memory


.
感想:
M5STACKの発売時から 待ち望んでいた機能が実現し 衝撃的な日となりました。
Micro SD内にアプリを複数保存し 希望のアプリを起動できます。
INFO に メモなどを表示できると便利かと思います。
M5STACKの機能が強化され、再度 tobozo 氏 に感謝致します。

Micro SDへアプリを収集し どの M5STACKでも 即動作する事と Micro SD を
必要な人へ渡す事ができ 簡単に使用する事が出来ます。とても便利になります。
この事から ESP32ボードの設計は SD SLOT の装備が必要条件になります。

アプリの bin タイプが動作する事、setup 内で updateFromFS(SD); と ESP.restart();
でメニューに戻す方法に感心致しました。

メモ:3/12 M5StackUpdater.h 内にバグがありましたが 直ぐ訂正が実施されました。
_ 変更内容:114行目:”menu.bin” -> “/menu.bin”
_  Arduino での SDファイル操作 “/” は不要ですが ESP32 では “/” が必要です。

M5STACK 一口メモ:
スピーカーのノイズを消す方法:
_ 方法:setup() に dacWrite(25, 0); // Speaker OFF // を入れます。
_ 現象:ADC:analogRead() 時に Speaker (GPIO25) からノイズがでます。

画像の方向を正しく表示する方法:
_ 方法:画像横:tft.setRotation(6);
_    画像縦:tft.setRotation(7);
_ 現象:これまでの ILI9341 Library ( TFT_eSPI.h 等 ) を使用すると
_    画像横:tft.setRotation(0); は 画像がが左右反転する。
_    背景:恐らく M5STACK の TFT の配線は従来と異なると思われます。
_     その為に robo8080氏の M5Stack_SokobanfillImage ルーチン
_     作成されたと思われます。
_ 他の画像問題:
_  現象:これまでの ILI9341 Library ( TFT_eSPI.h 等 ) を使用すると
_     画像表示の範囲が 320×240 で表示せず 240×240 程度の範囲にしか
_     表示しません。


 

Written by macsbug

3月 12, 2018 at 3:00 pm

カテゴリー: ESP32

FACES version of M5Stack_sokoban

leave a comment »

robo8080氏の M5Stack_sokoban を FACES 用に追加させて頂きました。2018.03.11
操作は GameBoy Panel の START ボタンと CROSS ボタン( U,D,L,R )で行います。

M5Stack_sokoban は MhageGH氏の倉庫番を robo8080氏が
M5Stack に移植されたものです。robo8080さん ありがとうございます。
オリジナルは MhageGH氏の Sokoban on esp32 and ILI9328 です。
MhageGH氏 と robo8080氏 に感謝致します。


.
M5STACK FACES GameBoy Panel 用にコントロールを追加します。
追加内容:M5Stack_sokoban  の M5Stack_Sokoban.ino に
2箇所 追加します。

1. 「void setup() {」, M5.begin(); の下に 追加します。

Wire.begin();             // add faces
pinMode(5, INPUT_PULLUP); // add faces

2. 「bool SerialAction(Dir* dir, bool* restart) {」の下に追加します。

if(digitalRead(5) == LOW) {           // add faces controll
  Wire.requestFrom(0X88, 1);          // request 1 byte from keyboard
  while (Wire.available()) { 
    uint8_t key = Wire.read();        // receive a byte as character
    if (key == 127){*restart = true;return true;} // start    
    if (key == 254){*dir = UP;      return true;} // up
    if (key == 253){*dir = DOWN;    return true;} // down
    if (key == 251){*dir = LEFT;    return true;} // left
    if (key == 247){*dir = RIGHT;   return true;} // right
  }
}


.
感想:
同時期に MhageGH氏の倉庫番を移植していましたが 問題点が2つありました。
robo8080氏は fillImage ルーチンを作成し画像表示の問題をクリヤーされました。
他に uint16_t buffer100x100[100][100]; を使用し処理されています。
robo8080氏の素晴らしい手法に学ぶものがあり感謝致します。


Written by macsbug

3月 11, 2018 at 9:31 am

カテゴリー: ESP32

Make a case of M5STACK

with 2 comments

M5STACK のケースを作りました。               2018.03.10

M5STACK の PROT Frame と Rear Panel を3Dプリンターで 製作しました。
6.5mm幅 と 13mm幅 を組み合わせて 好みの厚さを作り 綺麗なものが作れます。

3Dプリンターは 3種類 (objet, uPrint, Replicator) を使用しました。
左:OBJET 6.5mm幅 , uPrint 13mm幅 , OBJET 13mm幅 , uPrint 4mm幅 Rear Cover
右:OBJET 4mm幅 Rear Cover , OBJET 6.5mm幅 PROT Frame

左:uPrint:PROT Frame + Rear Cover + Hex Screw
右:OBJET PROT Frame + PROT Board + Tapping Screw
ネジ:Hex Screws( 六角スクリュー)


.
3Dプリンター:

 3D Printer
方式 型番 精度 ( mm ) 価格 メモ
光造形  OBJET Eden 260V  0.016, 0.030  1430万円  図面通りのサイズ
積層  uPrint  0.254, 0.330    268万円  ほぼ図面通り
積層  MakerBot Replicator 2x  0.4      30万円  独自の図面必要


.
準備:Hex Screws ( M3 と M2 )
_ ebay:regan0331 store から Hex Screws (六角スクリュー) を購入しました。
_ フレームやパネルの厚みに応じて 長さにあったネジを使用します。
_ 注意:長いネジを使用すると 全面のパネルまで届き 全面パネルを傷つけたり
_  破損する場合があります。

.M3 304 Stainless Steel Hex Socket Kit Set + Box
_ 内容:6,8,10,12,14,16,18,20,22,25,30 mm
_ $16.39  1739円。
_ 他 M3 Stainless Steel Hex Screws DIN912
_ 長さ 35, 40, 45, 50 mm も購入。
_ 20個 255〜383円。
.M2 4mm Hex Tapping Screw
_ 304 Stainless Steel
_ 50個  349円。
.
_ スクリュー部:現品は 4mm で4山です。
_ M5STACK は 5mm で5山です。

 


.
参考部品:
1. M5Stack Community:Review “PROTO”:PROT Moduleの詳細。
2. M5Stack Community:Custom Prototype Board:オリジナルバージョン。
3. EosyEAD:M5Stack enhanced prototype board:オリジナルボード。PROTO v1.1。
4. MADGRoW TECH:M5Stack Proto Module Proto Board:$16.50

  M5STACK:PROT Mudule:upper M5STACK:PROT Mudule:Lower
   

 


.
製作:CAD で 図面を作成し 3種類の3Dプリンターによる出力結果です。
_ オリジナル同様に噛み合わせの為の 凸 凹 を付け 位置合わせが可能です。

 OBJET:PROT Frame 6.5mm:upper  OBJET:PROT Frame 6.5mm:Lower

 

 uPrint:PROT Frame 6.5mm:upper  uPrint:PROT Frame 6.5mm:Lower

 

 Replicator:PROT Frame:upper Replicator:PROT Frame:Lower

 

 OBJET:Rear Panel 4mm:upper  OBJET:Rear Panel 4mm:Lower

 

 uPrint:Rear Panel 4mm:upper  uPrint:Rear Panel 4mm:Lower

 

 Replicator:Rear Panel:upper Replicatort:Rear Panel:Lower
   

 

 OBJET:PROT 13mm:Lower  uPrint:RPROT 13mm:upper
   

 

 


.
参考:
M5Stack-3DPrintFiles:Rev 2018.03.14
M5STACK の カバーは 2018/3/14 現在5つアップされています。
_ 以下は ケース噛み合わせの為の 凸 部分 がありません(No convex)。
_ その為に 組み合わせた時に ケースが ずれます。

Title File Type Auther memo
PROT  STL  M5Stack  No convex
Prot board case for M5Stack  STL  Thingiverse:Karl Norway  No convex
m5stack-open-6pin  STL  Thingiverse:uzukiken  No convex
Case with Tripod Thread  STL  SWITCH SCIENCE  No convex
Proto_v1.1 3D  STL  Zazardev  No convex

 


.
結果:

OBJET Eden 260V:光造形式
_ CAD の 図面サイズ通りにできます。
_ 速度:PROT Frame 6.5mm幅:21分。
_  1列に複数並べますと ほぼ同じ時間でできます。
_  複数作成すると効率的です。
_ 材料費:PROT Frame 6.5mm幅:110円
_ 材料費:REAR Cover 2mm厚:200円
_ メモ:材料費が高い為に 底がある物や 厚みのある物は費用がかかります。

uPrint:積層式
_ 積層式では 最高の精度です。
_ 微細な所でサイズがずれます。ABS材は温度による影響があります。
_ 台は新しい物やクリーニングをしないと浮き上がる場合があります。
_ ABS材が台に定着しないと再度製作が必要で時間がかかります。
_ 速度:PROT Frame 6.5mm幅:24分
_ 材料費:PROT Frame 6.5mm幅:42円
_ 積層式は最小幅を考慮して隙間の出ない図面を引くと良い結果が出ます。
_  

MakerBot Replicator 2x:積層式
_ 細かな図面に対し 精度が低く 図面通りに出力せずデコボコがでます。
_ サイズのズレや汚さは 0.4mm 精度ですから 当然です。
_ 出力精度に合わせた単独の図面が必要になります。
_ SETTINGS の Layer Height は 0.20mm にします。
_ SETTINGS の Support は ON にします。
_ SETTINGS の infill は 100% にします。
_ 速度:PROT Frame 6.5mm幅:2.2g:25分
_ 材料費:7円
_ 便利さ:あまり綺麗にできませんが 手元にあるプリンターですので
_  即 必要な時に便利です。

費用:材料費以外に機械の価格 又は 使用量、交通費等の諸費用があり
_  材料代より高く 合計費用は 高くなります。
_  低費用にする為には 設計による材料の低減、用途に応じたプリンター
_  の選択を使用すると 良いかと思います。


.
感想:
_ ケース:M5STACKの良さはケースが綺麗で見栄えの良い物が出来る事です。
_  全体の価格は高いですが ケース作成の手間を考えると と言う価格でしょうか。
_  ケースが気軽に使用できる環境になると 物作りが簡単で速くなります。
_ デザイン:基本サイズを目指し 機能を持たせる周囲の穴は作りませんでした。
_  必要に応じて図面に追加して製作しようかと思っています。
_ Hex Screw:六角スクリューは 何故か見栄えが良いです。
_ ケース等の製作は時間がかかりますので、製品が欲しいです。
_ 図面と試作:ここまで出来るまで軽く50個は試作しました。
_ ケースがピッタリはまり 六角スクリューで締めると気持ちのいい物ですね。
_ データー:GitHubの使用方法が解りませんので stlファイルを示す事ができません。

M5STACK の PROT Module:
_ この製品は 見れば見る程 実に良く出来ています。
_ 噛み合わせの 凸 や 凹 の サイズ、ネジ(M2)止めのサイズと位置、
_ ワイヤーやアングルの為の Holes、空気を流す為の Grid が装備されてます。
_ 基板や部品を装着する為の 厚み。6.5mm の意味が凄いです。
_ 裏蓋も凝りに凝ってデザインされています。
_ M5STACK の製品を眺めていると M5STACK TEAM の素晴らしさが伝わってきます。

_ M5STACK Store と ケース:出来れば Front Panel、Front Frame, PROT Frame
_  , Rear Cover の プラスチック部品を販売して欲しいです。


 

Written by macsbug

3月 9, 2018 at 2:56 pm

カテゴリー: ESP32, Uncategorized

PACMAN with M5STACK

leave a comment »

PACMAN ゲームを M5STACK FACES に移植しました。     2018.03.07


.
Pacman は Arduino Due 用に Github CrazyLabz! の DrNCXCortex氏 が作成しました。
YouTube:Pacman on Arduino Due
github:Pacman Game for Arduino Due
その ソースを基に @Tw_Mhage氏 が ESP32 + 240×320 ILI9328 TFT Display へ移植しました。
Qiita:ESP32でゲームを作ってみた:MhageGH / esp32_ILI9328_Pacman

移植方法:@Tw_Mhage氏の esp32_ILI9328_Pacman を M5STACK FACES用に変更します。
スケッチで注目する技術は 画像表示に たった1行の命令で構成されている事です。
DrNCXCortex氏 と @Tw_Mhage氏 に 感謝致します。


.
準備:
M5Stack Store
M5STACK BASIC :$35.00
M5STACK FACES Pocket Computer:$89.90 ( 9498円:03/07 1$ 105.6円)。
スケッチ:esp32_ILI9328_Pacman を ダウンロードします。


.
構成:
M5STACK FACES と GameBoy Panel を使用します。
原作の画像は 320 (縦) x 240 ( 横 ) です。FACES は 240 (縦) x 320 ( 横 ) です。
FACES を縦に使用しますと 画像の縦横の変更が必要になる為に FACES を横にします。
操作は START, SELECT , CROSS key で行います。
DEMO モードがあり ボタン操作しなくとも デモ画面を見る事ができます。

FACES でなく M5STACK Basic の A,B,C ボタンでも可能ですが 3つのボタンで
6つの操作をする為にスケッチの工夫が必要になります。
方法は esp32 snake with M5STACK を参照下さい。


.
移植:以下の8つを変更します。
_ esp32_ILI9328_Pacman.ino:変更あり。
_ DrawindexedMap.h:画像表示ルーチン:変更あり。
_ centsc.h , carpal.h, font8x8.cpp:変更なし。

変更:esp32_ILI9328_Pacman.ino:
1:追加1:24行目

#include <M5Stack.h>

2:削除1:25-27行を削除:

const char ssid[] = "ESP32";
const char password[] = "esp32pass";
const int localPort = 10000;

3:削除2:53-55行を削除:

#include <SPI.h>
#include <WiFi.h>
#include <WiFiUdp.h>

4:削除3:57-61行を削除:

#define CS 5
#define RESET 17
ili9328SPI tft(CS, RESET);
WiFiUDP udp;

5:変更1:1394-1402行:setup を M5STACK用に変更します。

void setup() {
  randomSeed(analogRead(0));
  Serial.begin(115200);
  M5.begin();
  Wire.begin();
  M5.Lcd.setRotation(3);
  M5.Lcd.fillScreen(TFT_BLACK);
  pinMode(5, INPUT_PULLUP);
  delay(100);
}

6:変更2:1394-1402行:KeyPadLoop を FACES GameBoy 用に 以下2-14を追加します。

void KeyPadLoop(){
  char r;
  if(digitalRead(5) == LOW) {
    Wire.requestFrom(0X88, 1);         // request 1 byte from keyboard
    while (Wire.available()) { 
      uint8_t key_val = Wire.read();   // receive a byte as character
      if ( key_val == 191) { r = 'z';} // select
      if ( key_val == 127) { r = 'x';} // start
      if ( key_val == 247) { r = '8';} // up
      if ( key_val == 251) { r = '2';} // down
      if ( key_val == 254) { r = '4';} // left
      if ( key_val == 253) { r = '6';} // right
    }
  }
  if (r == 'z') { ClearKeys(); but_A=true; delay(300); } //else but_A=false;
  if (r == 'x') { ClearKeys(); but_B=true; delay(300); } //else but_B=false;
  if (r == '8') { ClearKeys(); but_UP=true; }  //else but_UP=false;
  if (r == '2') { ClearKeys(); but_DOWN=true; }  //else but_DOWN=false;
  if (r == '4') { ClearKeys(); but_LEFT=true; }   //else but_LEFT=false;
  if (r == '6') { ClearKeys(); but_RIGHT=true; }  //else but_RIGHT=false;
}

変更:DrawindexedMap.h:
7:削除4:16行目を削除:#include “ili9328.h”

8:変更3:46-61行:
_ word を uint16_t に変更。
_ TFT 表示:tft->drawFastHLine1 を M5.Lcd.drawFastHLine に変更します。
_ 注目:画像表示処理は 9行目の「drawFastHLine」1行で行われています。

void drawIndexedmap(uint8_t* indexmap, int16_t x, uint16_t y) {
  byte i = 0;
  uint16_t color = _paletteW[indexmap[0]];
  for (byte tmpY = 0; tmpY < 8; tmpY++) {
    byte width = 1;
    for (byte tmpX = 0; tmpX < 8; tmpX++) {
      uint16_t next_color = _paletteW[indexmap[++i]];
      if ((color != next_color && width >= 1) || tmpX == 7) {
        M5.Lcd.drawFastHLine(x + tmpX - width, y + tmpY, width, color);
        color = next_color;
        width = 0;
      }
      width++;
    }
  }
}

.
Gameboy Panel:
Gameboy Panel は ATmega328P で構成され I2C で通信しています。
アドレスは 0x88 です。

参考:
M5-hardware: M5-hardware/FACES/GameBoy.ino:U,D,L,R,A,B,s,S が定義されています。
Modules/FACES/I2C_Keyboard/:
例:CROSS Key の上は BIN = 0xFE, DEC = 254, ASCii = U です。


.
価格:
2月28日から スイッチサイエンスより M5STACK が発売されました。
_ 4640円。(4490+150):スイッチサイエンス
_ 海外との価格の比較は以下で 最安値の販売店より 1252円 程高いです。
_ AliExpress 最安値:$30.50 ( 3238円 03/09 1$ 106.1円換算 )
_ $30.50 ( 3238円 03/09 1$ 106.1円換算 ):SHENGSUN SENOR Store
_ $30.50 ( 3238円 03/09 1$ 106.1円換算 ):BETTERSHENGSUN SHENGSUN Store
_ $30.88 ( 3278円 03/09 1$ 106.1円換算 ):CFSUNBIRD Store
_ $31.50 ( 3343円 03/09 1$ 106.1円換算 ):Shop3213115 Store
_ $35.00 ( 3715円 03/09 1$ 106.1円換算 ):M5Stack Store:本家

_ M5STACK FACES:M5Stack Store との価格差は 2536円 と高いです。
_  スイッチサイエンス:価格 12034円。
_   注意:SS の FACES には サンプルが書き込まれていません。
_  M5Stack Store:価格 $89.90 ( 9498円:03/07 1$ 105.6円)。
_   サンプルには マリオが 書き込まれています。
_   輸送期間:M5STACK STORE は 2月実績では 10日で届いています。

Maker Faire Shenzhen(深セン) 2017 での価格:M5STACK BASIC 2700円
_ Maker Faire Shenzhen(深セン) 2017に行ってきました その2
_  記事中の 3/4 あたりに記載されています。
_  COREのディベロッパーキットを買いました(158元、約2,700円)。


.
M5STACK COLLECTION:Github:Parts and Circuits
_ GitHub に M5STACK のスケッチを収集した場所があります。
_ 私が移植した M5Stack-SpaceShooter, M5Stack-Tetris が掲載されています。
_  gojimmypi, Kongduino, tomsuch へのリンクも掲載されており便利です。


.
感想:
M5STACK の ディスプレーとボタンの標準装備は 工作不要で大変便利です。
特に ゲーム用の GameBoy アダプターは 作るとなると手間と多大な時間を使用します
ので最高です。

原作:DrNCXCortex氏による PACMAN のリストから学ぶ物は多く 感嘆致します。
_ メインの esp32_ILI9328_Pacman.ino は 変数の処理に多大な内容を使用し、
_ グラフィック表示の為の DrawindexedMap.h は たった1行の 「drawFastHLine」
_ で行っています。つまりスムーズに動いている画像は 横書きの線で行われています。
_ 素晴らしいコードにより 移植を容易に行なう事ができました。

_ Pacman-Arduino-Due-master は 2014年に作成され 冒頭に以下の様に書かれています。
_ /* Copyright (c) 2014 Dr. NCX (mirracle.mxx@gmail.com) */
_ /* THE SOFTWARE IS PROVIDED “AS IS” AND THE AUTHOR DISCLAIMS ALL */


.

Written by macsbug

3月 7, 2018 at 1:43 pm

カテゴリー: ESP32