2020/01/01(WED) | 冬休みの自由研究A |
---|---|
正月でも自由研究は続きますw
本当は年末から続いてますが・・・ で、先日手に入れたマイコン M5Stickを研究中。 ↓これね ![]() で、開発環境を整えて プログラムの基本をある程度覚えたので 応用編へ。 以前、スピードメーターを作るのに使った磁力センサー ↓これね ![]() 水温計を作るのに使った温度センサー ↓これね(加工したまんまですけど・・・) ![]() これらをM5Stickに接続します。 ![]() ↓こんな感じに接続します。 ![]() で、プログラムするわけですが 本体の上面のボタン(M5と書かれた部分ね)と 右側面のボタンも使います。 ![]() ここからちょっとプログラムの話。 Arduinoの環境でC言語で書いてます。 まずはヘッダと宣言部分 各変数とか関数のプロトタイプを宣言しています。 ![]() 初期化処理 起動時に1回呼ばれます。 31行目と32行目で 接続しているPINを入力と設定をしています。 34行目で、G36つまり磁力センサーがつながっているところ 入力割り込みが入ったときに呼ぶ関数を設定しています ![]() ループ関数です。 繰り返し呼ばれるところ キー入力とか表示とか温度センサーからの入力を処理してます。 ちなみに上面のボタン(M5と書かれたボタン)を押すと 磁力センサーのカウンタと温度の表示を切り替えます。 右側面のボタンは磁力センサーのカウンタをクリアします ![]() ![]() 磁力センサーの入力割り込みです。 磁石が近づいた時に呼ばれます。 カウンタをカウントアップだけしています。 ![]() 画面に出力する処理 磁力センサーのカウンタを表示と 温度センサーの表示を行います。 ![]() んで、実行してみると 磁石を近づけると見事にカウントアップします。 ![]() M5のボタンを押すと温度表示です。 ![]() ちょっとAD値が癖があって 補正してます。 それも正しいか不明ですが・・・ 精度はさほど良くないようです。 そもそもで整数で計算しているところで 誤差を許容していますが・・・ これだけじゃこのマイコンの機能を使いきってませんが・・・ WiFiとかBluetooth(BLE)も積んであるから その辺を活用できるとさらに面白いんですが・・・ まずは、入力割り込みとAD値取得が出来ました。 AD値が取れたってことは YPVSインジケーターもアクセル開度モニタも作れます。 さらにそれらをWiFiとBluetoothで飛ばすのも夢じゃない。 研究はまだまだ続く |