概要
M5Stack ATOMなどに利用されているFastLEDライブラリの使い方を調べてみました。
FastLEDとは?
定番LED制御ライブラリで、特にNeoPixel的な複数のLEDがつながっているタイプのLED制御ではよく使われています。
対応LED
- Adafruit’s DotStars – APA102
- Adafruit’s Neopixel – WS2812B (WS2811/WS2812/WS2813)
- TM1809/4
- TM1803
- UCS1903
- GW6205
- LPD8806
- WS2801
- SM16716
- APA102
- P9813
- DMX
- SmartMatrix panels
- LPD6803
かんたんなスケッチ例
#include "FastLED.h" #define NUM_LEDS 60 CRGB leds[NUM_LEDS]; void setup() { FastLED.addLeds<NEOPIXEL, 6>(leds, NUM_LEDS); } void loop() { leds[0] = CRGB::White; FastLED.show(); delay(30); leds[0] = CRGB::Black; FastLED.show(); delay(30); }
シンプルな利用例として、上記のコードが提示されていました。60個接続されたNeoPixelをGPIO6に接続しているのかな?
LEDの数分だけCRGB構造体の配列が用意されており、色を設定してからshow()関数で反映します。
M5Stack ATOMなどはラッパー関数があるので、若干使い方が違ってきますので注意してください。
色の指定方法
FastLEDはCRGB構造体で色を指定します。
struct CRGB { union { struct { union { uint8_t r; uint8_t red; }; union { uint8_t g; uint8_t green; }; union { uint8_t b; uint8_t blue; }; }; uint8_t raw[3]; }; (略)
一般的にはCRGB(r, g, b)のように色を指定できます。
定義済み色見本
色名 | 設定値 | 見本色 | R | G | B |
---|---|---|---|---|---|
CRGB::AliceBlue | 0xF0F8FF | F0 | F8 | FF | |
CRGB::Amethyst | 0x9966CC | 99 | 66 | CC | |
CRGB::AntiqueWhite | 0xFAEBD7 | FA | EB | D7 | |
CRGB::Aqua | 0x00FFFF | 00 | FF | FF | |
CRGB::Aquamarine | 0x7FFFD4 | 7F | FF | D4 | |
CRGB::Azure | 0xF0FFFF | F0 | FF | FF | |
CRGB::Beige | 0xF5F5DC | F5 | F5 | DC | |
CRGB::Bisque | 0xFFE4C4 | FF | E4 | C4 | |
CRGB::Black | 0x000000 | 00 | 00 | 00 | |
CRGB::BlanchedAlmond | 0xFFEBCD | FF | EB | CD | |
CRGB::Blue | 0x0000FF | 00 | 00 | FF | |
CRGB::BlueViolet | 0x8A2BE2 | 8A | 2B | E2 | |
CRGB::Brown | 0xA52A2A | A5 | 2A | 2A | |
CRGB::BurlyWood | 0xDEB887 | DE | B8 | 87 | |
CRGB::CadetBlue | 0x5F9EA0 | 5F | 9E | A0 | |
CRGB::Chartreuse | 0x7FFF00 | 7F | FF | 00 | |
CRGB::Chocolate | 0xD2691E | D2 | 69 | 1E | |
CRGB::Coral | 0xFF7F50 | FF | 7F | 50 | |
CRGB::CornflowerBlue | 0x6495ED | 64 | 95 | ED | |
CRGB::Cornsilk | 0xFFF8DC | FF | F8 | DC | |
CRGB::Crimson | 0xDC143C | DC | 14 | 3C | |
CRGB::Cyan | 0x00FFFF | 00 | FF | FF | |
CRGB::DarkBlue | 0x00008B | 00 | 00 | 8B | |
CRGB::DarkCyan | 0x008B8B | 00 | 8B | 8B | |
CRGB::DarkGoldenrod | 0xB8860B | B8 | 86 | 0B | |
CRGB::DarkGray | 0xA9A9A9 | A9 | A9 | A9 | |
CRGB::DarkGrey | 0xA9A9A9 | A9 | A9 | A9 | |
CRGB::DarkGreen | 0x006400 | 00 | 64 | 00 | |
CRGB::DarkKhaki | 0xBDB76B | BD | B7 | 6B | |
CRGB::DarkMagenta | 0x8B008B | 8B | 00 | 8B | |
CRGB::DarkOliveGreen | 0x556B2F | 55 | 6B | 2F | |
CRGB::DarkOrange | 0xFF8C00 | FF | 8C | 00 | |
CRGB::DarkOrchid | 0x9932CC | 99 | 32 | CC | |
CRGB::DarkRed | 0x8B0000 | 8B | 00 | 00 | |
CRGB::DarkSalmon | 0xE9967A | E9 | 96 | 7A | |
CRGB::DarkSeaGreen | 0x8FBC8F | 8F | BC | 8F | |
CRGB::DarkSlateBlue | 0x483D8B | 48 | 3D | 8B | |
CRGB::DarkSlateGray | 0x2F4F4F | 2F | 4F | 4F | |
CRGB::DarkSlateGrey | 0x2F4F4F | 2F | 4F | 4F | |
CRGB::DarkTurquoise | 0x00CED1 | 00 | CE | D1 | |
CRGB::DarkViolet | 0x9400D3 | 94 | 00 | D3 | |
CRGB::DeepPink | 0xFF1493 | FF | 14 | 93 | |
CRGB::DeepSkyBlue | 0x00BFFF | 00 | BF | FF | |
CRGB::DimGray | 0x696969 | 69 | 69 | 69 | |
CRGB::DimGrey | 0x696969 | 69 | 69 | 69 | |
CRGB::DodgerBlue | 0x1E90FF | 1E | 90 | FF | |
CRGB::FairyLight | 0xFFE42D | FF | E4 | 2D | |
CRGB::FairyLightNCC | 0xFF9D2A | FF | 9D | 2A | |
CRGB::FireBrick | 0xB22222 | B2 | 22 | 22 | |
CRGB::FloralWhite | 0xFFFAF0 | FF | FA | F0 | |
CRGB::ForestGreen | 0x228B22 | 22 | 8B | 22 | |
CRGB::Fuchsia | 0xFF00FF | FF | 00 | FF | |
CRGB::Gainsboro | 0xDCDCDC | DC | DC | DC | |
CRGB::GhostWhite | 0xF8F8FF | F8 | F8 | FF | |
CRGB::Gold | 0xFFD700 | FF | D7 | 00 | |
CRGB::Goldenrod | 0xDAA520 | DA | A5 | 20 | |
CRGB::Gray | 0x808080 | 80 | 80 | 80 | |
CRGB::Grey | 0x808080 | 80 | 80 | 80 | |
CRGB::Green | 0x008000 | 00 | 80 | 00 | |
CRGB::GreenYellow | 0xADFF2F | AD | FF | 2F | |
CRGB::Honeydew | 0xF0FFF0 | F0 | FF | F0 | |
CRGB::HotPink | 0xFF69B4 | FF | 69 | B4 | |
CRGB::IndianRed | 0xCD5C5C | CD | 5C | 5C | |
CRGB::Indigo | 0x4B0082 | 4B | 00 | 82 | |
CRGB::Ivory | 0xFFFFF0 | FF | FF | F0 | |
CRGB::Khaki | 0xF0E68C | F0 | E6 | 8C | |
CRGB::Lavender | 0xE6E6FA | E6 | E6 | FA | |
CRGB::LavenderBlush | 0xFFF0F5 | FF | F0 | F5 | |
CRGB::LawnGreen | 0x7CFC00 | 7C | FC | 00 | |
CRGB::LemonChiffon | 0xFFFACD | FF | FA | CD | |
CRGB::LightBlue | 0xADD8E6 | AD | D8 | E6 | |
CRGB::LightCoral | 0xF08080 | F0 | 80 | 80 | |
CRGB::LightCyan | 0xE0FFFF | E0 | FF | FF | |
CRGB::LightGoldenrodYellow | 0xFAFAD2 | FA | FA | D2 | |
CRGB::LightGreen | 0x90EE90 | 90 | EE | 90 | |
CRGB::LightGrey | 0xD3D3D3 | D3 | D3 | D3 | |
CRGB::LightPink | 0xFFB6C1 | FF | B6 | C1 | |
CRGB::LightSalmon | 0xFFA07A | FF | A0 | 7A | |
CRGB::LightSeaGreen | 0x20B2AA | 20 | B2 | AA | |
CRGB::LightSkyBlue | 0x87CEFA | 87 | CE | FA | |
CRGB::LightSlateGray | 0x778899 | 77 | 88 | 99 | |
CRGB::LightSlateGrey | 0x778899 | 77 | 88 | 99 | |
CRGB::LightSteelBlue | 0xB0C4DE | B0 | C4 | DE | |
CRGB::LightYellow | 0xFFFFE0 | FF | FF | E0 | |
CRGB::Lime | 0x00FF00 | 00 | FF | 00 | |
CRGB::LimeGreen | 0x32CD32 | 32 | CD | 32 | |
CRGB::Linen | 0xFAF0E6 | FA | F0 | E6 | |
CRGB::Magenta | 0xFF00FF | FF | 00 | FF | |
CRGB::Maroon | 0x800000 | 80 | 00 | 00 | |
CRGB::MediumAquamarine | 0x66CDAA | 66 | CD | AA | |
CRGB::MediumBlue | 0x0000CD | 00 | 00 | CD | |
CRGB::MediumOrchid | 0xBA55D3 | BA | 55 | D3 | |
CRGB::MediumPurple | 0x9370DB | 93 | 70 | DB | |
CRGB::MediumSeaGreen | 0x3CB371 | 3C | B3 | 71 | |
CRGB::MediumSlateBlue | 0x7B68EE | 7B | 68 | EE | |
CRGB::MediumSpringGreen | 0x00FA9A | 00 | FA | 9A | |
CRGB::MediumTurquoise | 0x48D1CC | 48 | D1 | CC | |
CRGB::MediumVioletRed | 0xC71585 | C7 | 15 | 85 | |
CRGB::MidnightBlue | 0x191970 | 19 | 19 | 70 | |
CRGB::MintCream | 0xF5FFFA | F5 | FF | FA | |
CRGB::MistyRose | 0xFFE4E1 | FF | E4 | E1 | |
CRGB::Moccasin | 0xFFE4B5 | FF | E4 | B5 | |
CRGB::NavajoWhite | 0xFFDEAD | FF | DE | AD | |
CRGB::Navy | 0x000080 | 00 | 00 | 80 | |
CRGB::OldLace | 0xFDF5E6 | FD | F5 | E6 | |
CRGB::Olive | 0x808000 | 80 | 80 | 00 | |
CRGB::OliveDrab | 0x6B8E23 | 6B | 8E | 23 | |
CRGB::Orange | 0xFFA500 | FF | A5 | 00 | |
CRGB::OrangeRed | 0xFF4500 | FF | 45 | 00 | |
CRGB::Orchid | 0xDA70D6 | DA | 70 | D6 | |
CRGB::PaleGoldenrod | 0xEEE8AA | EE | E8 | AA | |
CRGB::PaleGreen | 0x98FB98 | 98 | FB | 98 | |
CRGB::PaleTurquoise | 0xAFEEEE | AF | EE | EE | |
CRGB::PaleVioletRed | 0xDB7093 | DB | 70 | 93 | |
CRGB::PapayaWhip | 0xFFEFD5 | FF | EF | D5 | |
CRGB::PeachPuff | 0xFFDAB9 | FF | DA | B9 | |
CRGB::Peru | 0xCD853F | CD | 85 | 3F | |
CRGB::Pink | 0xFFC0CB | FF | C0 | CB | |
CRGB::Plaid | 0xCC5533 | CC | 55 | 33 | |
CRGB::Plum | 0xDDA0DD | DD | A0 | DD | |
CRGB::PowderBlue | 0xB0E0E6 | B0 | E0 | E6 | |
CRGB::Purple | 0x800080 | 80 | 00 | 80 | |
CRGB::Red | 0xFF0000 | FF | 00 | 00 | |
CRGB::RosyBrown | 0xBC8F8F | BC | 8F | 8F | |
CRGB::RoyalBlue | 0x4169E1 | 41 | 69 | E1 | |
CRGB::SaddleBrown | 0x8B4513 | 8B | 45 | 13 | |
CRGB::Salmon | 0xFA8072 | FA | 80 | 72 | |
CRGB::SandyBrown | 0xF4A460 | F4 | A4 | 60 | |
CRGB::SeaGreen | 0x2E8B57 | 2E | 8B | 57 | |
CRGB::Seashell | 0xFFF5EE | FF | F5 | EE | |
CRGB::Sienna | 0xA0522D | A0 | 52 | 2D | |
CRGB::Silver | 0xC0C0C0 | C0 | C0 | C0 | |
CRGB::SkyBlue | 0x87CEEB | 87 | CE | EB | |
CRGB::SlateBlue | 0x6A5ACD | 6A | 5A | CD | |
CRGB::SlateGray | 0x708090 | 70 | 80 | 90 | |
CRGB::SlateGrey | 0x708090 | 70 | 80 | 90 | |
CRGB::Snow | 0xFFFAFA | FF | FA | FA | |
CRGB::SpringGreen | 0x00FF7F | 00 | FF | 7F | |
CRGB::SteelBlue | 0x4682B4 | 46 | 82 | B4 | |
CRGB::Tan | 0xD2B48C | D2 | B4 | 8C | |
CRGB::Teal | 0x008080 | 00 | 80 | 80 | |
CRGB::Thistle | 0xD8BFD8 | D8 | BF | D8 | |
CRGB::Tomato | 0xFF6347 | FF | 63 | 47 | |
CRGB::Turquoise | 0x40E0D0 | 40 | E0 | D0 | |
CRGB::Violet | 0xEE82EE | EE | 82 | EE | |
CRGB::Wheat | 0xF5DEB3 | F5 | DE | B3 | |
CRGB::White | 0xFFFFFF | FF | FF | FF | |
CRGB::WhiteSmoke | 0xF5F5F5 | F5 | F5 | F5 | |
CRGB::Yellow | 0xFFFF00 | FF | FF | 00 | |
CRGB::YellowGreen | 0x9ACD32 | 9A | CD | 32 |
上記の色が定義されています。実際色が多すぎてよくわかりません。
色がおかしいとき
leds[0] = CRGB::Red;
例えば赤を指定して、緑色が光った場合には設定が必要です。
上記にありますが、一部のLEDは色の並びがRGBではなくBRGになっています。そのため赤を指定して緑になった場合には設定が必要になります。
void setup() { LEDS.addLeds<WS2811, DATA_PIN, GRB>(leds, NUM_LEDS); }
上記の例がありましたが、ピンのあとにGRBを追加します。
M5Stack社のATOMで確認
#include <M5Atom.h> void setup() { // 初期化 M5.begin(true, false, true); // (Serial, I2C, NeoPixel) // LED(0固定) M5.dis.drawpix(0, CRGB::Red); } void loop() { }
赤になりましたでしょうか?
残念ながら現在のライブラリは緑になると思います。。。
LED_Display::LED_Display(uint8_t LEDNumbre) { FastLED.addLeds<WS2812, DATA_PIN>(_ledbuff, LEDNumbre); _xSemaphore = xSemaphoreCreateMutex(); _numberled = LEDNumbre; }
初期化部分を見てみると、GRBが指定されていませんね、、、
修正のプルリクエストはあったのですが、最近ライブラリに動きがないのでまったく修正されていません。
色がおかしいまま使うか、自分で初期化コードにGRBを入れるかして対応する必要があります。
色味の調整
RGB LEDは基本的に緑が明るいものが多いです。そのため通常のRGB指定をしても、緑が強く出すぎてしまいます。
これはチップごとに調整する必要があるので、ライブラリ側では補正していません。気になる場合には各色に補正値を入れてから設定する必要があります。
まとめ
はやくM5stack ATOMの色指定がなおってほしい、、、
コメント