#include <Adafruit_NeoPixel.h>

#define PIN 10 // 腳位(可更改)
#define DELAYVAL 5 // 時間間隔(可更改)
#define NUMPIXELS 8 // 數量(可更改)

Adafruit_NeoPixel pixels( NUMPIXELS, PIN ); //設定腳位及數量(不可更改)
int R,G,B; //設定變數RGB,用來記錄
  
void setup() {
	pixels.begin(); //啟用pixels服務
}

void loop() {
	for (int j=0; j < 765; j++) {  //彩虹走完需要765種變化
		for (int i=0; i < NUMPIXELS; i++) {  //設定「每一顆」燈顏色
			Wheel(j + (765/12)*i);  //計算該時間的RGB值,其中(765/12)*i為每一顆燈的偏差值
			pixels.setPixelColor(i, pixels.Color(R,G,B));  //設定顏色
			pixels.setBrightness(200);  //調整亮度
		}
		pixels.show();  //顯示
		delay(DELAYVAL);  //延遲
	}
}

int Wheel(int WheelPos){
	int r,g,b;  //設定暫存用變數
	if(WheelPos>=765){  //如果狀態大於一輪
		WheelPos -= 765;  //將狀態減少一輪
	}
	switch(WheelPos/255){  //取狀態與255的商數
		case 0:  //若為0,表示 R -> G
			r=254- WheelPos % 255;  //R減少
			g=WheelPos % 255;  //G上升
			b=0;  //B為0
			break; 
		case 1:  //若為0,表示 G -> B
			g=254- WheelPos % 255;  //G減少
			b=WheelPos % 255;  //B上升
			r=0;  //R為0
			break; 
		case 2:  //若為0,表示 B -> R
			b=254- WheelPos % 255;  //B減少
			r=WheelPos % 255;  //R上升
			g=0;  //G為0
			break; 
	}
	R=r;  //設定數值
	G=g;  //設定數值
	B=b;  //設定數值
}
nano:12
nano:11
nano:10
nano:9
nano:8
nano:7
nano:6
nano:5
nano:4
nano:3
nano:2
nano:GND.2
nano:RESET.2
nano:0
nano:1
nano:13
nano:3.3V
nano:AREF
nano:A0
nano:A1
nano:A2
nano:A3
nano:A4
nano:A5
nano:A6
nano:A7
nano:5V
nano:RESET
nano:GND.1
nano:VIN
nano:12.2
nano:5V.2
nano:13.2
nano:11.2
nano:RESET.3
nano:GND.3
rgb1:VDD
rgb1:DOUT
rgb1:VSS
rgb1:DIN
rgb2:VDD
rgb2:DOUT
rgb2:VSS
rgb2:DIN
rgb3:VDD
rgb3:DOUT
rgb3:VSS
rgb3:DIN
rgb4:VDD
rgb4:DOUT
rgb4:VSS
rgb4:DIN
rgb5:VDD
rgb5:DOUT
rgb5:VSS
rgb5:DIN
rgb6:VDD
rgb6:DOUT
rgb6:VSS
rgb6:DIN
rgb7:VDD
rgb7:DOUT
rgb7:VSS
rgb7:DIN
rgb8:VDD
rgb8:DOUT
rgb8:VSS
rgb8:DIN