Arduinoで電子制御① Lチカ!

Arduinoって何?

まずは、Arduinoについて簡単にご紹介します。Arudinoは、イタリア製のオープンソースなマイコンボードです。オープンソースというのは文字通り、ソースがオープン。ハードウェアやソフトウェアの細部まで全部公開されてて、好きなようにいじって利用してね!って感じですね。実際、正規品以外のArduino互換ボードが多くのメーカから発売されています。

Arduinoは初心者にも取っつきやすいマイコンで、筆者もこれでマイコンデビューしました。色々なタイプのボードがありますが、最も基本的なArduino UNO(ウノ:イタリア語で”1”の意味)が最初の一台としては最適でしょうか。このブログでも、基本的にはArduinoUNOを使って記事を書いていく予定です。

部品の基礎知識

Arduino UNO

Arduino説明 上の画像がArduino UNOの外観です。製造された時期によって細かくマイナーチェンジされてますが、基本的なところは変わってません。中央にある長方形の部品がマイコン(micro computer)で、ここがいわば脳みそに当たる部分です。このマイコンにスケッチ(Arduinoでは、プログラムのことを”スケッチ”と呼びます。)を書き込んで動作させます。

電源の取り方は色々可能ですが、一番基本になるのはUSBからの給電でしょうか。PCのUSBポートから直接動かせます。また、ACアダプタ(7~12V推奨)用コネクタも搭載しているので、PCがなくても家庭用コンセントから起動できます。Vinピンは電源の+と共通なので、ここを使えば電池ボックスからも給電可能です。内部にレギュレータ回路が搭載されていて、いずれの給電方法でも一定の3.3V,5Vの出力が利用できます。

本体の周囲にある黒い穴はピンと呼ばれ、ここに様々な部品やセンサを接続して使用します。大まかに3つのブロック(電源関連ピン、アナログ入力ピン、デジタル入出力ピン)に分かれていて、用途によって使い分けていきます。

詳しくはArduinoのHP等に詳しく紹介されていますので、より深く理解したい場合はそちらを参照してください。

LED(発光ダイオード)

続いてはLEDについてです。日本語で言うと発光ダイオード。その名のとおり光るダイオードで、本当にたくさんの種類があります(色の違いや明るさの違いなど)。安いものだと一個数円程度で入手できます。端子が2本あって、それぞれ長さが違います。足の長いほうの端子をアノード、足の短いほうの端子をカソードといって、アノードに+、カソードに-の電圧を加えることで発光します。この向きを間違えてしまって光らないことが稀に良くある。わかってるのにある。

抵抗

抵抗は、ひょうたんのような形の部品。LEDを扱うときには必ずセットで使用します。中学校で習ったオームの法則でいうところのRですね。名前の通り電流を流しにくくする(電流の流れに抵抗する)部品で、LEDに過電流が流れるのを防止するために使用します。(LEDはデリケートな部品なので、ちょっと電流を流しすぎると壊れます)LEDを守るという役割から、保護抵抗と呼ぶこともあります。

部品表面にはカラフルな腺が何本も描かれています。これはカラーコードというもので、色で抵抗値を表しています。詳しい値の読み方はここでは割愛します。ググれば山ほど記事が出てくると思いますので、それを参照してください。適切な値の決め方には簡単な計算が必要ですが、とりあえず220~1kΩあたりを使っておけば大丈夫だと思います。

 Arduino関連の書籍とか記事をみると抵抗を使わずに接続しちゃってるのが結構あります。Arduinoのデジタル出力電流はせいぜい40mAくらいなので、壊れないLEDの方が多いという判断なんだと思いますが、個人的にはちゃんと抵抗を接続することをおススメします。いつか痛い目をみます。

ブレッドボード

ブレッドボードのみ

ブレッドボード

直訳するとパン板でしょうか。図のように沢山の穴が開いていて、そこに部品を差し込んでいくだけで回路が組めちゃう素敵アイテムです。何度でも抜き差しできるから、配線ミスを気にせず回路を組むことができます。図のように太線の部分が内部で接続されているから、同じ線上に部品を指せば接続されるというしくみです。逆に、同一線上に部品の両端の足を指すと短絡(ショート)してしまうので注意が必要です。

Lチカ

配線してみる

