超簡単!電子工作教室「7セグメントLED」(7segLED)を光らせてみた

アフィリエイト広告を利用しています
arduino
7segLED

「7セグメントLED」とは「7つに分かれているLED」のことですが、よぉ~く見ると、細長い6角形の棒が縦横に組み合わさっていますね。電卓の液晶もこの7セグメントですね。今回は「LED」

+1でドットの丸型セグメントもついています。こちらが下側になりますね。ありがたい。

足は10本もあります。この組み合わせで、光らせる場所が変わると思うんですが、・・・4桁のものは足が12本なんですね。また難しくなりますね。でも下の絵の情報を見つけたので、わかりやすく描いてみました。配線は分かりやすくなりました。仕組みはわかりにくいままですが。

③と⑧がコモンで、アノードコモンなら電源へ、カソードコモンならGNDへ。抵抗も忘れずに。

では、ひとつづつ光らせてみましょう。

  • 1桁7セグメントLED:1個
  • ブレッドボード:1個
  • 抵抗:330Ω(100~1Kくらい):1個
  • ジャンパー線:1本
  • バッテリーケース
  • 乾電池(ここでは単四乾電池2個)

順番にジャンパー線を差替えていきます。➀② ④⑤⑥⑦ ⑨⑩

ひとつづつ光らせることができました。

では、次に自動で光らせるタイプにつくりかえます。使用する材料を準備します。

  • 1桁7セグメントLED:1個
  • ブレッドボード:1個
  • 抵抗:330Ω(100~1Kくらい):1個
  • ジャンパー線:9本
  • Arduino本体:1個
  • USBケーブル:1本(PC⇔Arduino接続用)
  • パソコン:1台(ArduinoIDEインストール済)

では、配線をしてまいりましょう。③のコモンに抵抗をつなぎ、それからブレッドボードのマイナス(-)側につないで、ArduinoのGNDへつなぎます。左下➀番からはArduinoデジタル側2番。②番は3番。④番は4番。⑤番は5番。上側の⑩番は9番。⑨番は8番。⑧のコモンはブランク。⑦番は6番。

数字が1つづつ1秒ごとにカウントアップするものを作成してみたのです。

ソースコードは以下のとおり。

 const int pin[] = { 7, 6, 4, 3, 2, 8, 9, 5};
 const int pattern[11][8] = { {HIGH, HIGH, HIGH, HIGH, HIGH, HIGH, LOW,  LOW}, //0
                              {LOW,  HIGH, HIGH, LOW,  LOW,  LOW,  LOW,  LOW}, //1
                              {HIGH, HIGH, LOW,  HIGH, HIGH, LOW,  HIGH, LOW}, //2
                              {HIGH, HIGH, HIGH, HIGH, LOW,  LOW,  HIGH, LOW}, //3
                              {LOW,  HIGH, HIGH, LOW,  LOW,  HIGH, HIGH, LOW}, //4
                              {HIGH, LOW,  HIGH, HIGH, LOW,  HIGH, HIGH, LOW}, //5
                              {HIGH, LOW,  HIGH, HIGH, HIGH, HIGH, HIGH, LOW}, //6
                              {HIGH, HIGH, HIGH, LOW,  LOW,  LOW,  LOW,  LOW}, //7
                              {HIGH, HIGH, HIGH, HIGH, HIGH, HIGH, HIGH, LOW}, //8
                              {HIGH, HIGH, HIGH, HIGH, LOW,  HIGH, HIGH, LOW}, //9
                              {LOW,  LOW,  LOW,  LOW,  LOW,  LOW,  LOW,  HIGH}, //.
                         };

 int number = 0;
 
 void setup() {
   int i;
   for (i = 0; i < 8; i++) {
     pinMode(pin[i], OUTPUT);
   }
   clearLED();
 }
 
void loop() {
  displayDigit(number);
  delay(1000);
  number = (number + 1) % 10; // 0 から 9 までカウントアップ
}
 
 void clearLED() {
   int i;
   for (i = 0; i < 8; i++) {
     digitalWrite(pin[i], LOW);
   }
 }
 
 void displayDigit(int n) {
   int i;
   for (i = 0; i < 8; i++) {
     digitalWrite(pin[i], pattern[n][i]);
   }
 }

カウントダウンは以下

 const int pin[] = { 7, 6, 4, 3, 2, 8, 9, 5};
 const int pattern[11][8] = { {HIGH, HIGH, HIGH, HIGH, HIGH, HIGH, LOW,  LOW}, //0
                              {LOW,  HIGH, HIGH, LOW,  LOW,  LOW,  LOW,  LOW}, //1
                              {HIGH, HIGH, LOW,  HIGH, HIGH, LOW,  HIGH, LOW}, //2
                              {HIGH, HIGH, HIGH, HIGH, LOW,  LOW,  HIGH, LOW}, //3
                              {LOW,  HIGH, HIGH, LOW,  LOW,  HIGH, HIGH, LOW}, //4
                              {HIGH, LOW,  HIGH, HIGH, LOW,  HIGH, HIGH, LOW}, //5
                              {HIGH, LOW,  HIGH, HIGH, HIGH, HIGH, HIGH, LOW}, //6
                              {HIGH, HIGH, HIGH, LOW,  LOW,  LOW,  LOW,  LOW}, //7
                              {HIGH, HIGH, HIGH, HIGH, HIGH, HIGH, HIGH, LOW}, //8
                              {HIGH, HIGH, HIGH, HIGH, LOW,  HIGH, HIGH, LOW}, //9
                              {LOW,  LOW,  LOW,  LOW,  LOW,  LOW,  LOW,  HIGH}, //.
                         };

 int number = 0;
 
 void setup() {
   int i;
   for (i = 0; i < 8; i++) {
     pinMode(pin[i], OUTPUT);
   }
   clearLED();
 }
 
 void loop() {
   displayDigit(number);
   delay(1000);
   number = (number + 9) % 10; // Count down from 9 to 0

 }
 
 void clearLED() {
   int i;
   for (i = 0; i < 8; i++) {
     digitalWrite(pin[i], LOW);
   }
 }
 
 void displayDigit(int n) {
   int i;
   for (i = 0; i < 8; i++) {
     digitalWrite(pin[i], pattern[n][i]);
   }
 }
  • pin 配列は、各セグメントに対応するデジタルピン番号を格納しています。
  • pattern 配列は、各数字(0 から 9)および小数点に対応するセグメントの点灯パターンを定義しています。
  • setup() 関数では、各ピンを出力モードに設定しています。
  • clearLED() 関数は、すべてのセグメントを消灯させます。
  • displayDigit(int n) 関数は、指定された数字 n に対応するセグメントを点灯させます。

4桁のものもあるので、またこんど挑戦してみます。