Memorandumの小部屋
本ページは金銭授受を伴う行為を含むAuctionや商用Web
Pageからの無断リンク・無断参照を禁じます。
無断リンク・無断参照が判明した時点で然るべき処置をとらさせて頂きます。
フラッシャーがウインカーに化けた!!!
2色LEDボードを動かしました。
16×2桁 2色(赤、緑)LEDボードを秋月電子通商で見つけて、いつかフラッシャーを製作しようと衝動買いして、そのままに部品箱のなかに入れっぱなしとなっていました。 しかし、とうとう背中を押して頂く機会があり、フラッシャのつもりで16×2桁 2色(赤、緑)LEDボードを使ったフラッシャを製作してみることにしました。
【 基本仕様 】
一応フラッシャのつもりですので、LEDの点灯パターンを切り替えることができるようにしないとけません。 最初は点灯パターンをプログラムで作成するつもりでしたが、後でパターン変更をするときに 、またプログラムを書き直す必要が出てきます。 このため、予め決まられた幾つかのパターンを繰り返し表示する方法をとることにしました。
16×2桁 2色(赤、緑)LEDボードの制御をワンチップマイコンPIC16F84Aで行い、点灯パターンはEEPROMに書き込むことにします。 EEPROMは64バイトですので、16×2桁 2色(赤、緑)LEDボードのLED個々に点滅の設定を行うとすれば1パターン当たり8バイト必要になりますので、8バターンの設定対応の仕様とします。 このときのパターン番号をパターン0〜パターン7とします。
点灯パターンの切り替えに関して表1で示す選択ができるようにします。 最大点灯パターンがパターン7より小さい場合でも有効な点灯パターンだけを繰り返し表示できるようにしています。
電源投入時 | 全LEDを消灯後、パターン0で表示。 | |||||
Reset / Start 切り替え | Reset | 全LEDを消灯状態を保持。 保持からの復帰時にはパターン0から再開する。 | ||||
Start | Free Run Mode/ External Mode 切り替え | Free Run Mode | HOLD / RUN | HOLD
|
現在の点灯パターンの状態でホールド | |
RUN | 点灯パターンを周期的に変更 | |||||
Forward / Reverse | Forward | パターン0→1→・・・→MAX→パターン0と正順方向にシーケンシャルに切り替え。 | ||||
Reverse | パターン0→MAX→・・・→1→パターン0と逆順方向にシーケンシャルに切り替え。 | |||||
Pattern | 最大パターンMAXを3ビットで設定。 (*1) | |||||
External Mode | Write | Patternで選択された番号の点灯パターンで点灯する。 | ||||
Pattern | 点灯パターンを3ビットで設定。 |
(*1) 例 Forward設定で Pattern = 5 の場合
パターン0→パターン1→パターン2→パターン3→パターン4→パターン5→パターン0→・・・・・を繰り返し切り替え。
【 ハードウエア仕様 】
上記の仕様をもとに製作したマイコン部分の回路図を下記に掲載します。
点灯パターンの切り替え周期はプログラムで変更できるようにするのではなく、PIC16F84のRC発振周波数を変えることで連続的に可変することができるようにします。 今回のように周期の再現性や精度を特に問わない用途ではRC発振がお手軽です。
また、16×2桁 2色(赤、緑)LEDボード付属の取扱説明書では緑→赤のデータをRSI入力から32ビットシリアル転送する回路ですが、下記回路では赤と緑それぞれ独立してデータ転送を行うようにしています。
上記回路のPIC16F84Aの入出力ピンの割り当てを表2に示します。
Pin名称 | Pin番号 | 接続先 | 信号名称 | 信号レベル Low | 信号レベル High |
RA0 | 17 | SW2 - 1 | Reset / Start | Reset (SW2 - 1 on) | Start (SW2 - 1 off) |
RA1 | 18 | SW2 - 2 | Free Run / External | External (SW2 - 2 on) | Free Run (SW2 - 2 off) |
RA2 | 1 | SW2 - 3 | HOLD / RUN | HOLD (SW2 - 3 on) | RUN (SW2 - 3 off) |
RA3 | 2 | SW2 - 4 | Forward / Reverse | Reverse (SW2 - 4 on) | Forward (SW2 - 4 off) |
RA4 | 3 | SW1 | Write | High(SW1 on)→Low(SW1 off)で、patternで選択されされ た点灯パターンのデータをLED表示する。 | |
RB0 | 6 | SW2 - 5 | Pattern - b0 | SW offで論理1 , SW onで論理0 RB2,RB1,RB0で点灯パターン0〜7を設定 |
|
RB1 | 7 | SW2 - 6 | Pattern - b1 | ||
RB2 | 8 | SW2 - 7 | Pattern - b2 | ||
RB3 | 9 | SW2 - 8 | Pattern - b3 | 未使用 | |
RB4 | 10 | LEDボード | GSI | 16×2桁 2色(赤、緑)LEDボード付属の取扱説明書参照願います。 | |
RB5 | 11 | LEDボード | LATCH | ||
RB6 | 12 | LEDボード | RSI | ||
RB7 | 13 | LEDボード | GCLK/RCLK |
実際に製作した基板を下記に掲載します。
【 マイコン基板 】
【 全体外観 】
【 ソフトウエア仕様 】
点灯バーターンが8パターンのプログラムのHEXファイルを下記に掲載します。 下記ファイル名を右クリックして「ファイルに保存する」を選んでダウンロードして下さい。
このときのEEPROMエリアの点灯パターンの割付を以下に記載します。下記の割付にしたがってEEPROMエリアを書き換えてお使い下さい。
アドレス | パターン | LED色 | 位置 | LED No. |
LEDのbit割付 |
|||||||
bit7 | bit6 | bit5 | bit4 | bit3 | bit2 | bit1 | bit0 | |||||
0 | 0 | 赤 | 上 | 31〜17 | D31 | D29 | D27 | D25 | D23 | D21 | D19 | D17 |
1 | 赤 | 上 | 15〜01 | D15 | D13 | D11 | D9 | D7 | D5 | D3 | D1 | |
2 | 赤 | 下 | 32〜18 | D32 | D30 | D28 | D26 | D24 | D22 | D20 | D18 | |
3 | 赤 | 下 | 16〜02 | D16 | D14 | D12 | D10 | D8 | D6 | D4 | D2 | |
4 | 緑 | 上 | 31〜17 | D31 | D29 | D27 | D25 | D23 | D21 | D19 | D17 | |
5 | 緑 | 上 | 15〜01 | D15 | D13 | D11 | D9 | D7 | D5 | D3 | D1 | |
6 | 緑 | 下 | 32〜18 | D32 | D30 | D28 | D26 | D24 | D22 | D20 | D18 | |
7 | 緑 | 下 | 16〜02 | D16 | D14 | D12 | D10 | D8 | D6 | D4 | D2 | |
8〜15 | 1 | アドレス0〜7と同じ | ||||||||||
16〜23 | 2 | アドレス0〜7と同じ | ||||||||||
24〜31 | 3 | アドレス0〜7と同じ | ||||||||||
32〜39 | 4 | アドレス0〜7と同じ | ||||||||||
40〜47 | 5 | アドレス0〜7と同じ | ||||||||||
48〜55 | 6 | アドレス0〜7と同じ | ||||||||||
56〜63 | 7 | アドレス0〜7と同じ |
また、PIC16F84AのI/Oピン割付は以下のようになります。
Pin名称 | Pin番号 | 接続先 | 信号名称 | 信号レベル Low | 信号レベル High |
RA0 | 17 | SW2 - 1 | Reset / Start | Reset (SW2 - 1 on) | Start (SW2 - 1 off) |
RA1 | 18 | SW2 - 2 | Free Run / External | External (SW2 - 2 on) | Free Run (SW2 - 2 off) |
RA2 | 1 | SW2 - 3 | HOLD / RUN | HOLD (SW2 - 3 on) | RUN (SW2 - 3 off) |
RA3 | 2 | SW2 - 4 | Forward / Reverse | Reverse (SW2 - 4 on) | Forward (SW2 - 4 off) |
RA4 | 3 | SW1 | Write | High(SW1 on)→Low(SW1 off)で、patternで選択されされ た点灯パターンのデータをLED表示する。 | |
RB0 | 6 | SW2 - 5 | Pattern - b0 | SW offで論理1 , SW onで論理0 RB2,RB1,RB0で点灯パターン0〜7を設定 |
|
RB1 | 7 | SW2 - 6 | Pattern - b1 | ||
RB2 | 8 | SW2 - 7 | Pattern - b2 | ||
RB3 | 9 | SW2 - 8 | Pattern - b3 | 未使用 | |
RB4 | 10 | LEDボード | GSI | 16×2桁 2色(赤、緑)LEDボード付属の取扱説明書参照願います。 | |
RB5 | 11 | LEDボード | LATCH | ||
RB6 | 12 | LEDボード | RSI | ||
RB7 | 13 | LEDボード | GCLK/RCLK |
上記HEXファイルのサンプルデータでの点灯パターン実例を右図に掲載します。 右図の上から点灯パターン0、1,2,3,4,5,6,7です。 実際に動かして雰囲気を見てみましたが、フラッシャというよりウインカになってしまいました。 めりはりがないようです。 点灯パターンデータが悪いのかもしれませんが、点灯パターンが8個しかないのも問題ではないかと思い、さらに点灯パターン16パターン版を作成してみることにしました。 これは以下の節に記載します。 なお、パターン0は点灯するけれども、LEDが変化しないときには以下の確認をして下さい。 本プログラム開発途中でこれを忘れて無駄時間を費やしてしまいました。
|
【 16パターン対応 】
点灯バーターンが8パターン ではやはりパターン数が不足していそううです。 このため、上下のLEDを同時に点灯させることにして点灯パターン当たりの必要バイト数を8バイトから4バイトにして点灯パターンを16パターンに増やしたプログラムも作成しました。
このプログラムのHEXファイルを下記に掲載します。 下記ファイル名を右クリックして「ファイルに保存する」を選んでダウンロードして下さい。
このときのEEPROMエリアの点灯パターンの割付を以下に記載します。下記の割付にしたがってEEPROMエリアを書き換えてお使い下さい。
アドレス | パターン | LED色 | 位置 | LED No. |
LEDのbit割付 |
|||||||
bit7 | bit6 | bit5 | bit4 | bit3 | bit2 | bit1 | bit0 | |||||
0 | 0 | 赤 | 上 下 |
32〜17 | D31 D32 |
D29 D30 |
D27 D28 |
D25 D24 |
D23 D24 |
D21 D22 |
D19 D20 |
D17 D18 |
1 | 赤 | 上 下 |
16〜1 | D15 D16 |
D13 D14 |
D11 D12 |
D9 D10 |
D7 D8 |
D5 D6 |
D3 D4 |
D1 D2 |
|
2 | 緑 | 上 下 |
31〜17 | D31 D32 |
D29 D30 |
D27 D28 |
D25 D24 |
D23 D24 |
D21 D22 |
D19 D20 |
D17 D18 |
|
3 | 緑 | 上 下 |
16〜1 | D15 D16 |
D13 D14 |
D11 D12 |
D9 D10 |
D7 D8 |
D5 D6 |
D3 D4 |
D1 D2 |
|
4〜7 | 1 | アドレス0〜3と同じ | ||||||||||
8〜11 | 2 | アドレス0〜3と同じ | ||||||||||
12〜15 | 3 | アドレス0〜3と同じ | ||||||||||
16〜19 | 4 | アドレス0〜3と同じ | ||||||||||
20〜23 | 5 | アドレス0〜3と同じ | ||||||||||
24〜27 | 6 | アドレス0〜3と同じ | ||||||||||
28〜31 | 7 | アドレス0〜3と同じ | ||||||||||
32〜35 | 8 | アドレス0〜3と同じ | ||||||||||
36〜39 | 9 | アドレス0〜3と同じ | ||||||||||
40〜43 | 10 | アドレス0〜3と同じ | ||||||||||
44〜47 | 11 | アドレス0〜3と同じ | ||||||||||
48〜51 | 12 | アドレス0〜3と同じ | ||||||||||
52〜55 | 13 | アドレス0〜3と同じ | ||||||||||
56〜59 | 4 | アドレス0〜3と同じ | ||||||||||
60〜63 | 15 | アドレス0〜3と同じ |
このときのPIC16F84AのI/Oピン割付は以下のようになります。
Pin名称 | Pin番号 | 接続先 | 信号名称 | 信号レベル Low | 信号レベル High |
RA0 | 17 | SW2 - 1 | Reset / Start | Reset (SW2 - 1 on) | Start (SW2 - 1 off) |
RA1 | 18 | SW2 - 2 | Free Run / External | External (SW2 - 2 on) | Free Run (SW2 - 2 off) |
RA2 | 1 | SW2 - 3 | HOLD / RUN | HOLD (SW2 - 3 on) | RUN (SW2 - 3 off) |
RA3 | 2 | SW2 - 4 | Forward / Reverse | Reverse (SW2 - 4 on) | Forward (SW2 - 4 off) |
RA4 | 3 | SW1 | Write | High(SW1 on)→Low(SW1 off)で、patternで選択されされ た点灯パターンのデータをLED表示する。 | |
RB0 | 6 | SW2 - 5 | Pattern - b0 | SW offで論理1 , SW onで論理0 RB3,RB2,RB1,RB0で点灯パターン0〜7を設定 |
|
RB1 | 7 | SW2 - 6 | Pattern - b1 | ||
RB2 | 8 | SW2 - 7 | Pattern - b2 | ||
RB3 | 9 | SW2 - 8 | Pattern - b3 | ||
RB4 | 10 | LEDボード | GSI | 16×2桁 2色(赤、緑)LEDボード付属の取扱説明書参照願います。 | |
RB5 | 11 | LEDボード | LATCH | ||
RB6 | 12 | LEDボード | RSI | ||
RB7 | 13 | LEDボード | GCLK/RCLK |
上記HEXファイルのサンプルデータでの点灯パターン実例を右図に掲載します。 右図の上から点灯パターン0、1,2,3,4,5,6,7,8,9,10,11,12,13,14,15です。 残念ながらフラッシャというよりウインカになってしまいました。 ただ、LEDの変化が8パターンよりは滑らかになったように感じます。 ガクガク感は確かに減ってきています。 まあ、現状のコンセプトではこれ以上の改善は見込めないの、とりあえずウインカーディスプレイを製作したことに目標を変えました。あれ? なお、8パターンと同様に、パターン0は点灯するけれども、LEDが変化しないときには以下の確認をして下さい。
|
【プログラム書き込みサービス】
本ページで紹介しましたPICマイコンの書き込みサービスを行っています。 詳細はプログラム書き込みサービスのページを参照願います。
End of This Page.