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


前回は3桁全てのLEDを点滅させてみました。
今回は特定の桁のLEDを点滅させます。

回路図は前回と同じです。
一応再掲載しておきます。
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の1番、2番、3番、4番、5番、7番、10番、11番のいずれか1つだけを0Vにして、残りは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], 0); //表示したくない桁は0Vに
    }

    for (i=0; i<10; i++) {
      for(j=0; j<Digs; j++) {
        digitalWrite(Dig[j], 1); //表示したい桁は3.3Vに
        for(k=0; k<Pins; k++) {
            digitalWrite(Pin[k], 0); //表示したいセグメントは0Vに
            delay(500);
            digitalWrite(Pin[k], 1); //表示したくないセグメントは3.3Vに
        }
        digitalWrite(Dig[j], 0); //表示したくない桁は0Vに
      }
    }

    exit;
}

左の桁からLEDが順番に点滅します。
これがアノードコモンの8セグメントLEDの原理です。
後は表示したい数字のセグメントを高速で点滅させてやれば、人間の目にはずっと表示されているように見えます。

次回
はいよいよ指定した数字を表示させます。