フルカラーで「色々」表示

PWMの回路
 図のスイッチ回路を高速でオン/オフして半点灯状態を作ります。

色を合成する
赤・青・緑(R,G,B) の3色を適当な強さで混合すると、いろんな色を合成できます。赤と緑を混ぜると黄色、赤と青を混ぜると紫(ピンク)になります。人が見えるほとんどの色はこの混合でつくることができます。
 

プログラム
R,G,B の各色の値を0〜255の範囲で設定します。0は発色なし、255が最大の発色になります。最初、各端子に通電を開始し、以下、0〜255の繰り返しのなかで、消灯します。
 0の場合は直後で、255の場合最後に消灯します。これを繰り返して、発色を行います。

フルカラーLED
フルカラーLEDはR,G,B 3色のLEDを一つのLED の中に封じ込んでいます。写真はOSTA5131A(OptoSupply社)です。上から2番目の一番長い線が共通のカソード(GND)で、上からR(赤)、GND、B(青)、G(緑)の順です。各色の発光強度を制御すれば、フルカラーの発色が可能です。
 色により発光効率が異なる為、同じ電流を流しても白色にはなりません。許容最大電流は50mAです。

回路の実際
 組み込みコンピュータの回路は次のようになります。PA5,PA4,PA3 の端子にR,G,Bの各色に対応するLEDを接続します。

強さの調整
混合するには、各色の強さを調整する必要があります。この調整を、一定の時間の中で発光している割合を変化させることで行います。
 この方式をPWM(Pulse WIdth Modulation)と呼びます。光だけでなく、直流モータの制御にも利用できます

//r,g,b の値を定める(0〜255)
//最初に点灯します
//時間kがR,G,Bの値になると消えます
 
  output_high(PIN_A3);//最初に通電
  output_high(PIN_A4);
  output_high(PIN_A5); 
  for(k=0;k<=255;k++){ 
  //時間になったら通電を止める
    if(k==r) output_low(PIN_A3); 
    if(k==g) output_low(PIN_A4);
    if(k==b) output_low(PIN_A5);
  }