// --------------------------------------------------------------------------------
/*

12 NeoPixel LED Ring 設定顏色及滾動

[學習重點]

1. 認識 NeoPixel LED Ring

2. 認識 Library

3. 建立物件 Object

4. 認識子程式

[挑戰]

- 加多一個 NeoPixel LED Ring


Created by Jason on 12 Aug 2022.

*/
// --------------------------------------------------------------------------------

#include <Adafruit_NeoPixel.h>

Adafruit_NeoPixel ring = Adafruit_NeoPixel(16, 9); // 建立物件 (16 = LED 數量, 9 = Pin)

void setup() {
  ring.begin();
  ring.setBrightness(255); // 設定亮度 0 - 255
  ring.show(); // 將設定顯示出來
}

void loop() {
  colorWipe(255, 0, 0, 50); // 依序亮紅色
  colorWipe(255, 128, 0, 50); // 依序亮橙色
  colorWipe(255, 255, 0, 50); // 依序亮黃色
  colorWipe(0, 255, 0, 50); // 依序亮綠色
  colorWipe(0, 255, 255, 50); // 依序亮青色
  colorWipe(0, 0, 255, 50); // 依序亮藍色
  colorWipe(255, 0, 255, 50); // 依序紫色
}

// 著色特效:依序顯示指定的 rgb 顏色, 每顯示一顆就暫停 wait 毫秒
void colorWipe(byte r, byte g, byte b, int wait) {
  for (unsigned i = 0; i < ring.numPixels(); i++) { // 由0開始依序點亮
    ring.setPixelColor(i, r, g, b); // 點亮指定的顏色
    ring.show(); // 將設定顯示出來
    delay(wait); // 延時
  }
}