ピックワールド(PIC World)

インフォメーション

この記事は 2013年05月01日 に以下のカテゴリに投稿されました Arduino Blog.


Arduino UNO 基本編 – 2 外部に付けた LED をスイッチで制御してみる

先の記事で、Arduino UNO のボード上に載った PIN 番号 13 に接続された LED を 500 ミリ秒の間隔で点滅させてみました。

なんかその、少し点滅速度は速くなるものの、ずっと見てると最初と変わりが無いような気がしてくるので、ちょっと違う方法をやってみます。

今回の目的は、Arduino UNO の I/O ポートから線を引き出して、そこに LED とスイッチを付けて、スケッチにより制御を行う物です。
要するにボタン(スイッチ)を押されている間、外部に接続した LED を点灯するという事を目的にします。
ここでは以下の物を使用します。

今回使う機材

  • Arudino UNO 本体 (画像右)
  • タクトスイッチ (ブレッドボード上のちっちゃくて頭の黄色い物)
  • LED (抵抗の右)
  • 抵抗 250Ωぐらいの抵抗 (ブレッドボード上の左端に乗ってる)と10KΩの抵抗(負荷用)
  • ブレッドボード(小)(白くてアナがいっぱいあいた板)
  • ワイヤー類(ブレッドボード上の配線に使う)(下のケースに入ってる)

これらの部品で気お付けなければいけないのは LED には極性があると言うことです。
LEDの場合は一般的に足の長さで極性が表されています。アノード(+極)側のリード線が長くカソード(-極)側が短くなっています。でも基板に実装するときなど足を切ってしまうとわからなくなってしまいます。そのようなときには、LEDにもよりますがパッケージのカソード側が欠けていたり、内部の電極の形の大きい電極がカソードで、小さい電極がアノードと極性を見分けることができます。(全てではないのでご注意ください)

また、LED は +3V 程度で点灯する物が多いです。Arduino の出力電圧は、5V ですから、これを LED に合わせるために抵抗を使います。

昔、習ったと思いますが・・LED に 20mA の電流を流すことにして計算すると

E=I*R ですよね。だからぁ、R=E/I です。R=5/0.02 R=250Ω となるわけです。
まぁ、この抵抗値は、それほど厳密ではないので(この場合)近い数字の抵抗が用意できれば問題はありません。

さて、ブレッドボード上で、配線をしてみます。
え~と、LED は 12 番のピンに接続、スイッチは 7 番のピンに接続しましょう。

今回の回路

さて回路ができたの、Arduino IDE を起動してコードを入力していきます。

まずは宣言です。

// 7番ピンに接続したスイッチが押されている間、12番ピンに接続した LED を点灯する

const int LED = 12; // LED が接続されているピン
const int BUTTON = 7; // スイッチが接続されているピン

int val = 0; // 入力ピンの状態を val に格納する

次にボードの設定

void setup()
{
pinMode(LED,OUTPUT); // 12番のピンは出力
pinMode(BUTTON,INPUT); // 7 番のピンは入力

}

そしてコード(プログラム本体)

void loop()
{
val = digitalRead(BUTTON); // 入力を読み取り val に格納

// 入力は HIGH か?
if (val == HIGH) {
digitalWrite(LED,HIGH); // LED を点灯
} else {
digitalWrite(LED,LOW); // LED を消灯
}

}

全部まとめると

// 7番ピンに接続したスイッチが押されている間、12番ピンに接続した LED を点灯する

const int LED = 12; // LED が接続されているピン
const int BUTTON = 7; // スイッチが接続されているピン

int val = 0; // 入力ピンの状態を val に格納する

void setup()
{
pinMode(LED,OUTPUT); // 12番のピンは出力
pinMode(BUTTON,INPUT); // 7 番のピンは入力

}

void loop()
{
val = digitalRead(BUTTON); // 入力を読み取り val に格納

// 入力は HIGH か?
if (val == HIGH) {
digitalWrite(LED,HIGH); // LED を点灯
} else {
digitalWrite(LED,LOW); // LED を消灯
}

}

早速コンパイルして、Arduino UNO に転送します。

実行した結果はこちら。

スイッチのボタンを押すと、ちゃんと青い LED が点灯しますね。

次回はこれにもう少し機能を付け加えてみたいと思います。


2 Comments

  1. Minoru Shiohara
    2013/05/02
    minorus

    この回路とスケッチは、基本的な物ですが、Arduino UNO で外部のスイッチの状態を把握し、その状態を判断して、これまた外部の LED を点灯/消灯する物ですが、スイッチを各種のセンサー、LED をアクチェータ(モーターなど)に置き換えて考えると、いろいろな物を状況により制御することができるという最初の一歩でもあります。想像力を使って、様々な機器を考えてみてくださいね。

  2. […] 先の「Arduino UNO 基本編 – 2外部に付けた LED をスイッチで制御してみる」では、スイッチを押したときだけしか LED が点灯しないので、これを改造し、1 回スイッチを押したら点灯状態を […]

コメントを残す

最近の投稿

最近のコメント

アーカイブ