ブレッドボードのLEDを点滅させる(Arduino)
まずは、LEDが正常に点滅するかテストします。
回路図のように配線します。
(図では、赤線が+側、緑線が-側です。)
この回路図の作図には fritzing を利用させて頂いております。
https://fritzing.org/home/
この接続は、
Arduinoの常時5V(+:赤線)ピン出力と、
GND(グランド)ピン(-:緑線)を接続して、
LED等の部品の確認のためLEDを点灯させてみるものです。
私のLEDには極性がありますので、
アノード側(足の長い方)が+になるように配置します。
抵抗は、極性はありませんから向きは問題ありません。
※配線を変更する場合は、
必ず、Arduinoの電源はOFFして下さい。(USBケーブルを抜く)
また、ブレッドボードへ外部電源等で電源供給を行っている場合も、
その電源を必ずOFFします。
※抵抗を2本並列に入れれば165Ωになりますが、
少し暗いですが点灯しないわけではないので、
330Ωの抵抗1本を使用することにします。
電源を入れる前に、
・ピンの接続状態(ボードにしっかりと差し込まれているか)
・LED発光ダイオードの向き(アノード側が+側になっているか)
・抵抗の抵抗値は適正か(指定範囲の値のものか)
・ブレッドボード上の配線に間違いはないか
・Arduino上のピンの差し込み位置に間違いはないか
などを確認して下さい。
また、電源投入後に点灯しない場合は再確認して下さい。
Arduinoの電源を入れます。(USBケーブルを接続する)
これでLEDが点灯すれば、LEDや回路は正常です。
また、抵抗値を計算せずに抵抗を入れている場合は、
明るさに注意して下さい。
高輝度LEDでもないのにあまりにも明るい場合は、
抵抗値を変更した方が良いかもしれません。
一般的なLEDなら、
150Ω~510Ω程度の抵抗で大丈夫だと思います。
続いて、
Arduinoで制御してLEDを点滅させてみます。
配線の違いによる、点灯・消灯のタイミングの違いを
確認するため、2通りの配線をやってみます。
まず1つめです。
ArduinoとPCとのUSBケーブルを外します。
Arduinoとの配線を回路図のように変更します。
(回では、赤線が+側、緑線が-側です。)
この時、私のLEDには極性がありますので、
アノード側(足の長い方)が+になるように配置します。
抵抗は、極性はありませんから向きは問題ありません。
デジタル13番ピン(+:赤線)と
GND(グランド)ピン(-:緑線)を接続します。
※GNDピン(-)は、5Vピンの隣に2カ所と
デジタル13番ピンの隣に1カ所ありますので、
どのGNDピン(-)に接続しても構いません。
では、ArduinoとPCのUSBケーブルを接続します。
ArduinoIDEで、メユー「ツール」から、
・ボード
・シリアルポート
の設定を行います。
ArduinoIDEでスケッチ(プログラム)します。
デジタル13番ピンを使って、2秒点滅、2秒消灯を
繰り返すプログラムを記述します。
void setup() {
// put your setup code here, to run once:
pinMode(13, OUTPUT); // 13番ピンを出力に割り当て
}
void loop() {
// put your main code here, to run repeatedly:
digitalWrite(13, HIGH); // 点灯
delay(2000); // 2秒停止
digitalWrite(13, LOW); // 消灯
delay(2000); // 2秒停止
}
ArduinoIDEで記述したプログラムをArduinoへ書き込みます。
この時、Arduino上の13番LEDとブレットボード上のLED点滅が
同じタイミングで点灯・消灯を繰り返していると思います。
digitalWrite(13,HIGH);
の時、Arduino上の13番LED:点灯、ブレットボード上のLED:点灯
digitalWrite(13,LOW);
の時、Arduino上の13番LED:消灯、ブレットボード上のLED:消灯
この回路の接続は、
一方をGND(グランド)ピンに接続しているため、
デジタル13番ピンが、digitalWrite(13,LOW)であるときは、
GND(グランド)ピンと同じ電位(電圧)となり、電位差が生じないので、
電流は流れずLEDは点灯しません。
デジタル13番ピンが、digitalWrite(13,HIGH)であるときは、
GND(グランド)ピンより、デジタル13番ピンの電位(電圧)が高くなり
電位差が生じ、GND(グランド)ピン方向へ電流が流れLEDが点灯します。
2つめです。
ArduinoとPCのUSBケーブルを外します。
Arduinoとの配線を回路図のように変更します。
(図では、赤線が+側、緑線が-側です。)
Arduinoの常時5Vピン(+:赤線)と
デジタル13番ピン(-:緑線)を接続します。
すでにArduinoへ転送済みのスケッチに
変更はありませんから、
回路の変更が完了したら、
ArduinoとPCのUSBケーブルを接続します。
この時は、
Arduino上の13番LEDとブレットボード上のLED点滅が
反対のタイミングで点灯・消灯を繰り返しています。
・・・同時に点灯せず、交互に点灯・消灯する。
digitalWrite(13,HIGH);
の時、Arduino上の13番LED:点灯、ブレットボード上のLED:消灯
digitalWrite(13,LOW);
の時、Arduino上の13番LED:消灯、ブレットボード上のLED:点灯
この回路の接続は、
一方を常時5Vピンに接続しているため、
デジタル13番ピンは、digitalWrite(13,HIGH)であるときは、
常時5VピンとGND(グランド)ピンは同電位(電圧)となり、
電位差が生じないので電流は流れずLEDは点灯しません。
デジタル13番ピンが、digitalWrite(13,LOW)であるときは、
常時5Vピンより、デジタル13番ピンの電位(電圧)が低くなり、
電位差が生じ、デジタル13番ピン方向へ電流が流れLEDが点灯します。
この2つのどちらが正しいかなどと考えがちですが、
本来は、機器全体の消費電力や待機電力、
また、使用する電子部品の特性などにより決定されます。
何より、回路がシンプルであることと、
まずは、自分に分かりやすいことが第1です。
気がつかれたかと思いますが、
このデジタル13番ピンに接続されたブレットボードのLEDが
電源供給時に一瞬点灯したと思います。
このデジタル13番ピンは、
電源供給時(初期化時)に一瞬、OUTPUT扱いで、HIGHとなます。
そのため、この13番ピンを使用する場合は、
このことを踏まえた上での使用が必要です。
今度は、2つのLEDを1秒毎に交互に点滅させるようにします。
また、デジタルピンもたくさん(0~13)ありますから、
デジタル13番ピンの使用を避けて、別のピンを使用します。
ArduinoとPCのUSBケーブルを外し、
回路図のように配線します。
デジタルピンは、6番、11番を使用します。
回路は、デジタルピンから、GND方向へ電流が流れる
ものとしました。
スケッチしてみます。
void setup() {
// put your setup code here, to run once:
pinMode(6, OUTPUT); // 6番ピンを出力に割り当て
pinMode(11, OUTPUT); // 11番ピンを出力に割り当て
}
void loop() {
// put your main code here, to run repeatedly:
digitalWrite(6, HIGH); // 点灯
digitalWrite(11, LOW); // 点灯
delay(1000); // 1秒停止
digitalWrite(11, HIGH); // 点灯
digitalWrite(6, LOW); // 消灯
delay(1000); // 1秒停止
}
ArduinoとPCのUSBケーブルを接続し、
スケッチをArduinoへ転送(マイコンボードへ書き込み)します。
この時、ブレットボード上の2つのLEDが交互に点滅していると思います。
最後に、この回路図の電圧、電流を測定してみます。
・A間、B間、C間の各電圧は、
マルチメーターのレンジを電圧、直流(DC)、
10V以上のレンジに設定します。
A、B、Cのところの、電子部品の足に、
テスターピンをあてて測定します。
※+、-を間違えないように注意します。
・A間の電流測定は、
マルチメーターのレンジを電流、直流(DC)、
100mA以上のレンジに設定します。
この図の、LEDのアノード側の足と、
アノード側に刺さっている抵抗の足を
ブレッドボードから抜きます。
抜いたそのその部品の足に、
抵抗側の足に+、LEDのアノード側の足に-の
テスターピンをあてて測定します。
※このときLEDは点灯します。
・抵抗の値が分からない時は、
抵抗をカラーコード(帯の色)で計算できますが、
マルチメーターのレンジを抵抗(Ω)、
レンジは、×1程度に合わせます。
この抵抗には極性はありませんから、
テスターピンをあてて測定します。
※アナログ式のものは0合わせが必要です。
※マルチメーターによっては、電圧、電流、抵抗などの設定だけで、
交流、直流やレンジなどの設定が不要なものもあります。