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


前回は3桁全てのLEDを点滅させてみました。
今回は特定の桁の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番のいずれか1つだけを0Vにして、残りは3.3Vにします。
これで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);
        digitalWrite(Pin[i], 0);
    }
    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(j=0; j<Digs; j++) {
        digitalWrite(Dig[j], 0); //表示したい桁は0Vに
        for(k=0; k<Pins; k++) {
            digitalWrite(Pin[k], 1); //表示したいセグメントは3.3Vに
            delay(500);
            digitalWrite(Pin[k], 0); //表示したくないセグメントは0Vに
        }
        digitalWrite(Dig[j], 1); //表示したくない桁は3.3Vに
      }
    }

    exit;
}

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

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