Raspberry Pi(ラズペリーパイ)を使った、組み込みソフトウェアを理解する入門シリーズ第7回。
今回は、C言語を使って4桁の7セグLEDを点灯制御します。
本ブログでは、組み込みソフトウェアについて初歩から習得できるよう、カテゴリを作って紹介しています。
プログラミングに興味がある方や、今回の記事で用語がわからない方は、過去記事を御覧下さい。
本ブログの主旨は「組み込みソフトウェアを自力で作るスキルを習得する」事にあります。
python言語やWiringPi等のライブラリを使えば、「なぜ動作するのか?」という知識が無くとも機器を制御するプログラムを書く事ができますが、「もっと低層の制御方法を知りたい」、「自力でライブラリを書くスキルを身に着けたい」という方に向けた記事となります。
データシートの入手
今回使用した7セグLEDは「5641BS」です。
ネットで品番を調べると、簡単にデータシートを閲覧できます。
スタート地点はここからです。データシートを見て、各ピンの機能を理解しましょう。
参考までにリンクを貼っておきます。
また、データシート内でプログラマにとって肝となる情報は以下の箇所です。
大きめの図をリンクしておいたので、スマホで閲覧される方はタップして拡大表示して下さい。
Circuit Diagramsを見ると、前回使用した1桁7セグLEDと同様、アノードコモンである事がわかります。
LEDのアノードコモン、カソードコモンについては過去記事で説明していますので、こちらを御覧下さい。
www.initial-jj.com
12,9,8,6番ピンは、4~1桁目のどのセグメント(=LED) を点灯させるかに使用します。
A~G、DPの点灯は各桁を共通ピンで制御する為、一定間隔で12,9,8,6番ピンの1つだけをHIレベルにして各桁を点灯させます。
例えば、12番ピンをHIレベル&3番ピンをLOレベルにすると、”All Light On Segments Feature & Pin Position” の図に記載されている「DP」のセグメントが点灯する事になります。
このような、1桁ずつ点灯箇所を切り替える方式を「ダイナミック点灯方式」と呼びます。
カメラで撮影した時、LEDの一部が消える現象は、このダイナミック点灯方式によるものです。
カメラのシャッタースピードが早く、それよりもLEDが消灯している時間が長い場合に、肉眼では残像によって点灯していると認識していても、写真は一部のセグメントが消灯中に撮影されるからです。
ダイナミック点灯の詳細については、次回説明します。
5641BSは、本ブログで紹介本ブログで紹介しているKeeYees電子工作キットに同梱されています。
購入時期によっては、異なる7セグLEDがパッケージングされているかもしれません。その場合は、該当品番をネットを調べてデータシートを入手して下さい。
端子割付表
制御機器の端子のどれとどれを結線しているのかを記したものを「端子割付表」と言います。
省略して「端割(たんわり)」と呼ばれます。
一般的には、マイコン等制御する側のピン番号を昇順に並べて記述し、これと接続する相手側を横に書きます。
今回は、この一般的な表記法と合わせて、LED側のピン番号をメインとした端割の2つを記載します。
どちらも内容は同じです。ご自身で見やすいと思う方をご覧下さい。
ラズパイGPIO pin Noを昇順に並べた端割表
ラズパイ GPIO | 7 seg LED pin | 7 seg LED function |
---|---|---|
2 | 8 | DIGIT.3 |
4 | 9 | DIGIT.2 |
13 | 3 | DP |
14 | 7 | B |
15 | 12 | DIGIT.1 |
18 | 10 | F |
19 | 4 | C |
21 | 6 | DIGIT.4 |
23 | 11 | A |
24 | 1 | E |
25 | 2 | D |
26 | 5 | G |
7セグLED pin Noを昇順に並べた端割表
7 seg LED pin | 7 seg LED function | ラズパイ GPIO |
---|---|---|
1 | E | 24 |
2 | D | 25 |
3 | DP | 13 |
4 | C | 19 |
5 | G | 26 |
6 | DIGIT.4 | 21 |
7 | B | 14 |
8 | DIGIT.3 | 2 |
9 | DIGIT.2 | 4 |
10 | F | 18 |
11 | A | 23 |
12 | DIGIT.1 | 15 |
結線図
最後に、ラズパイとの結線図を紹介します。
あくまで一例ですので、同じGPIOを使う必要性はありません。
ブレッドボードを使って図示した場合に描きやすいように結線しただけなので、それ以外のピン選択理由はありません。
これも大きめの図をリンクしてあるので、クリック(=タップ)して拡大して御覧下さい。
配線の「赤」はVDD、「黒」はGNDです。
図ではGNDもブレッドボードと結線していますが、カソードコモンLEDなので未使用となります。実際には結線しなくても構いません。
また、見やすいように、LEDのアノード側を緑、カソード側を黄色に、DIGITセレクタは青で色分けしました。
抵抗値は、前回までと同様470Ωです。
今回はここまでとなります。
次回、LEDを点灯させるC言語プログラムをご紹介します。
ラズパイは非常に安価でLinux PCとしても遊べるので、興味がある方は手に取ってみて下さい。
KeeYees電子工作キットにはブレッドボード、抵抗、LED、リード線(コの字ワイヤやジャンパー線)など、電子工作部品が一式揃っているので、電子工作の取っ掛かりにオススメのセットです。
C言語を習得するなら、オススメなのは独習Cです。
ご覧いただき、ありがとうございました。
ランキングに参加しています。ポチッと押して去って頂けると、次回に続く。
コメント