それでは、Arduinoの統合開発環境「Arduino IDE」で、スケッチ(プログラム)を作成していきましょう(スケッチ1)。
const int LED_R=9; //LED 赤 const int LED_G=11; //LED 緑 const int LED_B=10; //LED 青 const int POTPIN_R = A0; //半固定抵抗 赤 const int POTPIN_G = A1; //半固定抵抗 緑 const int POTPIN_B = A2; //半固定抵抗 青 void setup() { //LEDのピンを出力に設定する pinMode(LED_R, OUTPUT); pinMode(LED_G, OUTPUT); pinMode(LED_B, OUTPUT); //半固定抵抗のピンを入力に設定する pinMode(POTPIN_R, INPUT); pinMode(POTPIN_G, INPUT); pinMode(POTPIN_B, INPUT); Serial.begin(9600); //シリアル通信をスタートする } void loop() { int potVal_R = analogRead(POTPIN_R); //半固定抵抗(赤)の値を取得 analogWrite(LED_R, potVal_R / 4); //LED赤の明るさを、入力された値の1/4に指定する int potVal_G = analogRead(POTPIN_G); //半固定抵抗(緑)の値を取得 analogWrite(LED_G, potVal_G / 4); //LED緑の明るさを、入力された値の1/4に指定する int potVal_B = analogRead(POTPIN_B); //半固定抵抗(青)の値を取得 analogWrite(LED_B, potVal_B / 4); //LED青の明るさを、入力された値の1/4に指定する //シリアルポートに各半固定抵抗値を出力する Serial.print(" R:"); Serial.print(potVal_R); Serial.print(" G:"); Serial.print(potVal_G); Serial.print(" B:"); Serial.println(potVal_B); }
1〜3行目は、フルカラーLEDの赤・緑・青のカラーに対応したデジタルピンを指定しています。5〜7行目は、半固定抵抗に接続されているアナログ入力ピンです。こちらも、赤・緑・青のカラーに対応しています。
11〜18行目は、既におなじみのピンモードの指定です。LEDにつなぐピンは「OUTPUT」、半固定抵抗につなぐピンは「INPUT」にします。
20行目で、初めて使用する「Serial.begin()」が登場します(詳しくは後述)。
23行目から始まるloop()の中で、調光を行います。24行目は、analogRead()を使って、赤の半固定抵抗値を読んでいます。Arduinoが読み取る値は、電圧(0〜5V)を0〜1023に変換したものです。25行目の「analogWrite(LED_R, potVal_R / 4)」で、LEDを光らせています。ここで「あれ? LEDを光らせるときは、『digitalWrite()』を使うんじゃなかったっけ?」と疑問を持った方もいらっしゃるでしょう。
そうです。これまでの連載の中では、LEDを点滅させる際、digitalWrite()を使ってきました。digitalWrite()の場合、ピンに出力する値は「HIGH」か「LOW」の2択でした。つまり、LEDは「点灯」か「消灯」になります。
今回は、analogWrite()を使っているのがポイントです。analogWrite()の場合、PWM波を出力するので、LEDの明るさを調整できます。analogWrite()には、0〜255の値を指定します。つまり、「analogWrite(LED_R,128)」とすれば、赤のLEDが50%の明るさで光るわけです(画像8)。
potVal_Rの値は、0〜1023でした。そこで、25行目では4で割って0〜255の値にしてから、analogWrite()に渡しているのです。ちなみに、このanalogWrite()は、全てのデジタル入出力ピンで使用できるわけではありません。「Arduino UNO」の場合は、“3、5、6、9、10、11”のピンがanalogWrite()に対応しています。
今回の回路では、半固定抵抗を左いっぱいに回すと値は「0」に、右に回すにつれて値が次第に大きくなり最大「1023」になります。例えば、「R」と「G」を最大(100%)に、「B」を最小(0%)にしたら、LEDは黄色になります。3つの半固定抵抗を回して、自分好みの明かりを作ってみてください。
Copyright © ITmedia, Inc. All Rights Reserved.