{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "オリジナルの作成: 2014/12/21" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# 09-7セグメントLEDを使ってみる\n", "数字(+アルファベット一部)を表示できる7セグメントLEDを使ってみましょう。" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## ブレッドボードを組み立てる\n", "7セグメントLEDをつないでみましょう。\n", "\n", "必要な部品は、以下の通りです。\n", "- Arduino (今回はArduino Pro Miniを使います)\n", "- 7セグメントLED(C-551SR)1個(カソード共通タイプです)\n", "- トランジスター(2SC1815)1個\n", "- 抵抗(4.7KΩ)1個\n", "\n", "部品が揃ったら、以下の様につないで下さい。\n", "\n", "" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 7セグメントのピン配置\n", "7セグメントのピンの配置 \n", "1\n", "は、以下の様になっています。\n", "\n", "\n", "\n", "C-551SRは、以下の様にカソードを共通とするタイプです。\n", "\n", "" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 2SC1815のピン配置\n", "トランジスターは、7セグメントLEDをArduinoで駆動するための電流を供給するのと、 出力タイミングを制御するために使用します。 使用するトランジスターはよく使われる2SC1815です。\n", "\n", "2SC1815のデータシートで、ピンの設定を確認します。下の図は、下から見たピンの位置です。\n", "\n", "\n", "\n", "セレクターとベース間の抵抗は、7セグメントLEDの各LEDに10mAを供給すると70mAが必要となりので、\n", "\n", "$$\n", "ベース電流 = \\frac{5V - 0.6V}{4.7KΩ} = 0.9mA\n", "$$\n", "\n", "これから増幅率hf = 100として、以下の関係から90mAと十分な電流を供給できます。\n", "\n", "$$\n", "コレクター電流 = ベース電流*hf = 0.9 \\times 100 = 90mA\n", "$$\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## スケッチで動作確認\n", "できたブレッドボードの回路を以下のスケッチで動かしてみます。\n", "\n", "```C++\n", "int a = 11;\n", "int b = 10;\n", "int c = 8;\n", "int d = 7;\n", "int e = 6;\n", "int f = 5;\n", "int g = 4;\n", "\n", "int leds[] = { a, b, c, d, e, f, g};\n", "int sel = 12;\n", "\n", "int ptrn[][7] = {\n", " {1,1,1,1,1,1,0},\n", " {0,1,1,0,0,0,0},\n", " {1,1,0,1,1,0,1},\n", " {1,1,1,1,0,0,1},\n", " {0,1,1,0,0,1,1},\n", " {1,0,1,1,0,1,1},\n", " {1,0,1,1,1,1,1},\n", " {1,1,1,0,0,0,0},\n", " {1,1,1,1,1,1,1},\n", " {1,1,1,0,0,1,1},\n", " {1,1,1,0,1,1,1},\n", " {0,0,1,1,1,1,1},\n", " {1,0,0,1,1,1,0}, \n", " {0,1,1,1,1,0,1},\n", " {1,0,0,1,1,1,1},\n", " {1,0,0,0,1,1,1},\n", " {0,0,0,0,0,0,0}\n", "};\n", "\n", "void setup() {\n", " pinMode(sel, OUTPUT);\n", " pinMode(a, OUTPUT);\n", " pinMode(b, OUTPUT);\n", " pinMode(c, OUTPUT);\n", " pinMode(d, OUTPUT);\n", " pinMode(e, OUTPUT);\n", " pinMode(f, OUTPUT);\n", " pinMode(g, OUTPUT);\n", "\n", " digitalWrite(sel, HIGH); \n", "}\n", "\n", "void loop() {\n", " for (int i = 0; i < 17; i++) {\n", " for (int j = 0; j < 7; j++) {\n", " digitalWrite(leds[j], ptrn[i][j]); \n", " }\n", " delay(1000);\n", " }\n", "}\n", "```\n", "\n", "上手くできていたら、以下の様に0〜Fと全て消灯を1秒間隔で切り替えて表示します。\n", "\n", "" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 2", "language": "python", "name": "python2" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "2.7.13" } }, "nbformat": 4, "nbformat_minor": 0 }