まなびサイエンス

Arduino で LED の点灯/消灯を切り替える

  • 公開 2017/03/30
  • 更新 2017/03/31
カバーイメージ
  • LED
  • Photo by Huseyin
    • CreativeCommons
    • Attribution
    • NonCommercial

 Arduino で LED を点灯させることができました! しかし、このままでは Arduino は単に電源を供給しているだけで、Arduino を使う必要が全くありません。そこで、次のステップとして、プログラミングを行い、Arduino から LED の点灯させたり、消灯させてみます。

Arduino IDE の準備

 Arduino でプログラミングを行うため、Arduino IDE のダウンロードページから、使っているパソコンの OS に合った Arduino IDE をダウンロード(Fig.1 )、インストールします。


Fig.1

電子回路の組み立て

 前回の LED を点灯させる回路を参考に、LED のアノード(足の長い方)につながっているジャンパ ワイヤを、11 番のデジタル出力ピンに差し替えます(Fig.2 )。この状態では、まだ LED は消えたままだと思います*1


Fig.2

プログラミング ~ LED を点灯させる

 それでは、いよいよプログラミングを始めます。Arduino IDE では、「C 言語(しー げんご)」と呼ばれるプログラミング言語でプログラミングを行います。インストールした Arduino IDE を起動すると、次のような画面が表示されます(Fig.3 )。Arduino のプログラムのことを、特に "スケッチ" と呼びます。


Fig.3

 この画面の上半分にスケッチを入力していきますが、最初から入力されている行がありますので、ハイライトされた行だけ入力すれば OK です。

void setup() {
  // put your setup code here, to run once:
  pinMode( 11, OUTPUT );
  digitalWrite( 11, HIGH );
}

void loop() {
  // put your main code here, to run repeatedly:

}

 スケッチを正しく入力できたら、メニューから[スケッチ]→[マイコンボードに書き込む]を選択します。スケッチに問題がなければ、Arduino にスケッチが転送され、LED が点灯します。

スケッチの説明

  • Arduino のリセット ボタンを押したり、Arduino を USB 端子に接続した時(電源通電時)に、void setup(){ ... } のカッコ内に書いたコードが一度だけ実行されます。
  • Arduino が通電している間、void loop(){ ... } のカッコ内に書いたコードが何度も実行されます。
  • pinMode( 11, OUTPUT ) では、11 番のデジタル入出力ポートを、出力(OUTPUT)として使うよう指定します。
  • digitalWrite( 11, HIGH ) では、出力として設定した 11 番のデジタル出力ポートに、5V(HIGH) を出力するように指定します。すると、5V→LED→GND と回路ができるので、LED が点灯します。

LED が点灯しない時は

エラーメッセージが表示される
 スケッチに間違いがあります。エラー メッセージには、どの行が間違っているのか行番号が表示されているので、大文字・小文字や数字、記号が正しく入力できているか確認します。
電子回路が正しいか確認します
 前回の記事に戻って、11 番ポートに接続されているジャンパ ワイヤを +5V ピンにつなぎかえて、LED が正しく点灯するか確認します。LED が点灯しなければ、正しく回路が組めていません。スケッチの前に、もう一度、電子回路が正しく組めているか確認します。

 LED が点灯しましたが、前回、LED を点灯させた時と何が変わったのか、一見すると全く違いが判りません。しかし、この LED は、たった今、あなたが作ったプログラム(スケッチ)に従って、Arduino が光らせています。次は、それを確かめてみます。

まとめ

  • Arduino IDE を使ってプログラム(スケッチ)を書いたり、作成したプログラムを Arduino に転送する。
  • Arduino では、"C 言語"(に非常によく似た)というプログラミング言語でプログラミングを行う。

プログラミング ~ LED を消灯させる

 次に、この LED を消灯させてみます。ジャンパ ワイヤを引っこ抜けば、LED は消灯しますが、ブレッド ボードや電子回路には一切手を触れず、同じ電子回路のままで LED を消灯させるにはどうすればよいでしょうか? 答えは「LED を消灯する」というスケッチ(プログラム)を書けばよいのです。

void setup() {
  // put your setup code here, to run once:
  pinMode( 11, OUTPUT );
  digitalWrite( 11, LOW );
}

void loop() {
  // put your main code here, to run repeatedly:

}

 led-on から一か所だけ変わっています。スケッチを入力できたら、先と同じように、メニューから[スケッチ]→[マイコンボードに書き込む]を選択します。スケッチに問題がなければ、Arduino にプログラムが転送され、LED が消灯します。

 LED が消灯しました。これも一見すると何が起きているのかよく判りません。電子回路は触らず、プログラムを一カ所、HIGHLOW と書き換えただけです。つまり、あなたが作ったプログラム(スケッチ)に従って、Arduino が LED を光らないようにしたことが判ります。

プログラムの解説

  • digitalWrite( 11, LOW ) では、出力として設定した 11 番のデジタル出力ポートに、0V(LOW) を出力するように指定します。すると、0V→LED→GND=0V と回路ができるので、LED は点灯しません。

まとめ

 電子回路を直接触らずとも、プログラムを書いて、LED を光らせたり、消したりできることが判りました。勘の良い人なら、プログラムで LED を光らせたり、消したりできるということは、LED をチカチカと点滅させるには、どうすればよいのか察しの付く人が居るかもしれません。次回、いよいよ(ようやく?) この "L チカ" をやってみたいと思います。

  1. *1 Arduino に既に何かプログラムが書き込まれたいた場合、点灯するかもしれません

カテゴリー

過去ログ