レッスン4 応用編 「RGB LED」LEDの色をプログラミングで変える方法!アールジービーエルイーディー
では、レッスン4の応用編を説明していきます
まだレッスン4をやっていない方はこちらへ→
レッスン4 「RGB LED」色が変わるLED 操作してみよう! - 基板がカッコよくて憧れる日記
見ていくのは前回開いた「RGB_LED」のプログラムです。
今回は長いプログラムです。
分かりやすいように分解して、説明していきます。
では、いきます。
#define RED 6 //どのピンがどの色かを定義します。
void setup() //毎回ある文ですよ。前回の指示をリセットします。
{
pinMode(RED, OUTPUT);
digitalWrite(RED, HIGH); //今回はset upの部分でLEDを出力として使うとも定義しなければなりません。
}
int redValue; //使える種類を定義します。
void loop() //ループの内容を指示します。毎回いります。
{
redValue = 255; //0~255まで色の強さを指定できます。
}
なぜ255なのかというと電圧をまで5V出せるからです。
ちなみに、半分の128では約2.5Vが出力されます。
今回の指示で、ずっと赤が光ります。
文字のredの部分を、greenやblueに変えると色が変わります。
では先ほどの文に緑を足した指示を書きます。
#define GREEN 5
#define RED 6
void setup()
{
pinMode(RED, OUTPUT);
pinMode(GREEN, OUTPUT);
digitalWrite(RED, HIGH);
digitalWrite(GREEN, LOW);
}
int redValue;
int greenValue;
void loop()
{
#define delayTime 10
redValue = 255;
greenValue = 0;
for(int i = 0; i < 255; i += 1) //前回なかった文です。これは、赤の次光る緑が255まで出力したら、赤は消してくださいという指示です。
{
redValue -= 1; //赤はマイナス
greenValue += 1; //緑はプラス
analogWrite(RED, redValue); //このanalogWriteというのは指示を電圧を0か1にする指示です。
analogWrite(GREEN, greenValue);
delay(delayTime);
}
redValue = 0;
greenValue = 255;
for(int i = 0; i < 255; i += 1)
{
greenValue -= 1;
redValue += 1;
analogWrite(GREEN, greenValue);
analogWrite(RED, redValue);
delay(delayTime);
}
}
これで、赤→緑→赤→緑とループするようになります。
何度か書き間違えて凹んでたので、できた時はキラキラ光るLEDに感動してしまいました。
前の文と、どこが違うのか分かりますか?
この違いを理解して、同じように青を足してみると、見本と同じ文を自分で作れるでしょう。
今回はこれで終わりです。
ぜひ、自分だけのパターンを作ってみて下さい。
次 レッスン5 「Digital Input」→ カミングスーン
レッスン6を先に書いています →
レッスン6 「Active Buzzer」音を鳴らしてみよう! - 基板がカッコよくて憧れる日記