//定義RGB色彩的輸出I/O R接11 B接10 G接9 V接5V
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);
}
留言
張貼留言