1週間ほどで基板が届き、組み立てた。RGB-LEDのピンの間隔が狭くブリッジが出来て上手くハンダ付けができない。ブリッジの場所を探し出すのにパターンを切ったりして苦労したのでこれ以上ショートしないようUVレジンで固めた。その結果が次の写真である。ここではRGB-LEDのピンを左右に開くなどパターン作成に工夫が必要だ。
この 表示部はセンサー部から送られてきた測距データを表示する。
センサー部から送られる測距データは行が'='で始まり3文字目から測距結果を格納する。7セグLEDは実際に測定した距離を表示し、RGB-LEDは距離に応じて色を決めるようにする。
7セグメントLEDは100回/秒くらいのレートでリフレッシュ出来れば十分なので10msに一回、つまり3桁で割って約3msくらいで割込み処理すれば充分だろう。という事で比較的簡単に実現できた。
表示用の割込み処理は次のようなものである。
static const byte swp_pos[3] = { 0x10, 0x20, 0x40 };
static byte dsp_dat[3] = { 0, 0, 0 };
static byte dsp_pos = 0;
void sevenSegLed_Isr(){
LATC = dsp_dat[dsp_pos];
LATB = swp_pos[dsp_pos++] | (LATB & 0x8f);
if(dsp_pos >= 3) dsp_pos = 0;
}
dsp_dat[]は7セグLEDに与えるビットパターンを格納している。
ちなみに数字を表すビットパターンは、
static const byte SvnSegPtn[16] = {
0x7e, 0x30, 0x6d, 0x79, 0x33, 0x5b, 0x5f, 0x70, // 0..7
0x7f, 0x7b, 0x77, 0x1f, 0x0d, 0x3d, 0x4f, 0x47 // 8..F
};
を使っている。


0 件のコメント:
コメントを投稿