編集履歴一覧に戻る
R_Castleのアイコン画像

R_Castle が 2019年12月26日21時19分18秒 に編集

初版

タイトルの変更

+

ArduinoUNOで”改めて”LEDを光らせてみる

タグの変更

+

Arduino

+

ブレッドボード

+

LED

+

回路

本文の変更

+

こんにちは、redと申します。 Arduinoマイコンボードを入手して、プログラムの書き込みが出来る様に様になったら、マイコンの外に色々な回路を作って動作させてみましょう。 机の上で複雑な処理を行うプログラムも良いですが、私の方ではマイコンを積んで動くモノの作り方を重点的にご紹介していけたらと思います。 既にelchikaの中でも一度LEDの点滅、いわゆる **「Lチカ」** プログラムを動かそうという記事が投稿されていますので、おさらいも兼ねて一通りなぞりながら動かしてみます。 # Arduinoについて Arduinoをはじめとしたさまざまなマイコンボードには、あらかじめ複数の信号を取り出したり読み取らせたりする為の「ポート」が用意されています。 Arduinoの代名詞的存在の標準モデルでもあるArduinoUNOの場合、次の画像の様に「外部への電源ポート」「デジタルポート」「アナログポート」の3種類に分けてコネクタが配置されています。 ![Port_Arduino.jpg](https://camo.elchika.com/1c6925c86f98f950a191d3c141b9c360b3d66425/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f66646631626565652d663838622d343063352d613361662d3738333664376565353934382f62373435666363352d333832642d346563342d616333312d313936346366623062346431/) デジタルって何?アナログって何?と言う人は、プログラムでON/OFFを制御できるスイッチがデジタルポート、個数で測れない様な量の割合(マイコンボードは大体の場合で電圧になりますが)をプログラムで読み取るのがアナログポートだと考えておけばいいと思います。 # ブレッドボードの使い方  マイコンから信号を取り出して、LEDを光らせる回路を作るときには、このポートから単線ワイヤーと呼ばれる電線を利用して信号を取り出します。 製作には「ブレッドボード」を使用します。実験用や小規模な回路を作る際に利用される器具で、電気回路というと必ずと言って良いほどに登場します。「はんだ付け」をしなくても動作する回路を自作できるので、机の上で手軽に電子回路を製作できるのが魅力です。 ![breadboard.JPG](https://camo.elchika.com/4fbac24b580426dbc8d1fba84e2c99bf88491185/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f66646631626565652d663838622d343063352d613361662d3738333664376565353934382f34626138383066622d623963362d346662612d616336332d343633656466356538643730/) 縦横に穴が沢山開いている少し厚みのある板状の機材ですが、この穴に部品や電線を差し込んで回路を作っていきます。 ブレッドボードについては、販売会社様のWEBサイトに、非常に分かり易い解説が掲載されていますのでこちらをご覧頂ければと思います。 --- [Sanhayato社の技術ブログURLはこちら](https://www.sunhayato.co.jp/blog/2015/03/04/7) --- ブレッドボードの同じ列の穴に電子部品を差し込むと、電気的に接続された状態になります。これを利用して回路をブレッドボード上に作る事ができます。また、配線に使う単線ワイヤーは、専用のワイヤーセットが市販されていますので是非利用して下さい。 ![wireset_01.JPG](https://camo.elchika.com/a423c12aa4618e16989be35d17dfbe4b3571fbfe/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f66646631626565652d663838622d343063352d613361662d3738333664376565353934382f38396235616262322d343433322d343364302d613631372d303636343434343530663732/) この専用ワイヤーは工作用電線とは異なりビニールの被膜の中に針金状の金属線が1本入っていて、ブレッドボードへの抜き差しが容易にできる様になっています。細い針金や電子部品のリード線の端材を曲げて使用する方法もありますが、専用線は挿し込む先端部分以外は皮膜で絶縁されているので、初めて回路製作に挑戦する人は1セット持っておいた方が安全です。また、セットにはあらかじめ様々な長さにカットされたワイヤーが用意されているのでブレッドボード上でキレイに配線を行うことが出来ます。 ![wireset_02.JPG](https://camo.elchika.com/45145cd837736f5b6c5520fbf6f5e25bfeef593a/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f66646631626565652d663838622d343063352d613361662d3738333664376565353934382f34333966613766392d356538332d343265302d623739392d343132383362653763383439/) 次に、外に取り出すLEDを用意します。 # LEDについて LEDは **「発光ダイオード( Light Emitting Diode)」** とも呼ばれ、電池一個といった少ない電力で効率よく強い光を出す事ができます。最近では電球や蛍光灯の代わりにも使用される様になっている電子部品です。 電子工作をする時に頻繁に登場するLEDで一番多く目にするであろうタイプは下記の写真の様な先の丸まった円筒の様な形をしています。 ![LEDs_01.JPG](https://camo.elchika.com/c9d36a9979282100efc2727c6dd7e212b510a78b/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f66646631626565652d663838622d343063352d613361662d3738333664376565353934382f36383461656635382d626432312d343633372d616463612d353230326630663161623961/) 樹脂で形作られた部品の中に二つの小さな金属板が並んで収められていて、この金属板の間で小さな放電現象によって生じる光を利用しています。 ![LEDs_02.JPG](https://camo.elchika.com/c94833d5011039d00579dc38f0a4791f9e432d04/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f66646631626565652d663838622d343063352d613361662d3738333664376565353934382f31383038393861652d346564312d343035372d613533352d383665366134313832663663/) 通常のLEDは、電源とつなぐ際にプラスとマイナスの方向が決められています。回路を作る時には向きを間違えない様に注意しましょう。ダイオードと呼ばれる電子部品は、通常決まった1方向にしか電流を流さない性質を持っています。LEDも同じ性能を持っていますが、接続する方向を間違えたまま、あまりに高い電圧を加えてしまうと破損してしまう事がありますので、ブレッドボードに挿す前には必ず部品の向きを確認しましょう。 専門用語ではプラス側を「アノード」、マイナスを「カソード」と呼びます。また、今回のLED等の場合、プラスのリード線が長めになっていて一目で区別できる様になっています。 ![LEDs_03.JPG](https://camo.elchika.com/ec7011cd7753b62e5b813db5a5387d742527d94e/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f66646631626565652d663838622d343063352d613361662d3738333664376565353934382f33336233636366382d373438352d343835302d623561622d376536396337303436653565/) この様に接続する方向が指定されている電子部品の場合、ユーザーが向きを間違えない様に色々な工夫が部品の形状や印刷といった方法で部品に盛り込まれています。 # LEDを使う時の注意点 Arduinoを使った電子工作の入門講座等で、LEDを ***直接マイコンのポートに挿して光らせている*** ケースをよく見かけます。 Arduino UNOの場合は13番ポートとGND(マイナス)の間にLEDを挿すだけで確かに手軽に確認できる方法なのですが、これからマイコンの外側に回路を作り、マイコンからではなく電池から電源を取り出して色々な回路を動かそう!という段階に進んでいくと、この直接挿す方法は少々危険が伴うという事を知っておいた方が良いと思います。 ![Sample_01.JPG](https://camo.elchika.com/ff5d4fed59d52b27fc18f6b99363f7415c92c7e6/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f66646631626565652d663838622d343063352d613361662d3738333664376565353934382f31616434363539342d343666642d343736372d396333622d626362643163663334636336/) 元々LEDは、加えられた電気エネルギーを効率よく光に変える事が出来る代わりに、それ単体では大量の電流が制限なく流れ込んでしまう性質をもっており、光に変換し切れない多過ぎる電流が熱に変化してLED自身を破損してしまいます。 ではなぜ ***Arduinoに直接挿しても大丈夫なのか?*** というと、マイコンボードは基本的に「電圧をON/OFFするスイッチ」の役割がメインであり、そのため信号コネクタから取り出せる電流自体が元々非常に少いのです。LEDを破損するほどの電流は引き出せないから、という単なる偶然による結果という事になります。 ++Arduinoの他機種や他のマイコンボードではポート電流について異なる場合がありますから注意してください++ 本来、LEDを光らせる際には **「電流制限抵抗」** と呼ばれる抵抗素子を間に割り込ませて、流れる電流を一定にするのが回路設計では一つの決まり事になっています。 ![Register_01.JPG](https://camo.elchika.com/0b41e01222b3258676e7285ddbad489070940aa5/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f66646631626565652d663838622d343063352d613361662d3738333664376565353934382f61306562383930392d386266622d346663372d386137362d643930393131613533616461/) 電子工作等では時々 **「充分大きな抵抗を入れておけば~」** といった記述で済ませてしまう場合が時々見られます。 折角LEDを光らせるのですから、思い通りの明るさになる様にちゃんと計算をして抵抗の大きさを決めて行きましょう。 # 電流制限抵抗の値を決める LEDの性能を示す仕様表やデータシートを良く見てみると、流せる電流の大きさが記載されています。この電流量までしか流れない様に割り込ませる抵抗の大きさを計算で求めます。 計算では中学校の理科で一度は誰もが聞いたことがある ***「オームの法則」*** を使います。 高校や専門課程に進学した場合は ***「キルヒホッフの第二法則」*** とも言いますが、多くの人はオームの法則の方が聞き覚えがあるかと思います。 *(オームの法則とかキルヒホッフの第一法則、第二法則とかリクエストがありましたらまた記事にまとめたいと思います)* #### <オームの法則> #### [電圧V]=[電流I]×[負荷R] この法則を用いて負荷=抵抗の値を計算するには、計算式を変形させて電圧を電流で割り算する形にします。 #### [電圧V]÷[電流I]=[負荷R] 今回使用したLEDの場合、素子に流せる電流の上限が30mA(ミリアンペア)となっていました。 実際には10mA~15mA位の範囲で使用するのが良いでしょう。また、今回使用するArduinoマイコンのデジタルポートがHIGH(ON)になった時の出力される電圧は5Vなので、ここから計算をしていくと #### [必要な抵抗値]=[信号の電圧5V]÷[LEDに流せる電流10mA] となるので、 #### [必要な抵抗値]= 500Ω(オーム) と求める事が出来ます。 本来はこの計算結果の抵抗を用意するべきなのですが、たまたま手元に500Ωの抵抗が無く、680Ωしかなかったのでこれを使用する事にします。 この抵抗を割り込ませた場合、5V÷680Ω=7mAしか電流が流せませんが、実験で点灯を確認するだけなら充分な明るさなのでこのまま回路を製作します。 ![Register_02.JPG](https://camo.elchika.com/f71cb6ac58aa8021d5a3955bb4922e681f3ed4ca/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f66646631626565652d663838622d343063352d613361662d3738333664376565353934382f38623730323032642d663666392d343636382d383366342d303938366131616666346566/) # ブレッドボードに回路を作る マイコンとブレッドボードを用意したら、マイコンのコネクタで「5V」と「GND」と示されているポートにワイヤーを差し込んでブレッドボードに接続します。 ![Step_100.JPG](https://camo.elchika.com/e7065ebe917a79bd505188d67bf0b1250973e860/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f66646631626565652d663838622d343063352d613361662d3738333664376565353934382f62366162393264372d623764372d343534662d623836302d653163363764303562653963/) 但し、回路を製作する作業中は電線や部品の差し間違い等で思わぬ事故につながる恐れがありますので、マイコンとPCをつなぐUSBケーブルや電池などの電源は外しておいてください。この時、ブレッドボードにワイヤーを差し込んだ列の穴すべてが一列に繋がっています。この穴のどこに挿しても、5VとGNDに回路をつなぐことが出来る様になりました。 次に、電流制限用の抵抗を差し込みます。 ![Step_101.JPG](https://camo.elchika.com/48586ec382e58a49fc9dedd48563b963a5ba9ba3/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f66646631626565652d663838622d343063352d613361662d3738333664376565353934382f39393864343430312d653130332d343565342d623734382d646534373435636362303364/) ![Step_102.JPG](https://camo.elchika.com/20248b256cee993afb63942f468da3e45c96dec4/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f66646631626565652d663838622d343063352d613361662d3738333664376565353934382f32613662623736312d356639382d343261632d613164302d353231333662306234626133/) 部品のリード線をラジオペンチなどで曲げながら挿し込みます。 次にLEDを向きに注意しながら挿し込んで、Arduinoのデジタルポート13番ピンと配線を接続したら回路は出来上がりです。 ![Step_103.JPG](https://camo.elchika.com/84f8264b09f20c50463cfe7cca21443be3b892d3/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f66646631626565652d663838622d343063352d613361662d3738333664376565353934382f65383530393236352d353532382d346233622d613133322d633362383231323461656565/) ![Step_104.JPG](https://camo.elchika.com/34178e816428d4a118a18d20523847591b3a87c0/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f66646631626565652d663838622d343063352d613361662d3738333664376565353934382f31313131386136342d616537322d346230612d613938622d353163633834306235366336/) ![Step_105.JPG](https://camo.elchika.com/c98c0e7dfb8c34ca0d7b7cf75da09be1efbf7095/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f66646631626565652d663838622d343063352d613361662d3738333664376565353934382f32393236376636362d626437352d346537342d383432302d666632663662303037653637/) 差し間違いが無いか確認したらUSBケーブルをつないで、LEDが点滅するプログラムを書き込んで動作を確認してみましょう。 ![Step_106.JPG](https://camo.elchika.com/2590ab4a5d6fe87b26a77997b80c77930f4108a0/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f66646631626565652d663838622d343063352d613361662d3738333664376565353934382f37356434303636372d353737392d343535622d383638392d343931653732353332613363/) ```html:基本的なLチカプログラム int LED=13; void setup() { pinMode(LED,OUTPUT); } void loop() { digitalWrite(LED,HIGH); delay(1000); digitalWrite(LED,LOW); delay(1000); } ``` 動作している事が確認できたら、もう少し回路を追加してちょっとした実験をしてみましょう。 # 交互にLEDを光らせる もう一つLEDを用意して、下図の様に回路を追加します。 ![Step_107.JPG](https://camo.elchika.com/7225ce9511669eaadd22543879e8a7576413a4ff/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f66646631626565652d663838622d343063352d613361662d3738333664376565353934382f34366462303938382d643336312d343964352d623132362d396564393766316430303731/) ![Step_108.JPG](https://camo.elchika.com/87c32de28e494e526c5a156d6e4ae36a0f69d2f0/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f66646631626565652d663838622d343063352d613361662d3738333664376565353934382f37663766313034302d656365302d346439372d623730632d643664363066316464646631/) この状態で先ほどのプログラムを動かすと、二つのLEDは交互に点いたり消えたりを繰り返している様に見えます。 ![Step_109.JPG](https://camo.elchika.com/abd4341366aab986735ee33e7da18cb0c26b957e/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f66646631626565652d663838622d343063352d613361662d3738333664376565353934382f36376331663136392d623161612d343465342d393835632d666139336365646338343234/) これは、片方のLEDはマイコンの信号が「HIGH」の時に電流が流れ、もう片方は「LOW」の時に電流が流れる様に回路が作られている為に交互に動いている様に見えています。 ![Step_110.JPG](https://camo.elchika.com/8feecc2f9188b533a01ec2462e1c8ac7b4fea29c/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f66646631626565652d663838622d343063352d613361662d3738333664376565353934382f62363364613863382d366439382d343031342d613439622d323262656533613430393736/) ![Step_111.JPG](https://camo.elchika.com/99fbc0d2efb042a15b5053cf924f619db92fbe4e/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f66646631626565652d663838622d343063352d613361662d3738333664376565353934382f38636135633835302d393662302d343866332d393631382d336136393938663062396436/) この様にマイコン等の電気信号が「HIGHの時に電流が流れる=回路が動作する状態」を専門用語では ***「正論理」*** 、逆に信号がLOWの時に回路が動作する状態を ***「負論理」*** と呼びます。 電子回路図を基にして図で描くと、下図の様になります。 ![Circuit_01.jpg](https://camo.elchika.com/135eaec87bc9de45b67d308a2705aa70d3676d3a/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f66646631626565652d663838622d343063352d613361662d3738333664376565353934382f63353064336163352d656562662d343861332d626461342d343435336132376537653763/) ![Circuit_02.jpg](https://camo.elchika.com/b7448e60daacd9297c3f55cc592de2a20382c395/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f66646631626565652d663838622d343063352d613361662d3738333664376565353934382f36393831666634312d616230322d343038332d623732372d616263343734613235316365/) ![Circuit_03.jpg](https://camo.elchika.com/8c5eddce5704371fcaffe712cc62d8dd841b7abe/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f66646631626565652d663838622d343063352d613361662d3738333664376565353934382f39323962396666382d626461372d343365382d626462362d623537643438633438356563/) 正論理/負論理については本格的に動く回路を製作する際に改めて書きたいと思いますので、今は「外の回路の作り方によってプログラムの動き方が変わる」という事を覚えておいてもらえればいいと思います。 厳密には、先ほども出てきた「キルヒホッフの法則」に基づいてどちらの論理も説明できるのですが、それを始めてしまうと普通に工学分野の専門授業の内容になってしまいますので、別の機会にしたいと思います。