RaspberryPiで多桁の7セグLEDを点灯する
今回は温度センサーと7セグLEDを用いた、ロギング機能付きのデジタル温度計を作ってみることにします。
今回表示用のLEDとして用いたのは、aitendoさんで売ってる、ダイナミックドライブ方式で3桁表示できる
白色の7セグLED(カソードコモン型)です。
ダイナミックドライブ方式
全てのセグメントが独立に点灯・消灯制御できるようにする制御方式をスタティックドライブ方式といいますが、
3桁の7セグ(+ドット)を独立に駆動するには、セグメント24本+コモン1本の25本のピンが必要になります。
一方、今回使うダイナミックドライブタイプのモジュールは、12本の足しかありません。うち1本はダミーなので
実質的に11本で制御することになります
3つの桁に対応するコモン線3本と、各桁8個のセグメントに対応する8本のアノード線の入力の組み合わせにより、
時分割で入力信号を高速に切り替えながら点灯することで、残像によりすべての桁・セグメントを表示できる方式です。
このダイナミックの具体的な制御方法については詳細の説明は後述します。
端子とセグメント/桁の対応関係を調べる
今回用意した3桁LEDにはモジュールの端子がどの桁のどのセグメントに対応しているのかの記載が見つからなかったので、手探りで調べてみることにしましょう。
ちゃんと7セグの仕様書があってどの端子がどれに繋がってるかわかってる場合はこの工程は不要ですが、通電チェックを兼ねて、確認のためにやっておいても損はないでしょう。
まずはRaspberryPiから電源をとって、通電してみることにします。
VCC(3.3V)および、GNDの端子のそれぞれ一本をジャンプワイヤ―で接続ブレッドボードまで伸ばします。
VCCとGNDはどこの列からとってもいいのですが、今回はそれぞれ、左列の一番上のピン、右列の上から3番目ピンを使います。
そしてVCC側に抵抗(今回使ったのは100Ω)をとりつけ、GND側の配線をLEDモジュールのピンのいずれかに接続。
VCC側は取り付けた抵抗を経由し、GNDと接続した以外のピンに対し、順次接触していきます。
点灯すれば、どの桁のどのセグメントが点灯したかを紙などにメモしていきます。
もし点灯しない場合はいずれかのケースといえます。
- アノード(+)とカソード(-)が逆
- 両方ともアノード・あるいはカソード
- 回路がどこかしらで断線している
調べてみた結果、ピン番号 11, 7, 4, 3, 1, 10, 5, 3 がA~G, DPのアノード(全桁共通)にそれぞれ対応、12, 9, 8がそれぞれの桁のカソード線(全セグメント共通)に対応していることが判りました。
このピン配置は、秋月電子さんで扱っているC-5335Rと全く同じです。
この配列が標準なのでしょうか?
配線をしてみよう
アノード(+)側のピン8本に、それぞれ抵抗を接続していきます。
今回は縦方向に配線するのが難しいため、、短めのジャンパピンで横の列に配線を引っ張り、7セグモジュールと平行になるように取り付けます。
抵抗のピンは長さが余るので、必要な長さに切断したほうが綺麗にまとまるでしょう。
今回は100Ωの金属皮膜抵抗を利用しました。金属皮膜抵抗はカーボン抵抗より大きめになる傾向があります。こいつは特にでかいです。同じ100Ωでももう少し小さいタイプの抵抗はあるので、配線がしやすいものを選ぶとよいでしょう。
スッキリした配線にするには、ジャンパピンやワイヤーは極力ボードに密着させるのがポイントです。抵抗のワイヤー部分は長さが余るので、適当な長さのところでニッパーで切断してもよいでしょう。
写真では2本ほど配線が見えていますが、セグメントのピンと抵抗の大部分は、7セグLEDと抵抗の裏側を通して抵抗に配線しています。
配線がうまくいっているかは、RaspberryPiのVCCとGNDで通電して確認してもいいですし、電池ボックスがあればそれでもいいです。