アノードコモンの8セグメントLEDへ表示する(その1)


今まではカソードコモン(GNDが共通)の8セグメントLEDを使ってきましたが、
今回はアノードコモン(VSS側が共通)の8セグメントLEDを使ってみます。
8セグメントLEDのスペックは以下のとおりです。
使用したセグメントLEDは下に5本、上に6本のピンがあるもので、
ピン配置は下の左端から1→2→3→4→5(6は欠番)となり
上の右端から7→8→9→10→11→12となります。
このページの 33ページのものと同じピン配置です。

LEDのPin No. Function Position
1 Segment "e" 下側一番左
2 Segment "d" 下側左から2番目
3 Segment D.P 下側左から3番目
4 Segment "c" 下側左から4番目
5 Segment "g" 下側左から5番目
6 N/C 欠番
7 Segment "b" 上側一番右
8 Digit 3 Common(一番右側の桁) 上側右から2番目
9 Digit 2 Common(真ん中の桁) 上側右から3番目
10 Segment "f" 上側右から4番目
11 Segment "a" 上側右から5番目
12 Digit 1 Common(一番左側の桁) 上側右から6番目

回路図は以下のとおりです。
3桁のLEDの部品図が無かったので4桁のLEDの図で代用しています。
緑のラインが1番ピンで、ピンクのラインが7番ピンとなります、
LEDのPin No. Function Raspberryのピン番号
1 Segment "e" 16
2 Segment "d" 15
3 Segment D.P 7
4 Segment "c" 13
5 Segment "g" 22
6 N/C
7 Segment "b" 12
8 Digit 3 Common(一番右側の桁) 19
9 Digit 2 Common(真ん中の桁) 26
10 Segment "f" 18
11 Segment "a" 11
12 Digit 1 Common(一番左側の桁) 24

LEDの8番、9番、12番は各桁の共通のVSSです。
ここに電圧を加えると、電圧を加えた桁の全てのセグメントが表示します。
LEDの1番、2番、3番、4番、5番、7番、10番、11番は全ての桁に共通のセグメントです。
ここに電圧を加えると、「GNDではなくなる」ので、「表示したくないセグメント」を指定します。

使用する抵抗ですが、順方向電圧が2.0Vから2.8V、順方向電流が20mAなのでLEDのときと同じ計算で
抵抗値(Max)=(3.3V-2.0V)/0.02A=65オーム
抵抗値(Min)=(3.3V-2.8V)/0.02A=25オーム
本当はMaxとMinの間の抵抗を使うのがいいのですが、手元に無かったので100オームの抵抗を使いました。
LEDの電流制限用の抵抗は大体の値で大丈夫です。

カソードコモンと比べ、抵抗は3個しか使いません。



まず、LEDの8番、9番、12番は3.3Vとします。
ソースコードは以下の様になります。
#include <stdio.h>
#include <stdlib.h>
#include <wiringPi.h>

#define Pins    8
#define P0      0
#define Digs    3
#define D0      10

int main (int argc, char **argv) {
    int i,j,k,l,m;
    int Pin[8];
    int Dig[4];

    if(wiringPiSetup() == -1) return 1;
    for(i=0;i<Pins;i++) {
        Pin[i]=P0+i;
        pinMode(Pin[i], OUTPUT);
       digitalWrite(Pin[i], 1);
    }
 
    for(i=0;i<Digs;i++) {
        Dig[i]=D0+i;
        pinMode(Dig[i], OUTPUT);
        digitalWrite(Dig[i], 1); //まずは全ての桁を3.3Vに
    }

    for (i=0; i<10; i++) {
        for(k=0; k<Pins; k++) {
            digitalWrite(Pin[k], 0);
            delay(2000);
            digitalWrite(Pin[k], 1);
        }
    }

    exit;
}

全ての桁のLEDが順番に点滅します。
購入した8セグメントLEDは、まずこのテストを実行し、全ての桁のLEDが全て表示されるか確認しています。
24個もLEDが内蔵されているので、中華品質のLEDの中には、特定の桁の特定のセグメントだけ表示しないものが時々あります。

拡大

次回は指定した桁のセグメントを点滅させます。