2013年9月16日月曜日

ArduinoでフルカラーLED を点灯する&デモンストレーション

フルカラーLEDを使ってデモンストレーションを行ってみました。
とりあえず必要なパーツ
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 件のコメント:

コメントを投稿