M5Scratch
M5Scratch=M5S*+Scratch
https://gyazo.com/f097eed30e54ec7b8c5754c122c8c899
はじめに
M5StickC/M5Stack Gray(M5S*)とScratch 1.4とのやり取りを実現
Scratchで、IMU(加速度、ジャイロ、地磁気)やボタンを使って遊びたいよね?
Scratchから、M5S*に命令したいよね?
M5StickC/M5Stack Grayってなぁに?
M5StickC/M5Stack Gray(M5S*)は、M5Stackの仲間
今回使った機能は、以下の通り
カラーディスプレイ
加速度+ジャイロ+(Grayのみ)地磁気を取れるIMU(6軸(M5StickC) or 9軸(Gray))
温度計
ボタンスイッチ
M5StickCだと、LED
Faces(Gray)だと、キーボードなど
https://gyazo.com/3bd3ff2eecf9f7f0292e13999b139bcf
M5StickC(左), M5Stack Gray(Faces;中央), M5StickV(右上), M5Stack Basic(右下)
Scratchってなぁに?
https://gyazo.com/b7a86c844cc5f87f51061fb0ea30a465
Scratch: ブロックベースのプログラミング環境
プログラミング教育で利用
ブロックベース: ブロックを積んでプログラミング
意外と変態的; オブジェクト指向, 並列処理, イベント(メッセージ)ベース
プログラムのシェア/フォーク(リミックス)のためのプラットフォームやSNS
Scratch 1.4では、Scratch Remote Sensor Protocolを使って、TCP/IP (ポート42001)経由でデータのやり取りが可能
テキストベースのプロトコル
メッセージのやり取り:broadcast "メッセージ"
変数のやり取り:sensor-update "変数" "値" ...
https://gyazo.com/dbe77008ce27cc6616058aed1e1e01be
M5Scratch=M5S*+Scratch
Arduino IDEで作った、M5S*とScratchとのやり取りを行うプログラム
Scratch側には、改造は不要
https://gyazo.com/9741ce6147d44b2fa6f1e90409a2cee1
M5S*からScratchへ
https://gyazo.com/d82ef86ac02c78b40359b55c56afc25b
Scratch側で、受け取るデータやイベントを実装
データやイベントを送る部分は、Arduino IDEで実装
IMU(加速度(ax,ay,az)+ジャイロ(gx,gy,gz)+(Grayのみ)地磁気(mx,my,mz))
IMUの値を使った、なんちゃって方位(heading)やpitch, roll, yawなど
温度センサー(temp)
ボタン(BtnA,BtnB,BtnC)、キーボード(Key_*)
ScratchからM5S*へ
https://gyazo.com/aa0275f36c90597d0752f850be7a00d2
M5ScratchのArduino IDEで、受け取るデータやイベントを実装
データやイベントを送る部分は、Scratchで実装
sensor-update
色データ(r,g,b): 円の色を指定
座標(x,y): 猫の座標
角度t: 猫の向いている方向
ズームz: 猫の大きさの倍率
LED点滅(l): LEDを点灯/消灯(1/0)
文字列(s): 文字列sを画面に表示
broadcast
broadcast内容を画面に表示
デモ
https://www.youtube.com/watch?v=Y_04pz9JAas
デモのコードは、以下の通り。
https://gyazo.com/7641b3bb5740ef235fa1967747194df7
以下は、古いバージョンなので、表示がショボいです。
https://www.youtube.com/watch?v=q7X0UfZw_FE
https://www.youtube.com/watch?v=-cRbGXrUhyI
https://www.youtube.com/watch?v=gp1fFfODoBw
おわりに
M5S*とScratchを使って遊んでみました
今回、M5StickC用とM5Stack Gray用のソースを一本化できたので、更新が楽になりました
M5S*とScratchで遊ぶと、とっても楽しい!!
みなさんもいっしょに遊んでみませんか?