今回は電子工作の第一歩ということで、Lチカに挑戦します。「LEDをチカチカさせる」でLチカですね。何はともあれ、次のように配線してみます。実を言うとArduinoには内蔵LEDというのがあって、わざわざ接続しなくてもLチカは可能なんですが、でもそれだと電子工作感がないので実際に配線してみましょう。

下の図でいうと、LEDは右側の足がアノード(長い方)になります。逆向きだと光らないので注意が必要です。

Lチカ_ブレッドボード

ArduinoにLEDを一つ接続

使用した部品
ブレッドボード1個
LED1個
抵抗(220Ω)1個
ジャンパー腺数本

スケッチ(プログラム)を書いてみる

Arduinoのスケッチは独自の言語(C言語ベース)で記述します。スケッチにはいくつか決まりごとがあるのですが、面倒なことはひとまず置いておいて、とにかく下記のスケッチを作成してArduinoに実行させてみましょう。

LEDがチカチカした!ら成功です。うまくいかな場合は、落ち着いて配線のミス(LEDの向き、接続ピン番号など)、スケッチのミスを良く確認しましょう。うまく動かないと焦りますが、問題点を見つけて修正していく作業によってスキルアップしていきます。デバッグこそマイコンの醍醐味です。

スケッチの意味

Arduinoのスケッチには、必ずvoid setup()っていう関数とvoid loop()っていう関数があります。名前の通りsetup関数はスケッチを正常に動作させるための準備の命令を記述する部分で、スケッチの初めに一度だけ実行されます。それに対してメインの動作を記述するのがloop関数で(C言語でいうmain関数)、点滅させる命令はここに記述します。

では今回のスケッチを関数ごとにみてみましょう。まずはsetup関数。今回はLEDを一つ点灯させるだけなので簡潔です。

pinModeという命令を使って、Arduinoの13番ピンを出力ピンに設定しています。13番ピンというのはLEDを配線したピンですね。この命令を忘れてもLEDは光るけど、ものすごく暗くなります(ピンモードの設定によって内部抵抗が変化するため)。LEDを光らせるとか、モータを回すとか、Arduinoからの信号で何かを動かしたい場合にはOUTPUTにしておく、って感じで覚えましょう。OUTPUTがあるということはINPUTもありますが、それはまた別の機会に。

続いてloop関数。

実際に点滅させる命令ですね。digitalWrite(13,HIGH)は、「13番ピンからデジタル信号を出力します」という意味です。デジタル信号というのは”ON”か”OFF”しかない信号のこと(1か0 HIGHかLOW ともいう)。ここでLEDが点灯します。

delay(100)は、プログラムを待機させる命令。Arduinoに限らずマイコンのプログラム処理は超高速なので、プログラム上でわざと待ち時間を設定します。100というのは待機時間で、単位はミリ秒(1秒=1000ミリ秒)。つまり「100ミリ秒待ちます」という意味ですね。

digitalWrite(13,LOW)は、「13番ピンのデジタル信号を止めます」となります。HIGHの反対でLOWです。ここでLEDが消灯します。

再びdelay(100)で「100ミリ秒待ちます」

Arduinoのloop関数は、最後まで実行すると自動的に最初に戻って繰り返すようになっているので、またdigitalWrite(13,HIGH)に戻ってずーっと繰り返されます。結果として、LEDが点滅し続けるということです。

こんな具合にLEDの点滅を記述することができます。ここまでの解説でわかる通り、点滅の速さを決めているのはdelay()の中の数字。ここを大きくすれば点滅が遅く、小さくすれば点滅が速くなるということです。適当に数値をいじって試してみましょう。

まとめ

こんな具合でみごとLEDの点滅・Lチカが実現できました!素晴らしい!

自分の書いたプログラム通りにモノが動くと嬉しいですよね。この嬉しさがマイコンを勉強する糧になります。では今回の内容を簡単におさらい

LEDを使うときには、必ず抵抗がセット

Arduinoのスケッチ(プログラム)には、setup関数とloop関数がある

digitalWrite(ピン番号,HIGH or LOW)でデジタル信号を出力

delay(Time)でプログラムを待機させる

これで電子工作の扉が開きました!Welcome to Arduino!!

Arduino UNOはAmazonでも買えます。

最初に買う参考書ならこちらがおススメ。

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です