カソードコモンの8セグメントLEDへ表示する(その3)


前回は3桁の8セグメントLEDの1つの桁だけを点滅させてみました。
今回は3桁全てのLEDを点滅させます。

回路図は以下のとおりです。
赤字のところだけ変わっています。
LEDのPin No. Function Raspberryのピン番号
1
Segment "c"
13
2
Digit 1 Common
24
3
Segment "d"
15
4
Digit 2 Common 26
5
Digit 3 Common 19
6
Segment D.P 7
7
Segment "b" 12
8
Segment "f" 18
9
Segment "a" 11
10
Segment "e" 16
11
Segment "g" 22

LEDの2番、4番、5番は各桁のGNDです。
ここに電圧を加えると、「GNDではなくなる」ので、「表示したくない桁」を指定します。
これらのピンに抵抗が必要かどうか悩みましたが、無くても動いたので(笑い)抵抗なしで直接Raspberryのピンに接続しています。
あるいは本当は抵抗が無いとだめなのかも....
どなたか詳しい方、教えてください....




まずは、LEDの2番、4番、5番は0Vとしてみます。
これで全ての桁が表示されるようになります。
ソースコードは以下の様になります。
#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);
    }
    for(i=0;i<Digs;i++) {
        Dig[i]=D0+i;
        pinMode(Dig[i], OUTPUT);
        digitalWrite(Dig[i], 0); //とりあえず0V
    }

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

    exit;
}


全ての桁のLEDが順番に点滅します。

拡大

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