#define RLED 8 #define GLED 9 #define BLED 10 // Buling speed. You may change this value. #define PWM_Factor 30 int j, k; float s = 1.0, v = 1.0, f; long h; int i, vi; int p1, p2, p3; int r, g, b; void setup() { h = 0; pinMode(RLED, OUTPUT); pinMode(GLED, OUTPUT); pinMode(BLED, OUTPUT); } void loop() { //chage to HSV color model i = (int)(h / 60.0); f = h / 60.0f - i; p1 = (int)(v * (1 - s) * 255.0); p2 = (int)(v * (1 - s * f) * 255.0); p3 = (int)(v * (1 - s * (1 - f)) * 255.0); vi = (int)(v * 255); if (i == 0) { r = vi ; g = p3 ; b = p1; } if (i == 1) { r = p2 ; g = vi ; b = p1; } if (i == 2) { r = p1 ; g = vi; b = p3; } if (i == 3) { r = p1 ; g = p2 ; b = vi; } if (i == 4) { r = p3 ; g = p1 ; b = vi; } if (i == 5) { r = vi ; g = p1 ; b = p2; } //PWM loop for (j = 0; j < PWM_Factor ; j++) { digitalWrite(RLED, LOW); digitalWrite(GLED, LOW); digitalWrite(BLED, LOW); for (k = 0; k < 255; k++) { if (k == r) digitalWrite(RLED, HIGH); if (k == g) digitalWrite(GLED, HIGH); if (k == b) digitalWrite(BLED, HIGH); } } h = h + 1; if (h >= 360) h = 0; }