生のセンサー データの配列を含む UART メッセージを受信しています。プログラムのメインループ内でメッセージを読んでいます。PIC が異なる値を処理するために必要なことが 2 つあります。それを LCD に表示し (多少時間がかかります)、少なくとも値の 1 つについて、その値に応じて PORTD に接続された LED バーを変更します (かなり単純です)。
メインループでは、これが私の現在の作業方法です:
- UART で外部デバイスからセンサー データを要求する
- 外部デバイスからバイト配列を受信
- 生のセンサーデータを実際の値/単位に変換する計算を行う
次のコードを使用して、LCD バーに RPM 値を表示します。
if (RPM < 99) { PORTD = 0; } if (RPM > 100) { PORTD = 0x01; } if (RPM > 2400) { PORTD = 0x03; } if (RPM > 3700) { PORTD = 0x07; } if (RPM > 4900) { PORTD = 0x0F; } if (RPM > 6200) { PORTD = 0x1F; } if (RPM > 7400) { PORTD = 0x3F; } if (RPM > 8700) { PORTD = 0x7F; } if (RPM > 10000) { PORTD = 0xFF; }
最後に、LCD に複数の値を表示します。したがって、古い値を削除し、ラベルを描画し、新しい値を設定して、再度ラベルを描画します。
その最後のタスクはループ全体を遅くし、LED バーの機能を「遅延」させます。不必要な描画を避けるために、ラベルを再描画する前に値が変更されたかどうかを確認するよう提案されました。しかし、すべての値は、RPM などのようにかなり急速に変化する値です。
どんな提案でも大歓迎です!!