デコピンの強さの要素の一つとして指の速さがあり,透過型と反射型の光センサー2種を使って測ってみています




それぞれのセンサーで別プログラムにしているのは切り替えが面倒です。
と,ここでRaspberry Pi Picoはマルチコア(デュアルコア)だよというささやき声が聴こえてきました(^^;;;;;;;

この程度の装置に使うには牛刀っぽいPicoですが,2種のセンサー入力は扱いが少しずつ違うので別コアにし,結果の出力部は統一するのが楽そうなのでやってみました(^^)。

なお、私が使っているArduino IDE のボードマネージャは "earlephilhower/arduino-pico" です。

1.セットアップ部

デュアルコアのプログラムにはsetup1()は必須ですが,空でも良いので普通のsetup()に全部書いても特に問題はありません(^^;;;;;

なお,6行の char* は const char* にした方が良いのでしょうかね。コンパイラ?が何やらぶつくさ言います。





2.ループ部

loop()はCore0で,loop1()はCore1で並列して動きます。
実際にデコピンする透過型センサーと指の速さだけみる反射型センサーでは少し扱いが違いますが,どちらでも切り替えなしに使えるようにはなりました。





3.結果出力部

結果出力部はloop()とloop1()の両方から呼ばれます。あまり必要ないとは思いましたが気持ちだけビジーフラグを立てています(^^;;;;。

出力は,入力元のセンサー,経過時間,m/s,km/hをシリアルモニタから出しています。2つのセンサーそれぞれのセンサー間隔が異なるので,経過時間の比較は直接にはできません。




速度の計算式も追加しています。正しいかどうかはわかりませんが,それっぽい値は出ています(^^;;;;;。

整数型BASIC言語のPICAXEを触ってきたからでしょうか,どうにも"float型”の扱いが良くわからず,,できるだけ整数型で計算できるようには考えています。


Raspberry Pi Picoのマルチコアを使うにはどうかと思うような単純な動作ですが,切り替えなしで両方から入力できるのは便利です。

ま,センサー接続などいろいろな試作にPICOは扱いやすいですね(^^)。