らずらいと姫の挑戦日記(第5回)~LOWでLEDを光らせる~
2016-04-26
いままではピン(端子)からHIGHを出力してLEDを点灯させていましたが、LEDはLOWで点灯するのが一般的だそうです。今回はそれにチャレンジをしてみたいと思います。
LOWでLEDを光らせる
1)Lazurite IDEを開き、前回のプロジェクト「led7」を開いて、下記のプログラムをコピーペーストします。1行目のヘッダーは消さないでくださいね。点滅時間を少し長くします。
そのプログラムがこれ↓↓↓
[c]
void setup() {
// initialize the digital pin as an output.
// Pin 13 has an LED connected on most Arduino boards:
pinMode(2, OUTPUT);//赤
pinMode(9, OUTPUT);//青
}
void loop() {
digitalWrite(2, HIGH); // set the LED on
digitalWrite(9, LOW);
delay(1000); // wait for a second
digitalWrite(2, LOW); // set the LED off
digitalWrite(9, HIGH);
delay(1000); // wait for a second
}
[/c]
2)LED①とLED②を以下のようにブレッドボードに差し込みます。(前回とは長い針と短い針が逆になります。)
- LED①の長い針→B-4
- LED①の短い針→A-4
- LED②の長い針→B-5
- LED②の短い針→C-5
3)Lazuriteとブレッドボードをケーブル3本で繋ぎます。
- ケーブル①→Lazuriteの2番ピンとブレッドボードのA-1
- ケーブル②→Lazuriteの9番ピンとブレッドボードのC-1
- ケーブル③→Lazuriteの3.3VピンとブレッドボードのB-1(前回はGNDから繋ぎました。)
4)PCとLazuriteをUSBで繋ぎます。
5)ツール → オプション → LAZURITE Basic を選択
6)ツール → シリアル通信 → 通信ポート → COM○○○(表示されたものでOK) を選択後、マイコンボードへ通信(赤丸のアイコン)をクリック
7)プログラム実行後・・・
最初に9番ピンに繋いでいる、青から点滅がはじまりました!
LEDを1個にして、HIGHの時間とLOWの時間を変えてみる
そのプログラムがこれです。↓↓↓
[c]
void setup() {
// initialize the digital pin as an output.
// Pin 13 has an LED connected on most Arduino boards:
pinMode(2, OUTPUT);
}
void loop() {
digitalWrite(2, HIGH); // set the LED on
delay(500); // wait for a second
digitalWrite(2, LOW); // set the LED off
delay(1000); // wait for a second
}
[/c]
1)Lazuriteを開き、上記プログラムをコピーペーストします。(1行目は残してね!)
2)Lazuriteとブレッドボードをケーブル3本で繋ぎます。
- ケーブル①→Lazuriteの3.3VピンとブレッドボードのA-1
- ケーブル②→Lazuriteの2番ピンとブレッドボードのB-1
- ケーブル③→LazuriteのGNDピンとブレッドボードのC-1
3)LEDをブレッドボードに差し込みます。
- Part1 : HIGHでONの場合 LEDの長い針→B-5 短い針→C-5
- Part2 : LOWでONの場合 LEDの長い針→A-5 短い針→B-5
4)PCとLazuriteをUSBで繋ぎます。
5)ツール → オプション → LAZURITE Basic を選択
6)ツール → シリアル通信 → 通信ポート → COM○○○(表示されたものでOK) を選択後、マイコンボードへ通信(赤丸のアイコン)をクリック
7)プログラム実行します。
LOWでLEDが光るって、どういうこと??
二通りの方法でLEDが点灯することがわかりました♪
LEDの長い針の+から短い針の-に電気が流れると光るので、LEDの位置を変えれば光りますが、どうもイメージがわかないので、身近なもの『ホース』で考えてみました。
● Part1タイプ : HIGHでONの場合
ホースの先を蛇口に直接とりつけ蛇口をひねると水が流れます。これは蛇口をひねると水が流れて(電気が流れてHIGHになる)水はホースを通ってLEDを点灯させ、地面(GND)に流れていきます。蛇口は水を供給する元にあるということですね。
- Part2タイプ : LOWでONの場合
LOWはホースで水を出すところに蛇口がついていると考えたらわかりやすかったです。ホースは常時、水源(3.3V)につながっていて、ホースに水が溜まっています。手元のレバーを操作するとホースにたまっていた水が外に流れ始めて(電気をGNDに流して)、LEDが点灯します。排出する部分に持ってきた蛇口が電気でいうLOWを出力するという事なんですね。
実はLEDはLOWで点灯させるというのが一般的だそうです。詳しくはおまけコーナーを見てください。
次回のらずらいと姫の挑戦日記(第6回)は5月10日(火)、「☆無線デビュー☆」をお届けします。
おまけ:
こんにちは。Lazuriteの開発者1号です。LEDはなぜLOWで点灯させるのが多いのかについて、説明をさせて頂きます。
このマイコンの端子の中は、HIGHを出力するスイッチ(P型MOSトランジスタ/PMOS)と、LOWを出力するスイッチ(N型MOSトランジスタ/NMOS)で構成されています。PMOSは「電源から端子に電気を流す」、「電気を流さない」を制御することが出来ます。一方、NMOSは「端子からGNDに電気を流す」、「電気を流さない」を制御することが出来ます。
機能的にはLEDの制御をどちらでも行うことはできるのですが、NMOSを使用してLEDを点灯させるが一般的です。その理由はNMOSとPMOSで電気を流す能力が異なるためです。同じ大きさのNMOSとPMOSでは電気の流れやすさ(移動度)が異なります。なんと、NMOSの方が4倍もたくさんの電気を流すことが出来るのです。水道でいうと、同じ蛇口のサイズでもホースの先につけたほうがたくさん水を流せるというというわけです。これは、LSIに使用されている半導体の材質であるシリコン(Si)の一般的な特性です。
ECOの時代には節水の方がいいんじゃないかって??
能力の低いもので使ってたくさんの電気を流そうとすると、サイズの大きいものにしなくてはいけなくなったり、発熱しして捨てる電力が多くなるんです。
そうです!!省エネのためにNMOSを利用してLEDを点灯させているというわけです。