電路接線圖

定義R,G,B接腳位置:
int rgbPin[3] = {21,22,23}; // R,G,B接腳
// R: rgbPin[0] --> 21
// G: rgbPin[1] --> 22
// B: rgbPin[2] --> 23
宣告一個2維陣列,名稱為color,用來定義R,G,B的顏色(有5個元素,每個元素有3筆資料)
int color[5][3] = {{0,0,0},{255,255,255},{255,0,0},{0,255,0},{0,0,255}}; // {Black, White, Red, Green, Blue}
為了閱讀方便,可將陣列內的元素內容分開列出:
int color[5][3] =
{
{0,0,0}, // 0.Black
{255,255,255}, // 1.White
{255,0,0}, // 2.Red
{0,255,0}, // 3.Green
{0,0,255} // 4.Blue
};
// 0.Black: color[0][] --> {0,0,0}
// color[0][0] --> 0
// color[0][1] --> 0
// color[0][2] --> 0
// 1.White: color[1][] --> {255,255,255}
// color[1][0] --> 255
// color[1][1] --> 255
// color[1][2] --> 255
// 2.Red: color[2][] --> {255,0,0}
// color[2][0] --> 255
// color[2][1] --> 0
// color[2][2] --> 0
// 3.Green: color[3][] --> {0,255,0}
// color[3][0] --> 0
// color[3][1] --> 255
// color[3][2] --> 0
// 4.Blue: color[4][] --> {0,0,255} Blue
// color[4][0] --> 0
// color[4][1] --> 0
// color[4][2] --> 255
若原RGB LED燈的顏色改成2維陣列輸出,可參考下列程式碼:
// 0.Black
analogWrite(rgbPin[0],color[0][0]); // analogWrite(R, 0);
analogWrite(rgbPin[1],color[0][1]); // analogWrite(G, 0);
analogWrite(rgbPin[2],color[0][2]); // analogWrite(B, 0);
// 1.White
analogWrite(rgbPin[0],color[1][0]); // analogWrite(R, 255);
analogWrite(rgbPin[1],color[1][1]); // analogWrite(G, 255);
analogWrite(rgbPin[2],color[1][2]); // analogWrite(B, 255);
// 2.Red
analogWrite(rgbPin[0],color[2][0]); // analogWrite(R, 255);
analogWrite(rgbPin[1],color[2][1]); // analogWrite(G, 0);
analogWrite(rgbPin[2],color[2][2]); // analogWrite(B, 0);
// 3.Green
analogWrite(rgbPin[0],color[3][0]); // analogWrite(R, 0);
analogWrite(rgbPin[1],color[3][1]); // analogWrite(G, 255);
analogWrite(rgbPin[2],color[3][2]); // analogWrite(B, 0);
// 4.Blue
analogWrite(rgbPin[0],color[4][0]); // analogWrite(R, 0);
analogWrite(rgbPin[1],color[4][1]); // analogWrite(G, 0);
analogWrite(rgbPin[2],color[4][2]); // analogWrite(B, 255);
若要顯示陣列中某個顏色,可寫成副程式,將陣列的索引值代入即可:
void show_color(int x)
{
for(int i=0; i<=2; i++)
{
analogWrite(rgbPin[i],color[x][i]);
}
}
例如:
// 0.Black
show_color(0);
// 1.White
show_color(1);
// 2.Red
show_color(2);
// 3.Green
show_color(3);
// 4.Blue
show_color(4);
若要隨機產生一個顏色,亦可寫成副程式如下:
/*
隨機產生任意顏色(由 r, g, b 這3個參數自由組合)
r = random(256); // 隨機產生0~255的整數,儲存到 r
g = random(256); // 隨機產生0~255的整數,儲存到 g
b = random(256); // 隨機產生0~255的整數,儲存到 b
analogWrite(R, r); // r: 0 ~ 255
analogWrite(G, g); // g: 0 ~ 255
analogWrite(B, b); // b: 0 ~ 255
*/
void random_color()
{
for(int i=0; i<=2; i++)
{
analogWrite(rgbPin[i],random(256));
}
}
switch … case 條件判斷 參考說明
switch(count)
{
case(1):
Serial.println("case 1.");
break;
case(2):
Serial.println("case 2.");
break;
case(3):
Serial.println("case 3.");
break;
case(4):
Serial.println("case 4.");
break;
default: // 以上皆非
Serial.println("case else.");
break;
}
作業練習:
- 開機後,每間隔0.5秒依序隨機顯示5種不同顏色一次。
- 每按一下按鈕開關,依序循環顯示下列狀態:
- 0.Black {0, 0, 0}
- 1.White {255, 255, 255}
- 2.Red {255, 0, 0}
- 3.Green {0, 255, 0}
- 4.Blue {0, 0, 255}
- 5.Yellow {255, 255, 0}
- 6.Orange {255, 127, 0}
- 7.Purple {160, 32, 240}
- 8.Brown {128, 42, 42}
- 9.Pink {255, 0, 255}
- 各顏色的狀態必須顯示在監看視窗上。
- 在Wokwi網站上進行模擬,並完成實體接線。