Advertisement
zenware

RGB_LED_Experiment

Mar 12th, 2013
316
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.74 KB | None | 0 0
  1. int redPin = 11;
  2. int greenPin = 10;
  3. int bluePin = 9;
  4.  
  5. void setup()
  6. {
  7.   pinMode(redPin, OUTPUT);
  8.   pinMode(greenPin, OUTPUT);
  9.   pinMode(bluePin, OUTPUT);
  10. }
  11.  
  12. void loop()
  13. {
  14.   for(int hue = 0; hue < 360; hue++)
  15.   {
  16.     setColorHSV(hue, 1, 1);
  17.     delay(10);
  18.   }
  19. }
  20.  
  21. void setColorRGB(int red, int green, int blue)
  22. {
  23.   analogWrite(redPin, red);
  24.   analogWrite(greenPin, green);
  25.   analogWrite(bluePin, blue);
  26. }
  27.  
  28. void setColorHEX(unsigned long color)
  29. {
  30.   byte redInt = (color >> 16) & 0xFF;
  31.   byte greenInt = (color >> 8) & 0xFF;
  32.   byte blueInt = color & 0xFF;
  33.   setColorRGB(redInt, greenInt, blueInt);
  34. }
  35.  
  36. void setColorHSV(int hue, double sat, double val)
  37. {
  38.   double r = 0;
  39.   double g = 0;
  40.   double b = 0;
  41.  
  42.   double hf = hue/60.0;
  43.  
  44.   int i = (int)floor(hue/60.0);
  45.   double f = hue/60.0 -i;
  46.   double pv = val * (1-sat);
  47.   double qv = val * (1-sat * f);
  48.   double tv = val * (1-sat * (1-f));
  49.  
  50.   switch(i)
  51.   {
  52.     case 0:
  53.       r = val;
  54.       g = tv;
  55.       b = pv;
  56.       break;
  57.     case 1:
  58.       r = qv;
  59.       g = val;
  60.       b = pv;
  61.       break;
  62.     case 2:
  63.       r = pv;
  64.       g = val;
  65.       b = tv;
  66.       break;
  67.     case 3:
  68.       r = pv;
  69.       g = qv;
  70.       b = val;
  71.       break;
  72.     case 4:
  73.       r = tv;
  74.       g = pv;
  75.       b = val;
  76.       break;
  77.     case 5:
  78.       r = val;
  79.       g = pv;
  80.       b = qv;
  81.       break;
  82.     case 6:
  83.       r = val;
  84.       g = tv;
  85.       b = pv;
  86.       break;
  87.     case -1:
  88.       r = val;
  89.       g = pv;
  90.       b = qv;
  91.       break;
  92.     default:
  93.       r = g = b = val;
  94.       break;
  95.   }
  96.  
  97.   int red = constrain((int)255 * r, 0, 255);
  98.   int green = constrain((int)255 * g, 0, 255);
  99.   int blue = constrain((int)255 * b, 0, 255);
  100.  
  101.   setColorRGB(red, green, blue);
  102. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement