Gemma+NeoPixel 0: Wheel
This post describes the
Wheel
function that is part of the
strandtest
example included within the NeoPixel library.
I’m writing it as a preamble to a planned series of articles about my experiments with an Arduino Gemma and a NeoPixel ring with 16 RGB LEDs.
The Wheel
function takes a value from 0 to 255 (inclusive) and maps that
onto a red-green-blue color wheel. Internally, it computes a value for the
red, green, and blue components of the result. Those three parts are combined
by the strip.Color
function to return a 32-bit value representing that
color.
The
Wheel
function may eventually be included in the NeoPixel library, but for now, include it in each of your sketches.
uint32_t Wheel(byte WheelPos) {
WheelPos = 255 - WheelPos;
if(WheelPos < 85) {
return strip.Color(255 - WheelPos * 3, 0, WheelPos * 3);
}
if(WheelPos < 170) {
WheelPos -= 85;
return strip.Color(0, WheelPos * 3, 255 - WheelPos * 3);
}
WheelPos -= 170;
return strip.Color(WheelPos * 3, 255 - WheelPos * 3, 0);
}
From a quick code reading, we can see that the numbers from 0 to 255 are divided into three sections: 0-85, 86-170, and 171-255. But what we care about more than the math are the colors that result.
Let’s build a table showing how an input value is transformed. I wrote a
little
Python code
to take each number from 0 to 255 and give the resulting red, green, and blue
values. In addition, I added the HTML hex color code and the color itself.
Maybe it’ll help you when incorporating Wheel
into your own designs.
The color wheel only includes red, green, and blue combinations. There is no black and no white. You may need to use other techniques or in addition to the
Wheel
function.
Get ready for some scrolling!
position | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
---|---|---|---|---|---|---|---|---|
Red | 255 | 252 | 249 | 246 | 243 | 240 | 237 | 234 |
Green | 0 | 3 | 6 | 9 | 12 | 15 | 18 | 21 |
Blue | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
HTML color code | #ff0000 | #fc0300 | #f90600 | #f60900 | #f30c00 | #f00f00 | #ed1200 | #ea1500 |
HTML color | ||||||||
position | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
Red | 231 | 228 | 225 | 222 | 219 | 216 | 213 | 210 |
Green | 24 | 27 | 30 | 33 | 36 | 39 | 42 | 45 |
Blue | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
HTML color code | #e71800 | #e41b00 | #e11e00 | #de2100 | #db2400 | #d82700 | #d52a00 | #d22d00 |
HTML color | ||||||||
position | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 |
Red | 207 | 204 | 201 | 198 | 195 | 192 | 189 | 186 |
Green | 48 | 51 | 54 | 57 | 60 | 63 | 66 | 69 |
Blue | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
HTML color code | #cf3000 | #cc3300 | #c93600 | #c63900 | #c33c00 | #c03f00 | #bd4200 | #ba4500 |
HTML color | ||||||||
position | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 |
Red | 183 | 180 | 177 | 174 | 171 | 168 | 165 | 162 |
Green | 72 | 75 | 78 | 81 | 84 | 87 | 90 | 93 |
Blue | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
HTML color code | #b74800 | #b44b00 | #b14e00 | #ae5100 | #ab5400 | #a85700 | #a55a00 | #a25d00 |
HTML color | ||||||||
position | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 |
Red | 159 | 156 | 153 | 150 | 147 | 144 | 141 | 138 |
Green | 96 | 99 | 102 | 105 | 108 | 111 | 114 | 117 |
Blue | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
HTML color code | #9f6000 | #9c6300 | #996600 | #966900 | #936c00 | #906f00 | #8d7200 | #8a7500 |
HTML color | ||||||||
position | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 |
Red | 135 | 132 | 129 | 126 | 123 | 120 | 117 | 114 |
Green | 120 | 123 | 126 | 129 | 132 | 135 | 138 | 141 |
Blue | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
HTML color code | #877800 | #847b00 | #817e00 | #7e8100 | #7b8400 | #788700 | #758a00 | #728d00 |
HTML color | ||||||||
position | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 |
Red | 111 | 108 | 105 | 102 | 99 | 96 | 93 | 90 |
Green | 144 | 147 | 150 | 153 | 156 | 159 | 162 | 165 |
Blue | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
HTML color code | #6f9000 | #6c9300 | #699600 | #669900 | #639c00 | #609f00 | #5da200 | #5aa500 |
HTML color | ||||||||
position | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 |
Red | 87 | 84 | 81 | 78 | 75 | 72 | 69 | 66 |
Green | 168 | 171 | 174 | 177 | 180 | 183 | 186 | 189 |
Blue | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
HTML color code | #57a800 | #54ab00 | #51ae00 | #4eb100 | #4bb400 | #48b700 | #45ba00 | #42bd00 |
HTML color | ||||||||
position | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 |
Red | 63 | 60 | 57 | 54 | 51 | 48 | 45 | 42 |
Green | 192 | 195 | 198 | 201 | 204 | 207 | 210 | 213 |
Blue | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
HTML color code | #3fc000 | #3cc300 | #39c600 | #36c900 | #33cc00 | #30cf00 | #2dd200 | #2ad500 |
HTML color | ||||||||
position | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 |
Red | 39 | 36 | 33 | 30 | 27 | 24 | 21 | 18 |
Green | 216 | 219 | 222 | 225 | 228 | 231 | 234 | 237 |
Blue | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
HTML color code | #27d800 | #24db00 | #21de00 | #1ee100 | #1be400 | #18e700 | #15ea00 | #12ed00 |
HTML color | ||||||||
position | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 |
Red | 15 | 12 | 9 | 6 | 3 | 0 | 0 | 0 |
Green | 240 | 243 | 246 | 249 | 252 | 255 | 252 | 249 |
Blue | 0 | 0 | 0 | 0 | 0 | 0 | 3 | 6 |
HTML color code | #0ff000 | #0cf300 | #09f600 | #06f900 | #03fc00 | #00ff00 | #00fc03 | #00f906 |
HTML color | ||||||||
position | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 |
Red | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Green | 246 | 243 | 240 | 237 | 234 | 231 | 228 | 225 |
Blue | 9 | 12 | 15 | 18 | 21 | 24 | 27 | 30 |
HTML color code | #00f609 | #00f30c | #00f00f | #00ed12 | #00ea15 | #00e718 | #00e41b | #00e11e |
HTML color | ||||||||
position | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 |
Red | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Green | 222 | 219 | 216 | 213 | 210 | 207 | 204 | 201 |
Blue | 33 | 36 | 39 | 42 | 45 | 48 | 51 | 54 |
HTML color code | #00de21 | #00db24 | #00d827 | #00d52a | #00d22d | #00cf30 | #00cc33 | #00c936 |
HTML color | ||||||||
position | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 |
Red | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Green | 198 | 195 | 192 | 189 | 186 | 183 | 180 | 177 |
Blue | 57 | 60 | 63 | 66 | 69 | 72 | 75 | 78 |
HTML color code | #00c639 | #00c33c | #00c03f | #00bd42 | #00ba45 | #00b748 | #00b44b | #00b14e |
HTML color | ||||||||
position | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 |
Red | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Green | 174 | 171 | 168 | 165 | 162 | 159 | 156 | 153 |
Blue | 81 | 84 | 87 | 90 | 93 | 96 | 99 | 102 |
HTML color code | #00ae51 | #00ab54 | #00a857 | #00a55a | #00a25d | #009f60 | #009c63 | #009966 |
HTML color | ||||||||
position | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 |
Red | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Green | 150 | 147 | 144 | 141 | 138 | 135 | 132 | 129 |
Blue | 105 | 108 | 111 | 114 | 117 | 120 | 123 | 126 |
HTML color code | #009669 | #00936c | #00906f | #008d72 | #008a75 | #008778 | #00847b | #00817e |
HTML color | ||||||||
position | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 |
Red | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Green | 126 | 123 | 120 | 117 | 114 | 111 | 108 | 105 |
Blue | 129 | 132 | 135 | 138 | 141 | 144 | 147 | 150 |
HTML color code | #007e81 | #007b84 | #007887 | #00758a | #00728d | #006f90 | #006c93 | #006996 |
HTML color | ||||||||
position | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 |
Red | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Green | 102 | 99 | 96 | 93 | 90 | 87 | 84 | 81 |
Blue | 153 | 156 | 159 | 162 | 165 | 168 | 171 | 174 |
HTML color code | #006699 | #00639c | #00609f | #005da2 | #005aa5 | #0057a8 | #0054ab | #0051ae |
HTML color | ||||||||
position | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 |
Red | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Green | 78 | 75 | 72 | 69 | 66 | 63 | 60 | 57 |
Blue | 177 | 180 | 183 | 186 | 189 | 192 | 195 | 198 |
HTML color code | #004eb1 | #004bb4 | #0048b7 | #0045ba | #0042bd | #003fc0 | #003cc3 | #0039c6 |
HTML color | ||||||||
position | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 |
Red | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Green | 54 | 51 | 48 | 45 | 42 | 39 | 36 | 33 |
Blue | 201 | 204 | 207 | 210 | 213 | 216 | 219 | 222 |
HTML color code | #0036c9 | #0033cc | #0030cf | #002dd2 | #002ad5 | #0027d8 | #0024db | #0021de |
HTML color | ||||||||
position | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 |
Red | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Green | 30 | 27 | 24 | 21 | 18 | 15 | 12 | 9 |
Blue | 225 | 228 | 231 | 234 | 237 | 240 | 243 | 246 |
HTML color code | #001ee1 | #001be4 | #0018e7 | #0015ea | #0012ed | #000ff0 | #000cf3 | #0009f6 |
HTML color | ||||||||
position | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 |
Red | 0 | 0 | 0 | 3 | 6 | 9 | 12 | 15 |
Green | 6 | 3 | 0 | 0 | 0 | 0 | 0 | 0 |
Blue | 249 | 252 | 255 | 252 | 249 | 246 | 243 | 240 |
HTML color code | #0006f9 | #0003fc | #0000ff | #0300fc | #0600f9 | #0900f6 | #0c00f3 | #0f00f0 |
HTML color | ||||||||
position | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 |
Red | 18 | 21 | 24 | 27 | 30 | 33 | 36 | 39 |
Green | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Blue | 237 | 234 | 231 | 228 | 225 | 222 | 219 | 216 |
HTML color code | #1200ed | #1500ea | #1800e7 | #1b00e4 | #1e00e1 | #2100de | #2400db | #2700d8 |
HTML color | ||||||||
position | 184 | 185 | 186 | 187 | 188 | 189 | 190 | 191 |
Red | 42 | 45 | 48 | 51 | 54 | 57 | 60 | 63 |
Green | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Blue | 213 | 210 | 207 | 204 | 201 | 198 | 195 | 192 |
HTML color code | #2a00d5 | #2d00d2 | #3000cf | #3300cc | #3600c9 | #3900c6 | #3c00c3 | #3f00c0 |
HTML color | ||||||||
position | 192 | 193 | 194 | 195 | 196 | 197 | 198 | 199 |
Red | 66 | 69 | 72 | 75 | 78 | 81 | 84 | 87 |
Green | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Blue | 189 | 186 | 183 | 180 | 177 | 174 | 171 | 168 |
HTML color code | #4200bd | #4500ba | #4800b7 | #4b00b4 | #4e00b1 | #5100ae | #5400ab | #5700a8 |
HTML color | ||||||||
position | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 |
Red | 90 | 93 | 96 | 99 | 102 | 105 | 108 | 111 |
Green | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Blue | 165 | 162 | 159 | 156 | 153 | 150 | 147 | 144 |
HTML color code | #5a00a5 | #5d00a2 | #60009f | #63009c | #660099 | #690096 | #6c0093 | #6f0090 |
HTML color | ||||||||
position | 208 | 209 | 210 | 211 | 212 | 213 | 214 | 215 |
Red | 114 | 117 | 120 | 123 | 126 | 129 | 132 | 135 |
Green | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Blue | 141 | 138 | 135 | 132 | 129 | 126 | 123 | 120 |
HTML color code | #72008d | #75008a | #780087 | #7b0084 | #7e0081 | #81007e | #84007b | #870078 |
HTML color | ||||||||
position | 216 | 217 | 218 | 219 | 220 | 221 | 222 | 223 |
Red | 138 | 141 | 144 | 147 | 150 | 153 | 156 | 159 |
Green | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Blue | 117 | 114 | 111 | 108 | 105 | 102 | 99 | 96 |
HTML color code | #8a0075 | #8d0072 | #90006f | #93006c | #960069 | #990066 | #9c0063 | #9f0060 |
HTML color | ||||||||
position | 224 | 225 | 226 | 227 | 228 | 229 | 230 | 231 |
Red | 162 | 165 | 168 | 171 | 174 | 177 | 180 | 183 |
Green | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Blue | 93 | 90 | 87 | 84 | 81 | 78 | 75 | 72 |
HTML color code | #a2005d | #a5005a | #a80057 | #ab0054 | #ae0051 | #b1004e | #b4004b | #b70048 |
HTML color | ||||||||
position | 232 | 233 | 234 | 235 | 236 | 237 | 238 | 239 |
Red | 186 | 189 | 192 | 195 | 198 | 201 | 204 | 207 |
Green | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Blue | 69 | 66 | 63 | 60 | 57 | 54 | 51 | 48 |
HTML color code | #ba0045 | #bd0042 | #c0003f | #c3003c | #c60039 | #c90036 | #cc0033 | #cf0030 |
HTML color | ||||||||
position | 240 | 241 | 242 | 243 | 244 | 245 | 246 | 247 |
Red | 210 | 213 | 216 | 219 | 222 | 225 | 228 | 231 |
Green | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Blue | 45 | 42 | 39 | 36 | 33 | 30 | 27 | 24 |
HTML color code | #d2002d | #d5002a | #d80027 | #db0024 | #de0021 | #e1001e | #e4001b | #e70018 |
HTML color | ||||||||
position | 248 | 249 | 250 | 251 | 252 | 253 | 254 | 255 |
Red | 234 | 237 | 240 | 243 | 246 | 249 | 252 | 255 |
Green | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Blue | 21 | 18 | 15 | 12 | 9 | 6 | 3 | 0 |
HTML color code | #ea0015 | #ed0012 | #f0000f | #f3000c | #f60009 | #f90006 | #fc0003 | #ff0000 |
HTML color |