下手の横好きのスクラップブック!!

下手の横好きの、いろいろな記録です。
電子工作・PIC・Arduino・太陽光発電・写真などetc

Arduino RGB 3色フルカラーLEDの明るさと色の調整

2010-12-03 | Arduino

RGB 3色フルカラーLEDの明るさと色をランダムに変えながら点灯させる

前回は各色の明るさを 0から255までの256段階を連続的に変化させ
明るさと色を変化させましたが、今回は 0から255の値をランダムに変化
させることにより、色と明るさを変化させてみました。
更に、ランダムに変更される値をシリアル・プリントで確認できるようにしました。


接続図は前回と全く同じです

スケッチ

/*RGB3色LEDを各色順番に点灯
各色の明るさはランダムに変化する
点灯はフェードイン/フェードアウトで行う
シリアル・プリントでrandNumberの値を読む
*/

const int ledrPin = 9;  //ピン9LED赤を接続
const int ledbPin = 10;  //ピン10LED青を接続
const int ledgPin = 11;  //ピン11LED緑を接続

 int randNumber = 0;  //LEDの明るさを設定する変数

void setup () {
  pinMode(ledrPin, OUTPUT);  //LEDピンを出力に設定
  pinMode(ledbPin, OUTPUT);
  pinMode(ledgPin, OUTPUT);
  Serial.begin(9600);
}

void loop () {
  //色の選択 0 = 赤: 1 = 青: 2 = 緑
  for(int j = 0; j <= 2; j++) {
    if( j == 0) {
      //赤をフェードインで点灯
      randNumber = random(0,110);
       Serial.println(randNumber);
      for(int i = 0; i <= randNumber; i++) {
        analogWrite(ledrPin,i);
        delay(30);
      }
   
      //色の選択 0 = 赤: 1 = 青: 2 = 緑 
     }else if( j == 1) {
        //青をフェードインで点灯
         randNumber = random(40);
           Serial.println(randNumber);
       for(int i = 0; i <= randNumber; i++) {
        analogWrite(ledbPin,i);
        delay(30);
      }
    
    } else {
       //緑をフェードインで点灯
        randNumber = random(256);
          Serial.println(randNumber);
       for(int i = 0; i <= randNumber; i++) {
        analogWrite(ledgPin,i);
        delay(30);
      }
   
    }
  }
}

シリアルプリント画面

 

RGB 3色フルカラーLEDの明るさを半固定抵抗(VR)で調整し点灯させる


アナログ入力端子に半固定抵抗器(VR)を接続し入力された電圧値をanalogRead読み、
それを 0から255の値に変換することによりLEDの明るさを調整する。
各色とも同じ回路、同じスケッチで動作させ3個のVRで明るさと色を自由に変えることができます。

接続図

スケッチ

/*RGB3色LEDを半固定抵抗(VR)で各色の調整をする*/

const int ledrPin = 9;  //ピン9LED赤を接続
const int ledbPin = 10;  //ピン10LED青を接続
const int ledgPin = 11;  //ピン11LED緑を接続

const int vrrPin = 0;  //ピン0にVR(赤)を接続
const int vrbPin = 1;  //ピン1にVR(青)を接続
const int vrgPin = 2;  ///ピン2にVR(緑)を接続


void setup () {

  pinMode(ledrPin, OUTPUT);  //LEDピンを出力に設定
  pinMode(ledbPin, OUTPUT);
  pinMode(ledgPin, OUTPUT);

  }

void loop () {

  //vrrPinの値ををvluerに読み取り
  //vluerをmapにより intensityr(0~255)に変換
  //intensityrの値でledrを点灯

  int valuer = analogRead(vrrPin);
  int intensityr = map(valuer, 0, 1023, 0, 255);
  analogWrite(ledrPin,intensityr);
 
  //vrbPinの値ををvluebに読み取り
  //vluebをmapにより intensityb(0~255)に変換
  //intensitybの値でledbを点灯

  int valueb = analogRead(vrbPin);
  int intensityb = map(valueb, 0, 1023, 0, 255);
  analogWrite(ledbPin,intensityb);
 
  //vrgPinの値ををvluegに読み取り
  //vluegをmapにより intensityg(0~255)に変換
  //intensitygの値でlegrを点灯

  int valueg = analogRead(vrgPin);
  int intensityg = map(valueg, 0, 1023, 0, 255);
  analogWrite(ledgPin,intensityg);

  }
   

ボード

 

コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« 我が家の太陽光発電  20... | トップ | ArduinoにLCDを接続し文字... »
最新の画像もっと見る

コメントを投稿

Arduino」カテゴリの最新記事