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セグへの出力は 前に使ったのをそのまま利用。 一応、コンパイルまでは通った。 |