RGB LED簡易控制、隨機函式

電路接線圖

常數定義

#define 名稱 數值   // 沒有分號,沒有等號
#define R 21 // R 接腳
#define G 22 // G 接腳
#define B 23 // B 接腳

顏色控制

// 紅色
analogWrite(R, 255);
analogWrite(G, 0);
analogWrite(B, 0);

// 綠色
analogWrite(R, 0);
analogWrite(G, 255);
analogWrite(B, 0);

// 藍色
analogWrite(R, 0);
analogWrite(G, 0);
analogWrite(B, 255);

// 白色
analogWrite(R, 255);
analogWrite(G, 255);
analogWrite(B, 255);

// 黑色
analogWrite(R, 0);
analogWrite(G, 0);
analogWrite(B, 0);

// 任意顏色(由 r, g, b 這3個參數自由組合)
analogWrite(R, r);  // r: 0 ~ 255
analogWrite(G, g);  // g: 0 ~ 255
analogWrite(B, b);  // b: 0 ~ 255

隨機函式

random(max);      // 隨機傳回 0 ~ max-1 之間的整數
random(min, max); // 隨機傳回 min ~ max-1 之間的整數
r=random(256);    // 隨機產生0~255的整數,儲存到 r
g=random(256);    // 隨機產生0~255的整數,儲存到 g
b=random(256);    // 隨機產生0~255的整數,儲存到 b

參考範例

#define R 21 // R 接腳
#define G 22 // G 接腳
#define B 23 // B 接腳
int r;  // 儲存紅色成分的參數r
int g;  // 儲存綠色成分的參數g
int b;  // 儲存藍色成分的參數b

void setup() {
  pinMode(R, OUTPUT); // 宣告R為輸出腳
  pinMode(G, OUTPUT); // 宣告G為輸出腳
  pinMode(B, OUTPUT); // 宣告B為輸出腳
  Serial.begin(9600); // 啟用串列埠監看視窗

  // 紅色
  analogWrite(R, 255);
  analogWrite(G, 0);
  analogWrite(B, 0);
  Serial.println("Red");


  delay(1000);

  // 綠色
  analogWrite(R, 0);
  analogWrite(G, 255);
  analogWrite(B, 0);
  Serial.println("Green");

  delay(1000);

  // 藍色
  analogWrite(R, 0);
  analogWrite(G, 0);
  analogWrite(B, 255);
  Serial.println("Blue");

  delay(1000);

  // 白色
  analogWrite(R, 255);
  analogWrite(G, 255);
  analogWrite(B, 255);
  Serial.println("White");

  delay(1000);

  // 黑色
  analogWrite(R, 0);
  analogWrite(G, 0);
  analogWrite(B, 0);
  Serial.println("Black");

  delay(2000);
}

void loop() {
  // 任意顏色(由 r, g, b 這3個參數自由組合)
  r = random(256);  // 隨機產生0~255的整數,儲存到 r
  g = random(256);  // 隨機產生0~255的整數,儲存到 g
  b = random(256);  // 隨機產生0~255的整數,儲存到 b
  // 任意顏色(由 r, g, b 這3個參數自由組合)
  analogWrite(R, r);  // r: 0 ~ 255
  analogWrite(G, g);  // g: 0 ~ 255
  analogWrite(B, b);  // b: 0 ~ 255
  Serial.print("Random........");
  Serial.print("r=");
  Serial.print(r);
  Serial.print(" ,g=");
  Serial.print(g);
  Serial.print(" ,b=");
  Serial.println(b);

  delay(1000);
}

作業練習:

  1. 開機後,依序顯示紅、綠、藍、白、黑5種顏色一次。
  2. 循環顯示下列狀態:
    • 紅色呼吸1次(2~3秒)
    • 綠色2秒
    • 藍色呼吸1次(2~3秒)
    • 白色2秒
    • 隨機顏色2秒
    • 黑色2秒
    • 隨機顏色2秒
  3. 各顏色的狀態必須顯示在監看視窗上。
  4. 在Wokwi網站上進行模擬,並完成實體接線。