ホーム > カテゴリ > ロボット・電子工作・マイコン >

4桁7セグメントLEDの使い方 [Arduino]

この4桁7セグはアノードコモンで「4つのアノード」(桁毎)と「1つの共通セグメント」(A,B,C,D,E,F,G,DP)の計12ピンで構成されています。

今回のスケッチでは1つの桁毎に数字を切り替えて表示しています。ですが、一つ一つ数字を表示しても4つの数字が同時に表示されているように見えます。これは「ダイナミック点灯方式」と呼ばれ、高速でHIGH/LOWを繰り返す事によってLEDを点滅させると発生する「残像現象」を利用しています。

OSL40562-IRの表示例

アノードコモン、カソードコモンとは

種類共通点灯
アノードコモン+側の電源がコモン(共通)セグをLOWで点灯
カソードコモン-側の電源がコモン(共通)セグをHIGHで点灯

使用部品・材料

総額で約470円です。(Arduino本体の値段を除く)

部品/材料値段備考
ブレッドボード¥270秋月電子の通販コード(P-00315)
ダイナミック接続4桁高輝度赤色7セグメントLED表示器 アノードコモン アノード共通接続¥200秋月電子の通販コード(I-03672)
カーボン抵抗器数円470Ω(4個)を使用。

配線図

Arduinoのデジタル1-4ピンはOSL40562-IRの4つのアノードに470Ωでプルアップをしています。5-12ピンはOSL40562-IRの1,2...の順番で使用しています。

次の2枚は公式データシートより引用(OSL40562-IR.pdf)

OSL40562-IRのピン配置は部品裏面に「1」と「12」が印字されています。ピン番号は1から半時計周りとなります。

スケッチ(プログラム)

スケッチを実行すると7セグに左から1,2,3,4を表示します。

const int dig1 = 1;
const int dig2 = 2;
const int dig3 = 3;
const int dig4 = 4;

const int a = 12;
const int b = 10;
const int c =  8;
const int d =  6;
const int e =  5;
const int f = 11;
const int g =  9;
const int dp = 7;

// 全てのDIG(桁)をクリア
void clearDigit(){
  for(int i = 0; i < 4; i++){
    digitalWrite((i+1),LOW);
  }  
}
// 全てのセグ(A-G,DP)をクリア
void clearSegment(){
  for(int i = 5; i < 13; i++){
    digitalWrite(i,HIGH);
  }  
}

void setup() {
  // 全てのピンを出力にする
  for(int i =0; i < 13; i++){
    pinMode((i+1),OUTPUT);
  }
  
  // 全てのDIG(桁)をクリア
  clearDigit();
  
  // 全てのセグ(A-G,DP)をクリア
  clearSegment();
}
 
void loop() {
  // DIG.1(桁数1) → 1を表示
  clearSegment(); clearDigit();  
  digitalWrite(dig1,HIGH); 
  digitalWrite(b,LOW);  digitalWrite(c,LOW);
  delayMicroseconds(50);
  
  // DIG.2(桁数2) → 2を表示
  clearSegment(); clearDigit(); 
  digitalWrite(dig2,HIGH);
  digitalWrite(a,LOW);  digitalWrite(b,LOW);  digitalWrite(d,LOW); 
  digitalWrite(e,LOW);  digitalWrite(g,LOW);  
  delayMicroseconds(50);  

  // DIG.3(桁数3) → 3を表示
  clearSegment(); clearDigit();  
  digitalWrite(dig3,HIGH); 
  digitalWrite(a,LOW); digitalWrite(b,LOW);digitalWrite(c,LOW);
  digitalWrite(d,LOW); digitalWrite(g,LOW);
  delayMicroseconds(50);

  // DIG.4(桁数4) → 4を表示
  clearSegment(); clearDigit();  
  digitalWrite(dig4,HIGH); 
  digitalWrite(b,LOW); digitalWrite(c,LOW);digitalWrite(f,LOW);
  digitalWrite(g,LOW);
  delayMicroseconds(50);  
}

抵抗値の計算

Arduinoの電源は5V(V)。順方向電圧(DC Forward Voltage/VF)は標準2.0V。電流(DC Forward Current)の絶対最大定格(Absolute Maximum Rating)は20mA(IF)。オームの法則で算出すると最低でも150Ωは必要となります。

150Ω = (5V - 2.0V) / 0.020A

電流は5mAでも十分な輝度を得られるみたいです。その場合の抵抗値は640Ω。手元にありませんので470Ωを使用しました。(電流は約6.8mA)





掲示板

ArduinoやRaspberry Piなどの電子工作の掲示板を作成しました。質問やわからない事は電子工作 (Arduino・ラズパイ等)でユーザー同士で情報を共有して下さい。

関連記事



公開日:2017年07月08日 最終更新日:2017年08月02日
記事NO:02457