[[Arduino勉強会]] #contents 2014/12/21からのアクセス回数 &counter; ** ブレッドボードを組み立てる [#k566373a] 7セグメントLEDをつないでみましょう。 必要な部品は、以下の通りです。 - Arduino Pro Mini - 7セグメントLED(C-551SR) - トランジスター(2SC1815) - 抵抗(4.7KΩ) 部品が揃ったら、以下の様につないで下さい。 &ref(7SegmentLED_brd.png); *** 7セグメントのピン配置 [#b08ecb87] 7セグメントのピンの配置 ((CQ出版のhttp://www.cqpub.co.jp/hanbai/books/37/37271/37271_3syo.pdfの図3-1より引用)) は、以下の様になっています。 &ref(C-551SR_pin.png); C-551SRは、以下の様にカソードを共通とするタイプです。 &ref(C551X.png); *** 2SC1815のピン配置 [#l5f1d8b7] トランジスターは、7セグメントLEDをArduinoで駆動するための電流を供給するのと、 出力タイミングを制御するために使用します。 使用するトランジスターはよく使われる2SC1815です。 2SC1815のデータシートで、ピンの設定を確認します。下の図は、下から見たピンの位置です。 &ref(2SC1815_pin.png); セレクターとベース間の抵抗は、7セグメントLEDの各LEDに10mAを供給すると70mAが必要となりので、 $$ ベース電流 = \frac{5V - 0.6V}{4.7KΩ} = 0.9mA $$ これから増幅率hf = 100として、以下の関係から90mAと十分な電流を供給できます。 $$ コレクター電流 = ベース電流*hf = 0.9 \times 100 = 90mA $$ ** スケッチで動作確認 [#mc106f2d] できたブレッドボードの回路を以下のスケッチで動かしてみます。 #pre{{ int a = 11; int b = 10; int c = 8; int d = 7; int e = 6; int f = 5; int g = 4; int leds[] = { a, b, c, d, e, f, g}; int sel = 12; int ptrn[][7] = { {1,1,1,1,1,1,0}, {0,1,1,0,0,0,0}, {1,1,0,1,1,0,1}, {1,1,1,1,0,0,1}, {0,1,1,0,0,1,1}, {1,0,1,1,0,1,1}, {1,0,1,1,1,1,1}, {1,1,1,0,0,0,0}, {1,1,1,1,1,1,1}, {1,1,1,0,0,1,1}, {1,1,1,0,1,1,1}, {0,0,1,1,1,1,1}, {1,0,0,1,1,1,0}, {0,1,1,1,1,0,1}, {1,0,0,1,1,1,1}, {1,0,0,0,1,1,1}, {0,0,0,0,0,0,0} }; void setup() { pinMode(sel, OUTPUT); pinMode(a, OUTPUT); pinMode(b, OUTPUT); pinMode(c, OUTPUT); pinMode(d, OUTPUT); pinMode(e, OUTPUT); pinMode(f, OUTPUT); pinMode(g, OUTPUT); digitalWrite(sel, HIGH); } void loop() { for (int i = 0; i < 17; i++) { for (int j = 0; j < 7; j++) { digitalWrite(leds[j], ptrn[i][j]); } delay(1000); } } }} 上手くできていたら、以下の様に0〜Fと全て消灯を1秒間隔で切り替えて表示します。 &ref(7SegementLED_setting.png); ** コメント [#rdef8629] #vote(おもしろかった[2],そうでもない[1],わかりずらい[1]) #vote(おもしろかった[3],そうでもない[1],わかりずらい[1]) 皆様のご意見、ご希望をお待ちしております。勉強会で分からなかったこと等、お気軽に問い合わせて下さい。 スパム防止に画像の文字列も入力してください。 #comment_kcaptcha