Arduino でアノードコモン7セグメントLEDを使ってみた

スポンサーリンク

はじめに

aitendoで安売りしていたLEDセグメントを使ってみた

使ったもの

ArduinoUno
2桁表示7セグメントLEDアノードコモン
22Ω抵抗 2個

データシート

7セグメントLEDピンナンバー

f:id:shangtian:20180831180237p:plain

数字を表示するにはA~Gを
組み合わせて表示させる

f:id:shangtian:20180831180259p:plain

f:id:shangtian:20180831180345p:plain

下の表は0~9までの数字を
表示させるときに必要なA~Gの
組み合わせを示している

表の中の0はLOW、1はHIGHを示している

A(3) B(9) C(8) D(6) E(7) F(4) G(1)
0 1 1 1 1 1 1 0
1 0 1 1 0 0 0 0
2 1 1 0 1 1 0 1
3 1 1 1 1 0 0 1
4 0 1 1 0 0 1 1
5 1 0 1 1 0 1 1
6 1 0 1 1 1 1 1
7 1 1 1 0 0 1 0
8 1 1 1 1 1 1 1
9 1 1 1 1 0 1 1

回路設計

回路は以下の図に示した
使った抵抗は22オーム

f:id:shangtian:20180831171546p:plain

回路を組み通電させると

f:id:shangtian:20180831173249j:plain

スケッチ

順番に数値が増えていくような スケッチを以下に示した。

このLEDセグメントは
アノードコモンであるので
A~Bを光らせたり、消したりするには
Arduino側で
光らせるとき: LOW
消すとき:  HIGH
にしなければならない。

(電流が流れるのは電位差があるときなので)

また2桁の数字を表示するには
(例えば12とか)カソード側が共通しているので
LEDセグメントの1桁目と
2桁目を交互に光らせる必要がある。

const int A = 10;
const int B = 2;
const int C = 3;
const int D = 4;
const int E = 5;
const int F = 6;
const int G = 7;
const int DIG1 = 8;
const int DIG2 = 9;
int i;

void setup() {
  pinMode(A,OUTPUT);
  pinMode(B,OUTPUT);
  pinMode(C,OUTPUT);
  pinMode(D,OUTPUT);
  pinMode(E,OUTPUT);
  pinMode(F,OUTPUT);
  pinMode(G,OUTPUT);
  pinMode(DIG1,OUTPUT);
  pinMode(DIG2,OUTPUT);
  i =0;

}

//1桁目と2桁目を交互に光らす。
void loop() {
  
  for(int j=0; j<50; j++) {
  digitalWrite(DIG1,LOW);
  digitalWrite(DIG2,HIGH);
  ledSeg(i/10);
  
  delay(10);
  
  digitalWrite(DIG1,HIGH);
  digitalWrite(DIG2,LOW);
  ledSeg(i%10);
  delay(10);
  }
  i++;
  if(i>100) i=0;
   
}

//光らせる部分を指定
void ledSeg(int val) {
  switch(val) {
    case 0:
      digitalWrite(A,LOW);
      digitalWrite(B,LOW);
      digitalWrite(C,LOW);
      digitalWrite(D,LOW);
      digitalWrite(E,LOW);
      digitalWrite(F,LOW);
      digitalWrite(G,HIGH);
    break;

    case 1:
      digitalWrite(A,HIGH);
      digitalWrite(B,LOW);
      digitalWrite(C,LOW);
      digitalWrite(D,HIGH);
      digitalWrite(E,HIGH);
      digitalWrite(F,HIGH);
      digitalWrite(G,HIGH);
    break;

    case 2:
      digitalWrite(A,LOW);
      digitalWrite(B,LOW);
      digitalWrite(C,HIGH);
      digitalWrite(D,LOW);
      digitalWrite(E,LOW);
      digitalWrite(F,HIGH);
      digitalWrite(G,LOW);
    break;

    case 3:
      digitalWrite(A,LOW);
      digitalWrite(B,LOW);
      digitalWrite(C,LOW);
      digitalWrite(D,LOW);
      digitalWrite(E,HIGH);
      digitalWrite(F,HIGH);
      digitalWrite(G,LOW);
    break;

    case 4:
      digitalWrite(A,HIGH);
      digitalWrite(B,LOW);
      digitalWrite(C,LOW);
      digitalWrite(D,HIGH);
      digitalWrite(E,HIGH);
      digitalWrite(F,LOW);
      digitalWrite(G,LOW);
    break;

    case 5:
      digitalWrite(A,LOW);
      digitalWrite(B,HIGH);
      digitalWrite(C,LOW);
      digitalWrite(D,LOW);
      digitalWrite(E,HIGH);
      digitalWrite(F,LOW);
      digitalWrite(G,LOW);
    break;

    case 6:
      digitalWrite(A,LOW);
      digitalWrite(B,HIGH);
      digitalWrite(C,LOW);
      digitalWrite(D,LOW);
      digitalWrite(E,LOW);
      digitalWrite(F,LOW);
      digitalWrite(G,LOW);
    break;

    case 7:
      digitalWrite(A,LOW);
      digitalWrite(B,LOW);
      digitalWrite(C,LOW);
      digitalWrite(D,HIGH);
      digitalWrite(E,HIGH);
      digitalWrite(F,LOW);
      digitalWrite(G,HIGH);
    break;

    case 8:
      digitalWrite(A,LOW);
      digitalWrite(B,LOW);
      digitalWrite(C,LOW);
      digitalWrite(D,LOW);
      digitalWrite(E,LOW);
      digitalWrite(F,LOW);
      digitalWrite(G,LOW);
    break;

    case 9:
      digitalWrite(A,LOW);
      digitalWrite(B,LOW);
      digitalWrite(C,LOW);
      digitalWrite(D,LOW);
      digitalWrite(E,HIGH);
      digitalWrite(F,LOW);
      digitalWrite(G,LOW);
    break;
  }
}

結果


7セグメントLEDをArduinoで使ってみた

<参考文献>

http://www.aitendo.com/product/10402