{
"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
}