はじめに
aitendoで安売りしていたLEDセグメントを使ってみた
使ったもの
ArduinoUno
2桁表示7セグメントLEDアノードコモン
22Ω抵抗 2個
データシート
7セグメントLEDピンナンバー
数字を表示するにはA~Gを
組み合わせて表示させる
下の表は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オーム
回路を組み通電させると
スケッチ
順番に数値が増えていくような
スケッチを以下に示した。
この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; } }