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で飛ばすのも夢じゃない。 研究はまだまだ続く |