#include <FastLED.h>
CRGB leds[1];
struct Colours {
const char *name;
const uint32_t colour;
};
const char AliceBlue[] PROGMEM = "AliceBlue";
const char Amethyst[] PROGMEM = "Amethyst";
const char AntiqueWhite[] PROGMEM = "AntiqueWhite";
const char Aqua[] PROGMEM = "Aqua";
const char Aquamarine[] PROGMEM = "Aquamarine";
const char Azure[] PROGMEM = "Azure";
const char Beige[] PROGMEM = "Beige";
const char Bisque[] PROGMEM = "Bisque";
const char Black[] PROGMEM = "Black";
const char BlanchedAlmond[] PROGMEM = "BlanchedAlmond";
const char Blue[] PROGMEM = "Blue";
const char BlueViolet[] PROGMEM = "BlueViolet";
const char Brown[] PROGMEM = "Brown";
const char BurlyWood[] PROGMEM = "BurlyWood";
const char CadetBlue[] PROGMEM = "CadetBlue";
const char Chartreuse[] PROGMEM = "Chartreuse";
const char Chocolate[] PROGMEM = "Chocolate";
const char Coral[] PROGMEM = "Coral";
const char CornflowerBlue[] PROGMEM = "CornflowerBlue";
const char Cornsilk[] PROGMEM = "Cornsilk";
const char Crimson[] PROGMEM = "Crimson";
const char Cyan[] PROGMEM = "Cyan";
const char DarkBlue[] PROGMEM = "DarkBlue";
const char DarkCyan[] PROGMEM = "DarkCyan";
const char DarkGoldenrod[] PROGMEM = "DarkGoldenrod";
const char DarkGray[] PROGMEM = "DarkGray";
const char DarkGrey[] PROGMEM = "DarkGrey";
const char DarkGreen[] PROGMEM = "DarkGreen";
const char DarkKhaki[] PROGMEM = "DarkKhaki";
const char DarkMagenta[] PROGMEM = "DarkMagenta";
const char DarkOliveGreen[] PROGMEM = "DarkOliveGreen";
const char DarkOrange[] PROGMEM = "DarkOrange";
const char DarkOrchid[] PROGMEM = "DarkOrchid";
const char DarkRed[] PROGMEM = "DarkRed";
const char DarkSalmon[] PROGMEM = "DarkSalmon";
const char DarkSeaGreen[] PROGMEM = "DarkSeaGreen";
const char DarkSlateBlue[] PROGMEM = "DarkSlateBlue";
const char DarkSlateGray[] PROGMEM = "DarkSlateGray";
const char DarkSlateGrey[] PROGMEM = "DarkSlateGrey";
const char DarkTurquoise[] PROGMEM = "DarkTurquoise";
const char DarkViolet[] PROGMEM = "DarkViolet";
const char DeepPink[] PROGMEM = "DeepPink";
const char DeepSkyBlue[] PROGMEM = "DeepSkyBlue";
const char DimGray[] PROGMEM = "DimGray";
const char DimGrey[] PROGMEM = "DimGrey";
const char DodgerBlue[] PROGMEM = "DodgerBlue";
const char FireBrick[] PROGMEM = "FireBrick";
const char FloralWhite[] PROGMEM = "FloralWhite";
const char ForestGreen[] PROGMEM = "ForestGreen";
const char Fuchsia[] PROGMEM = "Fuchsia";
const char Gainsboro[] PROGMEM = "Gainsboro";
const char GhostWhite[] PROGMEM = "GhostWhite";
const char Gold[] PROGMEM = "Gold";
const char Goldenrod[] PROGMEM = "Goldenrod";
const char Gray[] PROGMEM = "Gray";
const char Grey[] PROGMEM = "Grey";
const char Green[] PROGMEM = "Green";
const char GreenYellow[] PROGMEM = "GreenYellow";
const char Honeydew[] PROGMEM = "Honeydew";
const char HotPink[] PROGMEM = "HotPink";
const char IndianRed[] PROGMEM = "IndianRed";
const char Indigo[] PROGMEM = "Indigo";
const char Ivory[] PROGMEM = "Ivory";
const char Khaki[] PROGMEM = "Khaki";
const char Lavender[] PROGMEM = "Lavender";
const char LavenderBlush[] PROGMEM = "LavenderBlush";
const char LawnGreen[] PROGMEM = "LawnGreen";
const char LemonChiffon[] PROGMEM = "LemonChiffon";
const char LightBlue[] PROGMEM = "LightBlue";
const char LightCoral[] PROGMEM = "LightCoral";
const char LightCyan[] PROGMEM = "LightCyan";
const char LightGoldenrodYellow[] PROGMEM = "LightGoldenrodYellow";
const char LightGreen[] PROGMEM = "LightGreen";
const char LightGrey[] PROGMEM = "LightGrey";
const char LightPink[] PROGMEM = "LightPink";
const char LightSalmon[] PROGMEM = "LightSalmon";
const char LightSeaGreen[] PROGMEM = "LightSeaGreen";
const char LightSkyBlue[] PROGMEM = "LightSkyBlue";
const char LightSlateGray[] PROGMEM = "LightSlateGray";
const char LightSlateGrey[] PROGMEM = "LightSlateGrey";
const char LightSteelBlue[] PROGMEM = "LightSteelBlue";
const char LightYellow[] PROGMEM = "LightYellow";
const char Lime[] PROGMEM = "Lime";
const char LimeGreen[] PROGMEM = "LimeGreen";
const char Linen[] PROGMEM = "Linen";
const char Magenta[] PROGMEM = "Magenta";
const char Maroon[] PROGMEM = "Maroon";
const char MediumAquamarine[] PROGMEM = "MediumAquamarine";
const char MediumBlue[] PROGMEM = "MediumBlue";
const char MediumOrchid[] PROGMEM = "MediumOrchid";
const char MediumPurple[] PROGMEM = "MediumPurple";
const char MediumSeaGreen[] PROGMEM = "MediumSeaGreen";
const char MediumSlateBlue[] PROGMEM = "MediumSlateBlue";
const char MediumSpringGreen[] PROGMEM = "MediumSpringGreen";
const char MediumTurquoise[] PROGMEM = "MediumTurquoise";
const char MediumVioletRed[] PROGMEM = "MediumVioletRed";
const char MidnightBlue[] PROGMEM = "MidnightBlue";
const char MintCream[] PROGMEM = "MintCream";
const char MistyRose[] PROGMEM = "MistyRose";
const char Moccasin[] PROGMEM = "Moccasin";
const char NavajoWhite[] PROGMEM = "NavajoWhite";
const char Navy[] PROGMEM = "Navy";
const char OldLace[] PROGMEM = "OldLace";
const char Olive[] PROGMEM = "Olive";
const char OliveDrab[] PROGMEM = "OliveDrab";
const char Orange[] PROGMEM = "Orange";
const char OrangeRed[] PROGMEM = "OrangeRed";
const char Orchid[] PROGMEM = "Orchid";
const char PaleGoldenrod[] PROGMEM = "PaleGoldenrod";
const char PaleGreen[] PROGMEM = "PaleGreen";
const char PaleTurquoise[] PROGMEM = "PaleTurquoise";
const char PaleVioletRed[] PROGMEM = "PaleVioletRed";
const char PapayaWhip[] PROGMEM = "PapayaWhip";
const char PeachPuff[] PROGMEM = "PeachPuff";
const char Peru[] PROGMEM = "Peru";
const char Pink[] PROGMEM = "Pink";
const char Plaid[] PROGMEM = "Plaid";
const char Plum[] PROGMEM = "Plum";
const char PowderBlue[] PROGMEM = "PowderBlue";
const char Purple[] PROGMEM = "Purple";
const char Red[] PROGMEM = "Red";
const char RosyBrown[] PROGMEM = "RosyBrown";
const char RoyalBlue[] PROGMEM = "RoyalBlue";
const char SaddleBrown[] PROGMEM = "SaddleBrown";
const char Salmon[] PROGMEM = "Salmon";
const char SandyBrown[] PROGMEM = "SandyBrown";
const char SeaGreen[] PROGMEM = "SeaGreen";
const char Seashell[] PROGMEM = "Seashell";
const char Sienna[] PROGMEM = "Sienna";
const char Silver[] PROGMEM = "Silver";
const char SkyBlue[] PROGMEM = "SkyBlue";
const char SlateBlue[] PROGMEM = "SlateBlue";
const char SlateGray[] PROGMEM = "SlateGray";
const char SlateGrey[] PROGMEM = "SlateGrey";
const char Snow[] PROGMEM = "Snow";
const char SpringGreen[] PROGMEM = "SpringGreen";
const char SteelBlue[] PROGMEM = "SteelBlue";
const char Tan[] PROGMEM = "Tan";
const char Teal[] PROGMEM = "Teal";
const char Thistle[] PROGMEM = "Thistle";
const char Tomato[] PROGMEM = "Tomato";
const char Turquoise[] PROGMEM = "Turquoise";
const char Violet[] PROGMEM = "Violet";
const char Wheat[] PROGMEM = "Wheat";
const char White[] PROGMEM = "White";
const char WhiteSmoke[] PROGMEM = "WhiteSmoke";
const char Yellow[] PROGMEM = "Yellow";
const char YellowGreen[] PROGMEM = "YellowGreen";
const char FairyLight[] PROGMEM = "FairyLight";
const char FairyLightNCC[] PROGMEM = "FairyLightNCC";
Colours const colours[] PROGMEM = {
AliceBlue, 0xF0F8FF,
Amethyst, 0x9966CC,
AntiqueWhite, 0xFAEBD7,
Aqua, 0x00FFFF,
Aquamarine, 0x7FFFD4,
Azure, 0xF0FFFF,
Beige, 0xF5F5DC,
Bisque, 0xFFE4C4,
Black, 0x000000,
BlanchedAlmond, 0xFFEBCD,
Blue, 0x0000FF,
BlueViolet, 0x8A2BE2,
Brown, 0xA52A2A,
BurlyWood, 0xDEB887,
CadetBlue, 0x5F9EA0,
Chartreuse, 0x7FFF00,
Chocolate, 0xD2691E,
Coral, 0xFF7F50,
CornflowerBlue, 0x6495ED,
Cornsilk, 0xFFF8DC,
Crimson, 0xDC143C,
Cyan, 0x00FFFF,
DarkBlue, 0x00008B,
DarkCyan, 0x008B8B,
DarkGoldenrod, 0xB8860B,
DarkGray, 0xA9A9A9,
DarkGrey, 0xA9A9A9,
DarkGreen, 0x006400,
DarkKhaki, 0xBDB76B,
DarkMagenta, 0x8B008B,
DarkOliveGreen, 0x556B2F,
DarkOrange, 0xFF8C00,
DarkOrchid, 0x9932CC,
DarkRed, 0x8B0000,
DarkSalmon, 0xE9967A,
DarkSeaGreen, 0x8FBC8F,
DarkSlateBlue, 0x483D8B,
DarkSlateGray, 0x2F4F4F,
DarkSlateGrey, 0x2F4F4F,
DarkTurquoise, 0x00CED1,
DarkViolet, 0x9400D3,
DeepPink, 0xFF1493,
DeepSkyBlue, 0x00BFFF,
DimGray, 0x696969,
DimGrey, 0x696969,
DodgerBlue, 0x1E90FF,
FireBrick, 0xB22222,
FloralWhite, 0xFFFAF0,
ForestGreen, 0x228B22,
Fuchsia, 0xFF00FF,
Gainsboro, 0xDCDCDC,
GhostWhite, 0xF8F8FF,
Gold, 0xFFD700,
Goldenrod, 0xDAA520,
Gray, 0x808080,
Grey, 0x808080,
Green, 0x008000,
GreenYellow, 0xADFF2F,
Honeydew, 0xF0FFF0,
HotPink, 0xFF69B4,
IndianRed, 0xCD5C5C,
Indigo, 0x4B0082,
Ivory, 0xFFFFF0,
Khaki, 0xF0E68C,
Lavender, 0xE6E6FA,
LavenderBlush, 0xFFF0F5,
LawnGreen, 0x7CFC00,
LemonChiffon, 0xFFFACD,
LightBlue, 0xADD8E6,
LightCoral, 0xF08080,
LightCyan, 0xE0FFFF,
LightGoldenrodYellow, 0xFAFAD2,
LightGreen, 0x90EE90,
LightGrey, 0xD3D3D3,
LightPink, 0xFFB6C1,
LightSalmon, 0xFFA07A,
LightSeaGreen, 0x20B2AA,
LightSkyBlue, 0x87CEFA,
LightSlateGray, 0x778899,
LightSlateGrey, 0x778899,
LightSteelBlue, 0xB0C4DE,
LightYellow, 0xFFFFE0,
Lime, 0x00FF00,
LimeGreen, 0x32CD32,
Linen, 0xFAF0E6,
Magenta, 0xFF00FF,
Maroon, 0x800000,
MediumAquamarine, 0x66CDAA,
MediumBlue, 0x0000CD,
MediumOrchid, 0xBA55D3,
MediumPurple, 0x9370DB,
MediumSeaGreen, 0x3CB371,
MediumSlateBlue, 0x7B68EE,
MediumSpringGreen, 0x00FA9A,
MediumTurquoise, 0x48D1CC,
MediumVioletRed, 0xC71585,
MidnightBlue, 0x191970,
MintCream, 0xF5FFFA,
MistyRose, 0xFFE4E1,
Moccasin, 0xFFE4B5,
NavajoWhite, 0xFFDEAD,
Navy, 0x000080,
OldLace, 0xFDF5E6,
Olive, 0x808000,
OliveDrab, 0x6B8E23,
Orange, 0xFFA500,
OrangeRed, 0xFF4500,
Orchid, 0xDA70D6,
PaleGoldenrod, 0xEEE8AA,
PaleGreen, 0x98FB98,
PaleTurquoise, 0xAFEEEE,
PaleVioletRed, 0xDB7093,
PapayaWhip, 0xFFEFD5,
PeachPuff, 0xFFDAB9,
Peru, 0xCD853F,
Pink, 0xFFC0CB,
Plaid, 0xCC5533,
Plum, 0xDDA0DD,
PowderBlue, 0xB0E0E6,
Purple, 0x800080,
Red, 0xFF0000,
RosyBrown, 0xBC8F8F,
RoyalBlue, 0x4169E1,
SaddleBrown, 0x8B4513,
Salmon, 0xFA8072,
SandyBrown, 0xF4A460,
SeaGreen, 0x2E8B57,
Seashell, 0xFFF5EE,
Sienna, 0xA0522D,
Silver, 0xC0C0C0,
SkyBlue, 0x87CEEB,
SlateBlue, 0x6A5ACD,
SlateGray, 0x708090,
SlateGrey, 0x708090,
Snow, 0xFFFAFA,
SpringGreen, 0x00FF7F,
SteelBlue, 0x4682B4,
Tan, 0xD2B48C,
Teal, 0x008080,
Thistle, 0xD8BFD8,
Tomato, 0xFF6347,
Turquoise, 0x40E0D0,
Violet, 0xEE82EE,
Wheat, 0xF5DEB3,
White, 0xFFFFFF,
WhiteSmoke, 0xF5F5F5,
Yellow, 0xFFFF00,
YellowGreen, 0x9ACD32,
FairyLight, 0xFFE42D,
FairyLightNCC, 0xFF9D2A
};
void setup() {
FastLED.addLeds<NEOPIXEL, 13>(leds, 1);
Serial.begin(115200);
// show the list of defined colours
for (int item = 0; item < sizeof(colours) / sizeof(*colours); item++) {
__FlashStringHelper *namestr = (__FlashStringHelper *) pgm_read_word(&colours[item].name);
Serial.print(namestr);
Serial.print(' ');
}
Serial.println();
}
// find which colour index matches the input string, if any
int find_colour_name(String input) {
int len = input.length();
for (int item = 0; item < sizeof(colours) / sizeof(*colours); item++) {
bool match = true;
char *nameptr = pgm_read_word(&colours[item].name);
for (int i = 0; i <= len; i++) {
if (input[i] != pgm_read_byte(nameptr + i)) {
match = false;
}
}
if (match)
return item;
}
return -1;
}
void loop() {
String input = Serial.readStringUntil("\n");
input.trim();
if (input.length() == 0)
return;
int match = find_colour_name(input);
if (match >= 0) {
uint32_t colour = pgm_read_dword(&colours[match].colour);
__FlashStringHelper *name = (__FlashStringHelper *) pgm_read_word(&colours[match].name);
Serial.print("Found match: ");
Serial.print(name);
Serial.print(" = 0x");
Serial.println(colour, HEX);
leds[0] = colour;
FastLED.show();
} else {
Serial.println("No match found for " + input);
}
}