全彩LED彩虹燈

 



 

//定義RGB色彩的輸出I/O  R11  B10   G9  V5V

int redPin = 11;

int greenPin = 10;

int bluePin = 9;

 

//標記顏色變化的方式,增加值還是減小值

bool redBool =false;

bool greenBool=true;

bool blueBool=false;

//顏色值,初始化為0,127,255

int redVal =0;

int greenVal=127;

int blueVal=255;

 

void setup()

{

  pinMode(redPin, OUTPUT);

  pinMode(greenPin, OUTPUT);

  pinMode(bluePin, OUTPUT);

}

 

/**

 * 改變顏色的增減順序

 */

void changeStatus()

{

   if (redVal==0)

  {

    redBool=true;

  }

  else if (redVal==255)

  {

    redBool=false;

  }

 

  if (greenVal==0)

  {

    greenBool=true;

  }

  else if (greenVal==255)

  {

    greenBool=false;

  }

 

  if (blueVal==0)

  {

    blueBool=true;

  }

  else if (blueVal==255)

  {

    blueBool=false;

  } 

}

 

/**

 * 改變顏色的變化量,增加還是減少

 */

void changeColorVal()

{

    if (redBool)

  {

    redVal++;

  }

  else

  {

    redVal--;

  }

  if (greenBool)

  {

    greenVal++;

  }

  else

  {

    greenVal--;

  }

  if (blueBool)

  {

    blueVal++;

  }

  else

  {

    blueVal--;

  }

}

/**

 * 設置led燈顏色

 */

void setColor(int red, int green, int blue)

{

  analogWrite(redPin, red);

  analogWrite(greenPin, green);

  analogWrite(bluePin, blue);

}

void loop()

{

  //更新顏色變化狀態

  changeStatus();

  //更新顏色值

  changeColorVal();

  //設置顏色

  setColor(redVal, greenVal, blueVal);

  delay(50);

}

留言