モーダルを閉じる工作HardwareHub ロゴ画像

工作HardwareHubは、ロボット工作や電子工作に関する情報やモノが行き交うコミュニティサイトです。さらに詳しく

利用規約プライバシーポリシー に同意したうえでログインしてください。

Arduino で作る 7 セグメント LED タイマー

モーダルを閉じる

ステッカーを選択してください

お支払い手続きへ
モーダルを閉じる

お支払い内容をご確認ください

購入商品
」ステッカーの表示権
メッセージ
料金
(税込)
決済方法
GooglePayマーク
決済プラットフォーム
確認事項

利用規約をご確認のうえお支払いください

※カード情報はGoogleアカウント内に保存されます。本サイトやStripeには保存されません

※記事の執筆者は購入者のユーザー名を知ることができます

※購入後のキャンセルはできません

作成日作成日
2017/01/21
最終更新最終更新
2024/12/25
記事区分記事区分
一般公開

目次

    Arduinoが趣味のエンジニアです。電子工作やプログラミングを楽しんでいます!

    Arduino の入門として、4 桁の 7 セグメント LED でカウントアップタイマーを作ってみます。PIN の電流制限を考慮してトランジスタを使用する必要があったり、桁数が多いためダイナミック点灯制御を用いなければならなかったりと、単なる LED 点灯制御と比較して考えなければならない事項は多めです。

    必要なパーツ

    ブレッドボードや配線を除くと、実験に必要なパーツは以下のとおりです。Arduino の電源は USB 経由で PC から供給します。

    • カソードコモン 7 セグメント LED OSL40562-LR x1
    • トランジスタアレイ TD62083APG x1
    • 抵抗 180Ω x8
    • Arduino UNO R3 x1

    回路図

    トランジスタアレイによるスイッチング

    OSL40562-LR のピンは 12 本あります。6,8,9,12 の 4 本はどの桁を点灯させるかを制御するために利用します。1,2,3,4,5,7,10,11 の 8 本は各桁内で点灯するセグメント LED に対応しており、組み合わせで数字等を描画します。例えば 1,2,3,4,5,7,10,11 のすべてを 180Ω 抵抗を介して 5V 電源に接続した状態で 6 だけを GND に接続すると、左側の 1 桁が小数点を含めて全点灯し、右側の 3 桁は消灯したままになります。

    このとき、OSL40562-LR はカソードコモン (-) ですから、赤色 LED における電圧降下が約 1.9V だとすると、アノードピン (+) の 1,2,3,4,5,7,10,11 にはそれぞれ (5V - 1.9V) / 180Ω = 17.2mA の電流が流れ込み、カソードピン (-) の 6 から 17.2mA * 8 = 138mA の電流が流れ出ることになります。ところが、Arduino UNO のデジタル入出力ピン 2-13 はそれぞれ 20mA を越える電流を流せません。そこで、トランジスタを 8 個内蔵したトランジスタアレイ TD62083APG を利用して、カソードから流れ出る電流は GND に直接流れるようにします。Arduino の 6,8,9,12 ピンは OSL40562-LR のカソードピンから電流を流すかどうかをスイッチング制御する目的で利用します。

    ダイナミック点灯制御

    OSL40562-LR は構造上、各桁で異なるパターンの LED を点灯させることができません。そのため、一桁だけを点灯させた状態を各桁について順々に繰り返すダイナミック点灯で制御します。人間の目の残像効果があるため、高速に制御することで、全桁が異なるパターンで同時に点灯しているように見えます。

    制御プラグラム

    Arduino のスケッチです。setup 関数内でデジタル入出力用の PIN 2-13 を初期化します。loop 関数が実行される度に起動してから経過した時間を取得し、4 桁の LED をそれぞれ delay で 2msec だけ点灯させます。

    // 点灯パターン
    bool patterns[][8] = {
      //  2
      // 1 0
      //  3
      // 7 4
      //  65
      {1,1,1,0,1,0,1,1}, // '0'
      {1,0,0,0,1,0,0,0}, // '1'
      {1,0,1,1,0,0,1,1}, // '2'
      {1,0,1,1,1,0,1,0}, // '3'
      {1,1,0,1,1,0,0,0}, // '4'
      {0,1,1,1,1,0,1,0}, // '5'
      {0,1,1,1,1,0,1,1}, // '6'
      {1,1,1,0,1,0,0,0}, // '7'
      {1,1,1,1,1,0,1,1}, // '8'
      {1,1,1,1,1,0,0,0}  // '9'
    };
    
    void setDigitAs(int digit, int num) {
      // 一つ前の LED を消灯
      if(digit == 0) {
        digitalWrite(5, LOW);
      }
      else {
        digitalWrite(digit + 2 - 1, LOW);
      }
    
      // num のパターンを設定
      for(int i = 0; i < 8; ++i) {
        digitalWrite(i + 6, patterns[num][i]);
      }
    
      // LED を点灯
      digitalWrite(digit + 2, HIGH);
    }
    
    void setup() {
      // デジタル入出力用の PIN 2-13 を初期化
      for(int i = 2; i < 14; ++i) {
        pinMode(i, OUTPUT);
        digitalWrite(i, LOW);
      }
    }
    
    void loop(){
      // 起動してから経過した秒数
      // https://www.arduino.cc/en/Reference/Millis
      unsigned long uptime = millis() / 1000;
    
      for(int i = 0; i < 4; ++i) {
        // i+1 桁 LED セグメントの数値を設定
        int n = uptime % 10;
        uptime /= 10;
        // i+1 桁目を n に設定して少し待つことで点灯時間の割合を増やします。
        setDigitAs(i, n);
        delay(2);
      }
    }
    
    Likeボタン(off)0
    詳細設定を開く/閉じる

    記事内で用いられたハードウェア

    • 名称個数商品リンク
    • ハードウェア画像-0Arduino Uno Rev31ハードウェアWebリンクAmazon
    • ハードウェア画像-1カソードコモン 7 セグメント LED OSL40562-LR1ハードウェアWebリンク秋月電子通商
    • ハードウェア画像-2サンハヤト SAD-101 ニューブレッドボード1ハードウェアWebリンクAmazon
    • ハードウェア画像-3トランジスタアレイ TD62083APG1ハードウェアWebリンク秋月電子通商
    アカウント プロフィール画像

    Arduinoが趣味のエンジニアです。電子工作やプログラミングを楽しんでいます!

    記事の執筆者にステッカーを贈る

    有益な情報に対するお礼として、またはコメント欄における質問への返答に対するお礼として、 記事の読者は、執筆者に有料のステッカーを贈ることができます。

    >>さらに詳しくステッカーを贈る
    ステッカーを贈る コンセプト画像

    Feedbacks

    Feedbacks コンセプト画像

      ログインするとコメントを投稿できます。

      ログインする

      関連記事

      • 内蔵LEDを点灯させるまで (Arduino)
        サムネイル画像-2f49b4ad94
        Arduinoとは Arduino は初心者でも入門しやすいマイコンボードです。アルデュイーノと読みます。マイコンとは家電などに内蔵されている小さなコンピュータで、マイコンが必要とする周辺機器一式と一緒に一つのボードにまとめたものがマイコンボードです。数あるマイコンの中で特にArduinoにはAVRマイコンが使用されています。2005年にイタリアで開始されたオープンソースハードウェアのプロジェクト...
        ねこねこ12/27/2018に更新
        いいねアイコン画像0
      • 虚仮威しの防犯装置 (Arduino)
        サムネイル画像-ed824a48bf
        人が接近すると防犯用の音を鳴らします。インターネットに接続してメール送信機能を追加すれば、虚仮威しどころか立派な防犯装置になります。センサの性能は視野角が約 120 度と広範囲で、距離もおおよそ 2m まで検知可能です。赤外線を発する人体や動物などが動くと反応します。自動ドアや照明の自動点灯にも応用されています。
      • Arduino で作る温度と気圧の計測基板
        サムネイル画像-aca6d0091b
        専用の IC を利用すると、簡単に温度や気圧を測定できます。インターネットに接続してグラフ化したりボットを作ったりと応用先は様々ですが、ここでは LCD に結果を表示する測定基板を作成します。 必要なパーツ 以下のパーツが必要になります。画像ではコンデンサを直列に接続したり抵抗を並列に接続したりしていますが、これは手元に適切な値のパーツがなかったためです。 高精度
      • 電力の無駄遣い (定電圧電源)
        サムネイル画像-eebe29d9ae
        マイコンを含む様々な IC を動作させるためには定電圧電源が必要です。USB ケーブルなどで供給する場合を除き、定電圧を出力するための回路が必要になります。ここでは、乾電池 9V 形から得られる電圧を 5V に変換し、更に 3.3V に変換し、最後に 5V に昇圧するという電力の無駄遣いともとれる基板を作ります。動作させるものはマイコンではなく燦然と輝く LED です。汎用基板として様々な場面で利...
      • 電子工作でインターネットに無線接続して通信を行う (Arduino)
        サムネイル画像-14bfffdc82
        四つの選択肢 WiFi シールド Arduino に接続することで WiFi の機能を拡張できるボードです。公式ページは以下のとおりです。 Arduino WiFi Shield (旧シールド) [Arduino WiFi Shield 101](ht