スタンプ型デバイス(0) ~ATOM Matrixでデバイスを試作する~

####まえがき
小型のスタンプ型デバイスを製作することになったため，小型マイコンを用いることになった
原案はこんな感じです😋
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/563922/224a1550-33f6-4672-5aa3-11e18f3f2782.png)
![シャチハタデバイス2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/563922/54c1e462-348f-f109-7431-2355396871cb.jpeg)
![シャチハタデバイス3.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/563922/e07d519d-f2ec-1a6e-d916-0cec23176c7c.jpeg)



今回使用するマイコンはATOM Matrix
Arduinoと同様の方法で利用するための必要な手順をまとめる

######初期設定は[こちら](https://qiita.com/onetechnologycompany/items/f006b9170c7337ef082b)のArduino IDEのインストールを参照
######1.Arduino IDEを設定
やり方は[こちら](https://docs.m5stack.com/#/en/arduino/arduino_development)を参照

######2.Demoを試す
[こちら](https://qiita.com/jksoft/items/fa92281f90bcbc32929c)の記事を参考にデモを動作させた．
※ポートが選択できない状態の場合ATOM Matrixを接続したまま，一度コンパイラを落として再度立ち上げると反応します
####本題
今回はそもそもの内部的要素をつくり，プロトタイプ1号を完成させる
ON/OFFスイッチが欲しいのでそれを作製していく

#####機器概要
・ATOM Matrix
・なんでもいいので01が変更できるスイッチ
・ジャンパーピン数本
・(必要なら)わにぐちクリップ

####手順
#####1.回路作製
pinを確認してスイッチと接続，回路を作る
今回はPIN25に接続，もう一方はG(Ground)
![IMG_20200730_170737.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/563922/e9da456e-cab7-e87b-d466-a3e28541f88b.jpeg)
![IMG_20200730_170756.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/563922/e9492aac-24d9-bfd4-3ac5-b86bde5dbb82.jpeg)

#####2.Arduino IDEでコーディング
今回はBluetoothによる接続でON/OFFの認識を送信する

```c++:test.ino
#include "M5Atom.h"
#include "BluetoothSerial.h"

BluetoothSerial SerialBT;

int digitalIn = 25; //PIN：25 or 33(32)

void setup() {
  M5.begin(true, false, true); //(PINの有効化，，LEDの有効化)
  Serial.begin(115200);
  SerialBT.begin("ESP32"); //Bluetooth時の名前
  pinMode(digitalIn,INPUT_PULLUP);  //PINの設定(pinの番号,入力信号として扱う)
}

void loop(){
 /*実行できているか確認のためLEDを白く発光*/
  int x, y;
  for (x = 0; x < 5; x++){
    for (y = 0; y < 5; y++){  
      M5.dis.drawpix(x, y, 0xffffff);
    }
  }

  if(digitalRead(digitalIn) == 0){  //0 = PUSH
    //Serial.println("ON"); //シリアルモニタに出力
    SerialBT.println("ON"); //send ON
  }else{
    //Serial.println("OFF"); //シリアルモニタに出力
    SerialBT.println("OFF"); // send OFF
  }
  delay(100); //動作安定のため0.1秒のディレイを入れておく
  M5.update(); //Buttonの入力結果を反映させるために必要
}
```

コードをコンパイル＆書き込み出来たら実行されるので確認
※USB接続していないと給電されない
PCの設定からATOM Matrixとペアリングする
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/563922/fa8b655b-b3f6-5801-5b5e-04223c73a02a.png)
ツール/シリアルポートからBluetoothにあたるポートを選択
ここではUSB有線接続の際はCOM6，Bluetooth接続はCOM8となっていた
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/563922/5a7090cf-99f7-b86b-6d8f-322b8934d771.png)
#####実行例
<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">ON/OFFスイッチ <a href="https://t.co/PNHHL8ptfZ">pic.twitter.com/PNHHL8ptfZ</a></p>&mdash; ゆーま (@sagirin262) <a href="https://twitter.com/sagirin262/status/1288763441847480320?ref_src=twsrc%5Etfw">July 30, 2020</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

#####今後の展望
ここから作りたいデバイスのためにしなければならないことは
- UnityとのBluetooth or Wi-Fi接続
- UnityでのON/OFF機能の実装
- 加速度センサ，座標位置の設定，値の取得
などですね
ちょこちょこ頑張ります...😅😅

####参考
・[ATOM MatrixのセンサとIO](https://qiita.com/jksoft/items/40082d680558cefb71cd)
・[M5Atom Matrix導入ガイド](https://www.youtube.com/watch?v=XKe5zDj5SsI)
#####コード類
・[M5StickCのButtonクラスを調べてみた](https://lang-ship.com/blog/work/m5stickc-button-class/)
・[M5StickC非公式日本語リファレンス](https://lang-ship.com/reference/unofficial/M5StickC/)
・[ボタン管理(Button)](https://lang-ship.com/reference/unofficial/M5StickC/Class/Button/)
・[BUTTON](https://docs.makerfactory.io/m5stack/api/button/)
・[Arduino 日本語リファレンス](http://www.musashinodenpa.com/arduino/ref/)
#####Bluetooth
・[ESP32でserial bluetooth接続](https://qiita.com/keitasumiya/items/5b4961de169299e902db)
・[arduinoとAndroidスマホをBluetooth連携させる](https://qiita.com/kotarotaro_A/items/e34aa54f459e1cf1f7dc)
・[Arduinoを始めよう！（3）Bluetooth編](https://thinkit.co.jp/story/2013/03/06/3995)
・[ArduinoUnoをBluetooth通信で遠隔Lチカしたい](https://qiita.com/dyson8910/items/3ec456c47ae9584d17e7)