isakon が 2020年08月21日10時44分53秒 に編集
筆者を明記した
本文の変更
elchika運営です!
elchika運営のisakonです!
この度、「電子工作のナレッジ共有コミュニティ elchika」がオープンいたしました:tada: :clap: 記念すべき1件目の投稿はやっぱりこれだよね!ということで、 サイト名の由来でもある**Lチカ**を実際にやってみようと思います。 ## 使用したもの 今回使ったものは以下の通りです。 ![使用した部品](http://storage.googleapis.com/elchika/static/article/00000001-0000-0000-0000-000000000000/overall.jpg) - [Arduino Uno R3](/dic/Arduino_Uno/) - [ブレッドボード](/dic/ブレッドボード/) - 赤色LED × 1 - 抵抗器(赤紫茶金、270Ω)× 1 - ジャンパー線 ### Arduino Uno R3 ![Arduino Uno R3](http://storage.googleapis.com/elchika/static/article/00000001-0000-0000-0000-000000000000/arduino_uno.jpg) 人気のマイコンボード、Arduinoシリーズの初心者向けボードです。 ### ブレッドボード サイズなど特に制限はありません。 ### LED 今回は赤色のLEDを使用しました。お好きなものを使用してください。 データシートなどで順電圧$V_F$の標準値(typ)を調べられるようなLEDだと便利かもしれません。 ### 抵抗器 抵抗器はLEDに電流が流れすぎないようにするために回路に組み込みます(電流抑制抵抗)。 今回は$270\Omega$(赤紫茶金)のものを使用しました。 抵抗器の抵抗値はカラーコードによって識別できます。 ![270Ω抵抗](http://storage.googleapis.com/elchika/static/article/00000001-0000-0000-0000-000000000000/resistor.jpg) 必要な抵抗値の算出ですが、キルヒホッフの第2法則を使うと適切な値が求められます。 「電気回路の任意の閉路について、電位差の総和は0である」といった内容の法則です。 ++**キルヒホッフの第2法則** 電気回路の任意の閉路について、電位差の総和は0である。 $\displaystyle\sum_{i=1}^{N} V_i = 0$++ 簡単に言うと、中学校で習う回路の電圧は経路の和になるやつを一般化したものです。 同様に中学校で習うオームの法則も多用するので復習しておきましょう:bulb: ++**オームの法則** $V = RI$++ 電源の電圧を$E$、赤色LEDに印加したい順電圧を$V_F$、直列回路に流したい順電流を$I_F$、求めたい抵抗値を$R$とすると、キルヒホッフの第2法則より次式が成り立ちます。 $E - V_F - RI_F = 0$ $R = \displaystyle\frac {E - V_F} {I_F}$ Arduinoの動作電圧は$5V$です。 データシートの標準値などを参考にし、LEDにかける順電圧を$1.9V$、順電流は$20mA$とすると、 $R = 155 [\Omega]$ となります。この抵抗値を上回るようにして、過大な電流が流れないようにします。 $270\Omega$の抵抗器を用いた場合は、流れる電流は約$11mA$になります:zap: LEDは微小な電流でも発光するので、$1k\Omega$程度の抵抗器を用いても発光するものも多いと思います。 ## Lチカ回路を作成する さて、ここからは回路を作成していきます。 今回はArduino Unoのデジタル13番ピンを出力に使うことを想定して設計します。 回路図は次のようになります。 ![Arduino UnoでLチカするための回路図](http://storage.googleapis.com/elchika/static/article/00000001-0000-0000-0000-000000000000/circuit.png) ![](http://storage.googleapis.com/elchika/static/article/00000001-0000-0000-0000-000000000000/fritzing.png) ちなみに、[Frizing](https://fritzing.org/home/)を使うと上図のような回路図を簡単に描くことができるのでオススメです:+1: ### LEDの極性について Lチカ回路を作成する際に気を付けたいのが、**LEDの極性**です。 ![LED](http://storage.googleapis.com/elchika/static/article/00000001-0000-0000-0000-000000000000/LED.jpg) 線の長いほうがアノード(+極)、短いほうがカソード(-極)です。 ダイオードの特性として、順方向に一定以上の電圧を印加したときに急激に電流が流れる性質があります。 逆方向に電圧を印加したときには電流はほとんど流れません。 しかし、ある一定以上の電圧を逆方向に印加すると素子を破壊してしまうので注意しましょう。~~筆者はこれで一度指を火傷してしまいました。~~ データシートには$V_R$やReverse Voltageといった項目にこの逆電圧の上限値が記載されています。 ### スケッチをArduinoに書き込む [Arduino IDE](https://www.arduino.cc/en/main/software)を使うと、Arduino互換のマイコンボードに簡単にプログラムを書き込むことができます。 Arduinoに書き込むプログラムのことをスケッチといい、C言語ライクなArduino言語を使って動作を記述していきます。 インストール方法については割愛しますが、インストーラーの指示に従えば迷わずにインストールできるはずです。 1秒ごとにLEDを点滅させるスケッチを作成しましょう。 `setup`関数でどのピンを出力にするかなどの初期設定を行い、`loop`関数に繰り返し行う操作を記述していきます。 この二つの関数はArduinoでスケッチを書くときには(どちらかの処理が不要だとしても)必須になります。 `pinMode(pin, mode)`関数は、引数で指定したピンの動作を入力か出力に設定します。 `digitalWrite(pin, value)`関数は、引数で指定したピンにHIGH($5V$)またはLOW($0V$)を出力します。 `delay(ms)`関数は、指定したミリ秒の時間だけプログラムを停止します。 ```arduino:Lチカのスケッチ #define LED_PIN 13 void setup() { pinMode(LED_PIN, OUTPUT); } void loop() { digitalWrite(LED_PIN, HIGH); delay(1000); digitalWrite(LED_PIN, LOW); delay(1000); } ``` Arduino本体へスケッチを書き込むときはUSBケーブルでPCと接続し、Arduino IDEの[ツール]タブからArduinoを接続しているシリアルポートを選択する必要があります。 その後、左上の→ボタンを押すと、スケッチがArduinoへ書き込まれます。 IDEの下部に「ボードへの書き込みが完了しました。」と表示されたら成功です! ### Lチカできた! スケッチを書き込むと`loop`関数に記述した操作がひたすら繰り返されるようになります。 LEDがチカチカ点滅しているはずです!光っていない場合は回路やスケッチを見直してみましょう:thinking: ![Lチカ!](http://storage.googleapis.com/elchika/static/article/00000001-0000-0000-0000-000000000000/lchika1.jpg) ![Lチカ!](http://storage.googleapis.com/elchika/static/article/00000001-0000-0000-0000-000000000000/lchika2.jpg) わあああああ✨ ## まとめ 今回はスタンダードなLチカ回路を作りました。 ただのLチカでもスイッチをつけたり、複数のLEDを制御したり、アイデア次第でいろんなチカらせ方ができます:bulb: あなたもelchikaで電子工作を始めてみませんか? ## 参考書籍 - Massimo Banzi、Michael Shiloh 著、船田 巧 訳『Arduinoをはじめよう 第3版』オライリー・ジャパン,2015年