Advertisement
Guest User

Untitled

a guest
Nov 27th, 2015
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.25 KB | None | 0 0
  1. /*
  2. Implementation of a 16bit HSB lookup table.
  3. The table is rendered with a Processing sketch where HSB is converted to RGB.
  4.  
  5. */
  6.  
  7. #include<FastLED.h>
  8.  
  9. const uint32_t HSBLUT[] = {
  10. 0xFFFF0000, 0xFFFF0500, 0xFFFF0B00, 0xFFFF1100, 0xFFFF1700, 0xFFFF1D00, 0xFFFF2300, 0xFFFF2900, 0xFFFF2F00, 0xFFFF3500, 0xFFFF3B00, 0xFFFF4100, 0xFFFF4700, 0xFFFF4D00, 0xFFFF5300, 0xFFFF5900,
  11. 0xFFFF5F00, 0xFFFF6500, 0xFFFF6B00, 0xFFFF7100, 0xFFFF7700, 0xFFFF7D00, 0xFFFF8300, 0xFFFF8900, 0xFFFF8F00, 0xFFFF9400, 0xFFFF9A00, 0xFFFFA000, 0xFFFFA600, 0xFFFFAC00, 0xFFFFB200, 0xFFFFB800,
  12. 0xFFFFBE00, 0xFFFFC400, 0xFFFFCA00, 0xFFFFD000, 0xFFFFD600, 0xFFFFDC00, 0xFFFFE200, 0xFFFFE800, 0xFFFFEE00, 0xFFFFF400, 0xFFFFFA00, 0xFFFDFF00, 0xFFF7FF00, 0xFFF1FF00, 0xFFEBFF00, 0xFFE5FF00,
  13. 0xFFDFFF00, 0xFFD9FF00, 0xFFD4FF00, 0xFFCEFF00, 0xFFC8FF00, 0xFFC2FF00, 0xFFBCFF00, 0xFFB6FF00, 0xFFB0FF00, 0xFFAAFF00, 0xFFA4FF00, 0xFF9EFF00, 0xFF98FF00, 0xFF92FF00, 0xFF8CFF00, 0xFF86FF00,
  14. 0xFF80FF00, 0xFF7AFF00, 0xFF74FF00, 0xFF6EFF00, 0xFF68FF00, 0xFF62FF00, 0xFF5CFF00, 0xFF56FF00, 0xFF50FF00, 0xFF4AFF00, 0xFF44FF00, 0xFF3FFF00, 0xFF39FF00, 0xFF33FF00, 0xFF2DFF00, 0xFF27FF00,
  15. 0xFF21FF00, 0xFF1BFF00, 0xFF15FF00, 0xFF0FFF00, 0xFF09FF00, 0xFF03FF00, 0xFF00FF02, 0xFF00FF08, 0xFF00FF0E, 0xFF00FF14, 0xFF00FF1A, 0xFF00FF20, 0xFF00FF26, 0xFF00FF2C, 0xFF00FF32, 0xFF00FF38,
  16. 0xFF00FF3E, 0xFF00FF44, 0xFF00FF4A, 0xFF00FF50, 0xFF00FF55, 0xFF00FF5B, 0xFF00FF61, 0xFF00FF67, 0xFF00FF6D, 0xFF00FF73, 0xFF00FF79, 0xFF00FF7F, 0xFF00FF85, 0xFF00FF8B, 0xFF00FF91, 0xFF00FF97,
  17. 0xFF00FF9D, 0xFF00FFA3, 0xFF00FFA9, 0xFF00FFAF, 0xFF00FFB5, 0xFF00FFBB, 0xFF00FFC1, 0xFF00FFC7, 0xFF00FFCD, 0xFF00FFD3, 0xFF00FFD9, 0xFF00FFDF, 0xFF00FFE5, 0xFF00FFEA, 0xFF00FFF0, 0xFF00FFF6,
  18. 0xFF00FFFC, 0xFF00FBFF, 0xFF00F5FF, 0xFF00EFFF, 0xFF00E9FF, 0xFF00E3FF, 0xFF00DDFF, 0xFF00D7FF, 0xFF00D1FF, 0xFF00CBFF, 0xFF00C5FF, 0xFF00BFFF, 0xFF00B9FF, 0xFF00B3FF, 0xFF00ADFF, 0xFF00A7FF,
  19. 0xFF00A1FF, 0xFF009BFF, 0xFF0095FF, 0xFF008FFF, 0xFF0089FF, 0xFF0083FF, 0xFF007EFF, 0xFF0078FF, 0xFF0072FF, 0xFF006CFF, 0xFF0066FF, 0xFF0060FF, 0xFF005AFF, 0xFF0054FF, 0xFF004EFF, 0xFF0048FF,
  20. 0xFF0042FF, 0xFF003CFF, 0xFF0036FF, 0xFF0030FF, 0xFF002AFF, 0xFF0024FF, 0xFF001EFF, 0xFF0018FF, 0xFF0012FF, 0xFF000CFF, 0xFF0006FF, 0xFF0000FF, 0xFF0500FF, 0xFF0B00FF, 0xFF1100FF, 0xFF1600FF,
  21. 0xFF1C00FF, 0xFF2200FF, 0xFF2800FF, 0xFF2E00FF, 0xFF3400FF, 0xFF3A00FF, 0xFF4000FF, 0xFF4600FF, 0xFF4C00FF, 0xFF5200FF, 0xFF5800FF, 0xFF5E00FF, 0xFF6400FF, 0xFF6A00FF, 0xFF7000FF, 0xFF7600FF,
  22. 0xFF7C00FF, 0xFF8200FF, 0xFF8800FF, 0xFF8E00FF, 0xFF9400FF, 0xFF9A00FF, 0xFFA000FF, 0xFFA600FF, 0xFFAB00FF, 0xFFB100FF, 0xFFB700FF, 0xFFBD00FF, 0xFFC300FF, 0xFFC900FF, 0xFFCF00FF, 0xFFD500FF,
  23. 0xFFDB00FF, 0xFFE100FF, 0xFFE700FF, 0xFFED00FF, 0xFFF300FF, 0xFFF900FF, 0xFFFF00FE, 0xFFFF00F8, 0xFFFF00F2, 0xFFFF00EC, 0xFFFF00E6, 0xFFFF00E0, 0xFFFF00DA, 0xFFFF00D4, 0xFFFF00CE, 0xFFFF00C8,
  24. 0xFFFF00C2, 0xFFFF00BD, 0xFFFF00B7, 0xFFFF00B1, 0xFFFF00AB, 0xFFFF00A5, 0xFFFF009F, 0xFFFF0099, 0xFFFF0093, 0xFFFF008D, 0xFFFF0087, 0xFFFF0081, 0xFFFF007B, 0xFFFF0075, 0xFFFF006F, 0xFFFF0069,
  25. 0xFFFF0063, 0xFFFF005D, 0xFFFF0057, 0xFFFF0051, 0xFFFF004B, 0xFFFF0045, 0xFFFF003F, 0xFFFF0039, 0xFFFF0033, 0xFFFF002D, 0xFFFF0028, 0xFFFF0022, 0xFFFF001C, 0xFFFF0016, 0xFFFF0010, 0xFFFF000A,
  26. 0xFFFF0000
  27. };
  28.  
  29. // used to get the data from the lookup table in a fast way
  30. struct CRGB32 {
  31. uint8_t b;
  32. uint8_t g;
  33. uint8_t r;
  34. uint8_t unusedByte;
  35. };
  36.  
  37. CRGB rgb;
  38.  
  39. void setup() {
  40.  
  41. Serial.begin(57600);
  42. Serial.println();
  43.  
  44. }
  45.  
  46. void loop() {
  47.  
  48. for (int i=0; i < 256; i++) {
  49.  
  50. uint16_t hue16bit = (i<<8) + 127;
  51.  
  52. rgb = RGBColorAtHSBWheel(hue16bit);
  53.  
  54. Serial.print(i);
  55. Serial.print(" : ");
  56. Serial.print(rgb.r);
  57. Serial.print(", ");
  58. Serial.print(rgb.g);
  59. Serial.print(", ");
  60. Serial.println(rgb.b);
  61. }
  62.  
  63. Serial.println(F("==================="));
  64.  
  65. delay(5000);
  66. }
  67.  
  68. CRGB RGBColorAtHSBWheel(const uint16_t& hue16) {
  69.  
  70. uint8_t index = hue16 >> 8;
  71. uint8_t interpolation = hue16 & 0xFF;
  72.  
  73. CRGB rgb;
  74.  
  75. CRGB32 start = (CRGB32&) HSBLUT[index];
  76. CRGB32 end = (CRGB32&) HSBLUT[index + 1];
  77.  
  78. rgb.r = lerp16by8(start.r, end.r, interpolation);
  79. rgb.g = lerp16by8(start.g, end.g, interpolation);
  80. rgb.b = lerp16by8(start.b, end.b, interpolation);
  81.  
  82. return rgb;
  83. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement