2018/7/16(MON) 【後方排気】SI:やっぱりまずはタコメーターから?
はい、スッカリ進んでいないシフトインジケーターですが
どこから手をつけたらいいのか?

まずは、フォトカプラの使い方の練習で
デジタルタコメータでも作りますかね?
おさらい
↓フォトカプラね。
フォト

ピックアップコイルから波形をもらうと
↓こんな感じ
フォト

点火されるとビットが落ちる感じで。
注意点はパラレルなので2倍点火されているところです。

あ、デジタルタコメーターと言っても
7セグは1つしか使わないから
1桁表示ね。
端数切捨てで1000rpm単位で大丈夫でしょ?

ここで算数。
たとえば
1000 rpmだった場合、2倍点火されているから
2000 rpmでパルスが出ているはず。
1 secでいうとどのくらいのパルスが出ているかというと
2000(rpm) / 60(sec) = 33.33333333333333...
つまり1000 rpm だと1秒間に
33.33333333333333...回パルスが出ていると
PICマイコンだと1secなんて
永遠の時間をタイマー張れないので
もう少し短い時間でパルスをカウントすることにすると
1sec = 1000 msec → 2000(rpm) / 60(sec) = 33.33333333333333...回
300 msec → (2000(rpm) / 60(sec)) / ( 300(msec) / 1000(msec)) = 10回
ということで、
300 msecのタイマーを張って
パルスをカウントすると
1000 rpm だと 10回カウントされるので
1/10を7セグで表示すればよさそう。

んじゃ、プログラミング
まずはカウントするところ
入力割り込みで、ビットが落ちたら
ENG変数をカウントアップ
↓こんな感じ
フォト

次は
タイマー割り込みが発生時に
ENGを10で割った結果を
O_DATAに入力
フォト

で、メインループで
O_DATAの内容で7セグを光らせる
フォト

割り算とか7セグへの出力は
前に使ったのをそのまま利用。
一応、コンパイルまでは通った。