【増席!】M5Stackユーザーミーティング vol.2 の登壇資料です。 https://m5stack.connpass.com/event/90997/
これから話す内容は、初心者向けです!
View Slide
いにしえの呪文川原 英明Facebook: kawahara.hideaki.0204Twitter: @sapi_kawaharaBlog: https://kawahara-ci.hatenablog.com/
自己紹介• 川原 英明• 埼玉県川越市在住• 使用言語は、アセンブラ、C言語、C++、Perl、PHP、Java、Ruby、Python、JavaScript(jQuery、Vuejs)と、何でもやる人です。• 現在、Webエンジニアなので、C言語系は、コンシューマーゲーム機での開発を、プレイステーション2を最後に、15年ぶりです。• そう、M5StackはC++が開発言語なのです!
いにしえの呪文 その1
C言語が、いにしえの呪文
ディスってません!• #includeを久しぶりに使った。• ポインターを久しぶりに使った。• voidを久しぶりに使った。• 構造体を久しぶりに使った。• uint8_tのような無符号整数を久しぶりに使った。• プロトタイプ宣言を久しぶりに使った。• 呼び出すメソッドを、ファイルの後ろの方に書くとコンパイルエラーになる。• 少々、変わっているクラス定義。
いやいや、クラス定義についてPHPerやPerl Mongerには言われたくない!
なにせ15年ぶりなので!• クラス定義の最後は}; です!• 変数やメソッド毎に、アクセス修飾子(public,private,protected)を書くのでは無く、セクション毎に書く。(public: とか書いて、その後にまとめて書く)• 使わないけど、デストラクターはクラス名の前に ~ を付けた名前のメソッドで定義する。• そして、とにかく、クラスはファイルの前の方に書く!
恥ずかしながら・・・• Web系エンジニアのみの方は、C++をやるときに、この辺りに、ひっかかる可能性があります。• というか、自分がひっかかりました、30分ぐらい悩みました。• この辺りは、C++ クラス とかで検索すれば、解決します。
ところで
M5Stackの話を、全然してない!!
いにしえの呪文 その2
M5Stackのtoneで音を鳴らしてたとき、音の感じが、とても懐かしく感じました!
懐かしく感じた物• ガラケーの着信音
いにしえのガラケー• Webサイトは、基本的にメニューから行く。• 画面はcHTMLというので作った、しょぼい画面です。• 音は単音か3重和音だけど、音色は無く矩形波ぐらい。• その当時、ガラケーで流行った物があります。• 着メロ本です。
着メロ本とは?• 昔、着信音は手で入力してました。• 本屋に沢山置いてありました。• 数字の羅列です。
M5Stackで再現• やっている事は、しょぼいです。• スマホでbluetoothで接続し着メロデータを送信してます。• M5Stackはデータを受け取り、着メロデータをtoneの形式に変換して鳴らしているだけです。• bluetooth関連はサンプルからコピペしました。• M5Stackのbluetoothを有効にして、getValueすると、std::string形式で取得できます。• それを、toneで使える形に変換して、配列(std::vector)に入れます。• あとは、配列を読んで、toneで鳴らすだけです。• bluetooth関連は、意外と簡単に実装できます。
着メロのルールはタイプA• 休符 0• ド 1• レ 2• ミ 3• ファ 4• ソ 5• ラ 6• シ 7• ド 8• 二回は#• 三回は♭• データは、こちらです。• 5 3 3 4 2 2 1 2 3 4 5 5 5 0 5 3 3 3 4 2 2 2 1 3 5 5 3 3 3 0
苦労した点• メソッドやクラスはファイルの前の方に書くなどC言語の特性に少々悩んだ。• このMacBook Proは少々古く、対応しているbluetoothは2.1だったので、作ったのはいいが確認する方法に悩む。• 結果として、iPhoneと汎用的なbluetoothアプリを入れて確認しました。•M5Stackの音がうるさい!
あんまり、M5Stackの話をしてませんが、清聴ありがとうございました!