LED出力側は74HC595を使えば何となくできそうだとわかり、
次はセンサー側なのだけれど、
センサーはこれを使うことにした。
これはロボットを作るときに床に描いたラインに従って動くようにするための
ライントレースセンサーユニット。
こうしたユニットになっていない赤外線のセンサーだけでも良いのだけれど、
これはもうデジタル出力が用意されていて、回路を自分で組む必要が無いので楽だ。
値段もRM5(150円程度)。

ボリュームでON-OFFの閾値の調整ができて、ON出力の時は緑のLEDが点灯する。
問題はパルスカウントの方法。
ネットで調べるとパルスカウントのためのライブラリがあって
それを組み込んでプログラミングすると良いと書いてある。
けれど、欠点は入力の5番ピンしか使えない事。
こちらの算段では入力を複数個、できるだけたくさん欲しいので
ほとんど全部の入力でパルスカウントしたいと思っている。
1つのピンだけしか使えないと言う事は、
Uno1個でメーター1個、仮に10系統作りたいとなるとUnoも10個必要になってしまう。
いくら1個RM16(400円)で買えるとは言え、10個ではやりたくない。
なので1個のUnoでどれだけたくさんの系統が作れるか挑戦してみることにした。
が、ネットではみなさんやはりライブラリを組み込んだタイプのプログラミングをされている。
なかなか参考になるものがない。
が、たった1つあった。
他の人と全然違う事をやっている人が。
スピンドル回転数を計測する ダ・ヴィンチの帰還
このスケッチ、見ても初心者には全然わからなかった。
なのでコピーして(写真の方が合っているらしい)やってみると、確かにカウントしている。
この時点でセンサーはライントレースユニットにしている。
別に問題ない。
なのでこれをこのまま使うことにしておいた。
が、実は後でちょっと問題が出た。
実際の回転物が無いので試験ができなくて、もう1個のUnoでLEDを点滅させてみた。
が、赤外線が出るわけではないのでダメだった。
なのでLEDを点滅させる出力を計測側の入力に直接入れてみた。
GNDのレベルも合わせた。
が、それでもダメ。
と、そうこうしているうちに、その問題とは別にスケッチの改良を思いつく。
(ダ・ヴィンチさんのがダメと言うのではなくて自分のに合うように変更と言う意味)
それが以下。

やりたい事は、入力ピンにセンサーユニットからのON-OFF信号を入れる。
適当な回数だけONになった回数をカウントする。
そのカウントしていた時間を測定して回転数を出すと言うもの。
このメーターのコンセプトは自動車のスピードメーターのように
リアルタイムにスピードを表示する事じゃなくて
いくつかの計測点の速度を順番にゆっくり測定しては表示すれば良い。
だからまず1つの入力パルスを一定期間測定。
それから表示。
次のピンのパルスを測定して表示。
これを繰り返すだけ。
適当な回数カウントするのは1分分でも良いし30秒分でも良い。
その計測時間も適当で良くて、正確に1分とか30秒でなくても良い。
23秒だったとしても、36秒でも後は計算で回転数は出る。
こうすればUnoで数系統、多分出力に74HC595を使う関係で出力ピンの数に制限されるから
4系統 in 1Unoのスピードメーターができるのではないかと思っている。
パルスの立ち上がりを検出するのは、
Unoの計測サイクルが回転数のサイクルよりたぶん充分短いだろうから
前の回のピン入力(digitalRead)のサイクルと今回の差がXX以上なら回数にカウント
と言うことでできるのではないかな、と思う。
思うだけでまだやってないが。