ラベル LED の投稿を表示しています。 すべての投稿を表示
ラベル LED の投稿を表示しています。 すべての投稿を表示

2010年1月24日日曜日

ArduinoでLEDを点滅させる

この投稿は、建築発明工作ゼミ2008を参考に、現在の仕様にあわせて新たに書き起こしたものです。
この投稿内容については、上記ブログ管理人のkousakuさんの許可を得ております。

Arduinoのスケッチは、基本的に以下のような構成になっています。

void setup(){

    //初期設定のプログラム
}

void loop(){

    //ループ処理のプログラム
}

setup()は、スケッチが実行される最初に、一回だけ実行される特別な関数です。『 { 』と『 } 』で囲い、その中に初期設定を記述します。
後述するスケッチでは、pinMode()を使って基盤上のどのピンを出力または入力で使いたいのかを設定しています。

setup()内の処理を終えると、次はloop()関数内の処理に移ります。
loop()は、setup()関数内の初期設定やsetup()上部で宣言された変数、defineで定義された定数などの設定値を使い、入力値の加工や、どのピンにどんな値をどのように出力すればよいかなどの計算をさせるための処理プログラムを記述します。
この中に記述された処理は、電源がつながっていてなんらかのトラブルがない限りループし続け、処理を続けます。

Arduino IDEでスケッチを書き、LEDを点滅させてみます。
まずは、以下のように、LEDをArduinoに直接セットします。
アノードはデジタル13ピン、カソードはGNDに接続します。


次にArduino IDEを起動させ、以下のようなスケッチを書いてみます。


スケッチの説明をします。
1. LEDのアノードを差し込むデジタルピンの番号を、任意でつけた "ledPin" という名前の変数に格納します。
変数とは、スケッチで扱う様々な値をいれておく箱のようなものと考えてください。この箱(変数)を使うと、スケッチ上のいろんな箇所で、変数名を記述するだけで入れておいた値を使う事ができます。もし変数を使わなかったら、上記の "ledPin" と記述されている箇所すべてに値(この場合は13という数値)を書き込まなければなりません。例えばもし「13」という値を変えてみたいと思った時に、"ledPin" と書かれている箇所すべてを書き直す事になります。変数を設定しておけば、1行目の「13」という値を書き換えるだけで済みます。
その他に様々な不便なことが出てくるのですが、今回は割愛します。

int ledPin = 13;

これは、整数型(integer)の値13を変数 ledPin に代入するという意味です。決してイコール(等号)ではないので、間違えないようにしてください。スケッチ内で等号を記述するときは、== と書きます。条件分岐の構文 if 文などでよく使います。プログラムでは、式の右辺から評価(大雑把に言うと計算するということ)し、左辺に代入もしくは比較します。

2. setup()関数(上記参照)

3. pinMode()関数で、"ledPin" の値(この場合は13)のピンを「OUTPUT」(出力)に設定します。

4. loop()関数(上記参照)。関数内の処理のループが始まります。

5. digitalWrite()関数で、"ledPin" の値(この場合は13)のピンを「HIGH」にします。つまり、13ピンに差し込んでおいたLEDのアノードに、5Vの電圧を出力します。そうすると、LEDが光ります。

6. delay()関数で、()内の指定したミリ秒だけ現状を維持します。1000ミリ秒、つまり1秒間LEDが光り続けます。

7. digitalWrite()関数で、"ledPin" の値(この場合は13)のピンを「LOW」にします。つまり、13ピンに差し込んでおいたLEDのアノードに、0Vの電圧を出力します。そうすると、LEDの光りが消えます。

6. delay()関数で、()内の指定したミリ秒だけ現状を維持します。1000ミリ秒、つまり1秒間LEDの光りが消え続けます。

-> 5. に戻って処理を繰り返します。


左側の数値はスケッチ説明用の行番号なので、実際に入力する必要はありません。
ArduinoをPCに接続し、ボードとシリアルポートの設定を確認します(ここの「Arduino ボードの選択」と「シリアルポートの選択」を参照)。
Arduinoボード上の「PWR」ランプが光っていることを確認したら、Arduino IDEの「Verify」ボタンをクリックします。スケッチに不備があれば、
スケッチ記述エリア下部のモニタにエラーメッセージが表示されます。
エラーがなければ、「Upload」ボタンをクリックしてArduinoボードにスケッチを送信します。
成功すれば、モニタに「Done uploading」と表示されます。
Arduinoに差し込んだLEDが、1秒のタームで点滅を始めるはずです。

電子回路の基礎 -4 LEDについて

この投稿は、建築発明工作ゼミ2008を参考に、現在の仕様にあわせて新たに書き起こしたものです。
この投稿内容については、上記ブログ管理人のkousakuさんの許可を得ております。


LEDライト

簡単にLEDを説明します。
LEDは電流を一方向にしか流さない特性があるため、+と-を電源に対して正しくつながないと発光しません(逆につないでも壊れるということは、ほぼありません)。上図のように、通常二つの端子(アノードとカソード)があります。アノード側をプラスに、カソード側をマイナス(GND)に接続します。

LEDの多くは2.5V前後の電源で発光するようにつくられています。正確に言うと、+から-にかけて、その両端にかかる電圧の差(電圧降下)が2.5V前後必要であるということです。単三乾電池は1.5Vですから、一つでは光らせる事はできません。そして、Arduino基盤上の5V電源とGND(0V)に直接つなぐと、電圧降下の差が大きすぎて壊れる恐れがあります。そのためにArduinoに接続する回路に抵抗をかませる必要があります。

Arduino基盤の13番ピンは特別で、抵抗なしで直接つなぐことができますが、0〜12番ピンに接続する際には、抵抗(220〜470Ω程度)を直列つなぎしてください。LEDによって特性が異なりますので、より精確に行いたい場合は、購入する際に使用電圧や最大電流についてメモしておくか、付属のデータシートを参考にしてください。


アノード側に抵抗をつないだ場合は、抵抗を通して5Vの電圧が2.5Vまで下げられ、LEDによって2.5Vから0Vに下げられます。
カソード側に抵抗をつないだ場合は、LEDを通過することで5Vの電圧が2.5Vまで下げられ、抵抗によって2.5Vから0Vに下げられます。
最初にプラス側で電圧をさげておくか、最後にマイナス側で電圧を下げるかという違いです。もし、抵抗を取付けなければ、LEDにおいて5Vから0Vに一気に下げられ、電位差が5Vになってしまい使用電圧である2.5Vをはるかに上回り破損してしまうという感じです。抵抗の取付けについては、回路設計やLED の特性に応じて使い分けてください。