2018年11月2日(金)~4日(日)に台北市 華山1914創意文化園區にて開催されたMakerFaire台北2018に、Nico-Techのメンバーとして出展しました。初日は事実上の準備日だったので実質週末の2日間です。
出展報告として、自分たちNico-Techの展示がどんな感じだったかを紹介します。去年長机3つ分だったブースが、今年は倍の長机6台分にパワーアップしました。
続きを読む2018年11月2日(金)~4日(日)に台北市 華山1914創意文化園區にて開催されるMakerFaire台北2018に、Nico-Tech*1のメンバーとして出展します。初日は関係者向けのメディアデー(?)なので実質週末の2日間です。*2
公式サイトに出展者一覧と会場の配置図が出ていました。私たちNico-Techは、中4B館(会場に正面から入って左側の建物)の1階、右奥の方です*3。けっこう大きいブースをもらっています✨
続きを読む先週末ですが、城陽市歴史民俗資料館で開催されている特別展「CONTINUE ~“ゲーム”90年の歴史~」を見に行ってきました。
新聞でも紹介されていますね。と言うか私自身も記事を見てこの特別展を知ったのですが^^;
懐かしの「ゲーム&ウオッチ」など並ぶ 京都、変遷たどる企画展 : 京都新聞
続きを読むMoco(あるいはMocoLUFA)というのは、Arduino UNOのUSBドライバを書き換えることでArduino UNOをUSB-MIDIデバイスとしてPCに認識させることができる、その書き換え用のファームウェアのことで、製作者さんによって公開されています。Mocoを用いることで、USB MIDIキーボードとか、MIDI音源とかを自作することができるようになります。
公式サイトなどに導入方法が載っているのですが、2018年7月現在、すでに情報が古く、ツールのDL先がリンク切れになっていたり*1してちょっとハマったので、備忘録として導入までの手順を書き残しておきます。ちなみに私が環境構築したPCはWindows 10で、Arduino UNOはリビジョン3です。
*1:Atmel社がMicrochip社に買収された影響
趣味でゲームパッドを扱うプログラムをPythonで書いているのですが、改めて調べているとWindows向けのゲームコントローラーはXBOXのコントローラーがデファクトスタンダードの様になっているようです。従来のゲームパッドはボタン数もレイアウトもコントローラー毎に異なっているので、標準となるコントローラーがあると都合が良いというのは理解できます。そして気になるのが、XBOXのコントローラーはXInputと呼ばれる方式(API)が採用されており、昔ながらのゲームパッドはDirect Inputと呼ばれる方式であるという点です。
私はDirect Inputのゲームパッドしか持っていなかったのですが、プログラムを作る立場としてはXInputのゲームパッドもとりあえず購入して動作確認をするべきだろうということで、色々検討した結果 EasySMX EG-C3071有線ゲームコントローラーというのを買いました。XBOXの公式コントローラーではなくこちらの製品を購入した理由は、XInputのモードとDirect Inputのモードを切り替えて使えるので、XInputが使えなかった場合でも最悪ゴミにはならないだろうと思ったからです。あと値段が安かったからです。
このコントローラーはPCに刺すとPCモード、PS3に刺すとPS3モード、Android に刺すとAndroidに刺すとAndroidモードで動作するらしいです。で、Windows上では刺した直後はXInputのモードで動作しますが、真ん中のHOMEボタンを5秒長押しすることでDirect Inputのモードに切り替えることができます。さらに、Direct InputのモードではHOMEボタンを(短く)押すことでさらにスティックの挙動がことなるDigitalモードに切り替えられます。どのモードで動作しているかはコントローラ下部のLEDで確認できます。
と、いう訳で。自分のプログラムで動作させるために、各モードでどのボタンが何番目のボタンとしてPCが認識するのかを調査しました。
↑これがXInputモードです。XInput対応のコントローラーであれば、これと全く同じボタン配置で、10ボタン、5アナログ軸のコントローラーとして使えるはずです。ちなみに、PythonのPygameライブラリではXInputとDirect Inputの違いを内部で吸収してくれていて、とくに意識せずに同じAPIを用いて使用することができました。
PS3/PCモード。PS3のコントローラとの互換性のためだと思いますが、XInputモードとはところどころ異なります。RLのトリガー(RT/LT)がアナログ入力ではなくデジタル入力扱いになりました。HOMEボタンが12番として入力を検知できますが、押すとこのコントローラーのモードが切り替わってしまいます・・・。
PS2/PC Digitalモード。十字キーと左スティックの入力が入れ替わり、右スティックがボタン入力になりました。
Windowsでの調査結果は以上ですが、Linux(UbuntuおよびRaspbian)にこのゲームパッドを接続したところ、Androidモード(!)として動作したので、その入力も調査しました。(個人的に、LiniuxでもPCモードでの動作を期待していたけど・・・)
なぜか15ボタン扱いで、2、5、12のボタンが存在しない・・・?Androidの標準的なコントローラー(?)との互換性の関係でしょうか?SHANWAN Android Gamepadという名前で認識されるところに秘密がありそうですが、深く考えずに調査を終了します。
余談ですが、Amazonのページには連射機能搭載って書いてある気がするけど、無いよね?
M5Stackっていう最近話題のIoTプロトタイピングモジュールを買いました。私が勝ったのはBasicの方ではなく、9軸IMU搭載モデルの方です。理由は、Basicの方がSwitch Scienceで在庫切れだったからです。*1
まだ少し遊んでみただけですが、これは良いものですね。この大きさでフルカラー液晶に簡単に描画できて、ボタンが3つついていて、スピーカーから音が出せて、しかもバッテリーを搭載しているという。これだけでもかなり遊べます。その上さらに入出力端子が豊富で、拡張モジュールで機能追加できて、BT/WiFiも使えるとは・・・。
で、このモジュールはArduino IDEを拡張する形でのプログラミング環境構築も比較的簡単にできるのですが、少しハマったので、備忘録としてここにメモを残しておきます。ハマった理由は、上の写真に写っている説明書のSoftware Installationに書いてある方法を試したら、「http: //www.M5Stack.com/download/package_m5stack_index.json ファイル署名の照合に失敗しました。ファイルは無視されました。」って表示されて上手くいかなかったっていう一点に尽きるのですが・・・。*2
実際の環境構築は、公式サイトのGetting Startedに書いてある方法でほぼ行けました。
Windows 10 Universalと書かれているものではなく、その下の「Download for Windows 7/8/8.1/10」と書かれたところの「Download VCP (5.3 MB) (Default)」をクリックしてダウンロード。解凍して出てきた「CP210xVCPInstaller_x64.exe」(64bit版OSの場合)を実行してインストール。
サイトにはgitを使ってファイルを取得する方法が乗っているけど、Arduino IDEのフォルダ(デフォルトでは「C:\Users\(ユーザ名)\Documents\Arduino」)の下に手動で「hardware\espressif\esp32」と3階層のフォルダを作って、esp32フォルダの下にGitHub - espressif/arduino-esp32: Arduino core for the ESP32にあるファイルを全部ダウンロードして置いてもOK*3。その後、toolsフォルダの中にある「get.exe」を右クリックして「管理者として実行」する。あとは、ファイルのダウンロードなどが終わるまで待ち続ける。
Arduino IDEを起動して、「スケッチ」->「ライブラリをインクルード」->「ライブラリを管理」をクリック。「M5Stack by M5Stack」を探し出して「インストール」をクリック。
以上で導入完了。私の場合、この間によくわからずにPCを再起動させてみたり、ESP8266_Spiramっていう別のライブラリをインストールしてみたりしてしまったけど、たぶん関係なかったはず。
あとは、いつものArduinoと同じ要領で。「ツール」メニューのボード:からボード一覧を開いて「M5Stack-Core-ESP32」を選択、M5StackをUSBケーブルでPCにつないで、「ツール」->「ポート」に出てきたポートを選択、「ファイル」->「サンプル」にあるサンプルプログラムを書き込んで遊ぶ!ちなみに、前述の説明書に書いてあるFunction Listの関数名はところどころ間違っているぽいですよ?!