The jonki

呼ばれて飛び出てじょじょじょじょーんき

Adafruit Neopixel Libraryについて調べてみた

Adafruitが出しているWS2810(フルカラーLEDチップ)ベースのLEDモジュールについてまとめました。以前、こちらのシリーズの製品を使った記事も書いています。

Adafruit Library

AdafruitのNeoPixelシリーズはWS2810(http://www.adafruit.com/datasheets/WS2812.pdf)というマイコン内蔵のフルカラーLEDチップを使っています。このチップ自体は電源、入力信号、出力信号、GNDの4本を使っていますが、NeoPixelシリーズは電源、信号線、GNDの3本でOKです。これで50個も100個もLEDを操作出来ちゃいます。操作もAdafruitのライブラリを利用することで簡単に実現できます。このライブラリはUNO、MEGA、Leonardo、Micro、Adafruit Floraなどで動きます。LEDはラインタイプやリングタイプなど色々あって使い方はすべて同じです。

使い方

Adafruitライブラリの例を見れば分かりますが、使い方は到って簡単です。利用するには下記のようにNeopixelのインスタンスを定義し、beginとshowでイニシャライズするだけです。Adafruit_NeoPixel関数の第1引数はLEDの数です。

#include <Adafruit_NeoPixel.h>
#define PIN 6 
Adafruit_NeoPixel strip = Adafruit_NeoPixel(60, PIN, NEO_GRB + NEO_KHZ800);

void setup() {
  strip.begin();
  strip.show(); // Initialize all pixels to 'off'
}

代表的な関数です。ソースコードを見てもかなり簡易なAPIが出されています。
https://github.com/adafruit/Adafruit_NeoPixel/blob/master/Adafruit_NeoPixel.h

// 接続されたLEDの数を取得します
uint16_t n = strip.numPixels();

// 便利なColorクラスを利用することができます
uint32_t magenta = strip.Color(255, 0, 255);

// LED番号を指定して色をセットできます
// 一括して色を変更したい場合はfor文でLEDの数分だけ
// setPixelColorを呼びます
// strip.setPixelColor(n, red, green, blue);
strip.setPixelColor(11, 255, 0, 255);

// LEDにセットされた色情報を取得できます
uint32_t color = strip.getPixelColor(11);

// 0-255の範囲で輝度(実際には電流量?)を調整できます
strip.setBrightness(64);

// setPixelColorやsetBrightnessで変更した値を反映します。
// setPixelColorを呼んでも色が変更されない場合等、
// showを最後に呼び忘れていないか確認してください
strip.show(;)