フルカラーLEDを使ってデモンストレーションを行ってみました。
とりあえず必要なパーツ
このようにブレッドボードに配線してみました
しかしながら、突然色が変化するように見えてしまったり、急に暗くなったりと、プログラム側に問題有りです。
まぁ、我慢できる範囲ではありますが、気になる方は気になるでしょう。
このコードは小林茂さんの著書 『 Prototyping Lab ―「作りながら考える」ためのArduino実践レシピ (Make:PROJECTS) 』を参考にして作成しました。
とりあえず必要なパーツ
Arduinoボード : 1個 抵抗器 : 3本 RGB LED (アノードコモン) : 1個 その他部品 : 適量抵抗器は330Ω一つと150Ωを二つ用意します。
このようにブレッドボードに配線してみました
とりあえず本をみながら突貫で作ったコードを書き込んで・・・
//LEDのドライブに関する定数
const int commonKathode = 0;
const int commonAnode = 1;
//RGBそれぞれの色に対するピン番号の割り当て
const int rLED = 9;
const int gLED = 10;
const int bLED = 11;
//各光源の要素
double rFade = 0;
double gFade = 0;
double bFade = 0;
//フェードの最小量
double rfadeAmount = 6.4;
double gfadeAmount = 2;
double bfadeAmount = 3.2;
//LEDのドライブモードの選択
int driveMode = commonKathode;
void setup(){
//RGBの各ピンを出力に設定
pinMode(rLED,OUTPUT);
pinMode(gLED,OUTPUT);
pinMode(bLED,OUTPUT);
}
void loop() {
//加色処理
rFade += rfadeAmount;
gFade += gfadeAmount;
bFade += bfadeAmount;
//driveModeがカソードコモンの場合
if(driveMode == commonKathode) {
analogWrite(rLED,rFade);
analogWrite(gLED,gFade);
analogWrite(bLED,bFade);
}
//driveModeがアノードコモンの場合
if(driveMode == commonAnode) {
analogWrite(rLED,rFade);
analogWrite(gLED,gFade);
analogWrite(bLED,bFade);
}
//減色処理
if((rFade == 0)||(rFade == 1023))
rfadeAmount = -rfadeAmount;
if((gFade == 0)||(gFade == 1023))
gfadeAmount = -gfadeAmount;
if((bFade == 0)||(bFade == 1023))
bfadeAmount = -bfadeAmount;
delay(120);
}
実行するとLEDがきれいに光ります。しかしながら、突然色が変化するように見えてしまったり、急に暗くなったりと、プログラム側に問題有りです。
まぁ、我慢できる範囲ではありますが、気になる方は気になるでしょう。
このコードは小林茂さんの著書 『 Prototyping Lab ―「作りながら考える」ためのArduino実践レシピ (Make:PROJECTS) 』を参考にして作成しました。

0 件のコメント:
コメントを投稿