SSブログ

202duino で NeoPixel [Arduino]

いまさらですが、NeoPixelというのがはやっているらしくて、、。

megaTinyCoreを入れたときにスケッチ例が入っていて、かっこいいのがいくつかありました。

とりあえず必要なところを確認して自分でもLEDを光らせてみました。



スケッチは以下のとおり。
#include <tinyNeoPixel_Static.h>
#define PIN            3
#define NUMPIXELS      12

uint8_t pixels[NUMPIXELS * 3];
tinyNeoPixel leds = tinyNeoPixel(NUMPIXELS, PIN, NEO_GRB, pixels);

void setup() {
  pinMode(PIN, OUTPUT);
}

void loop() {
  for (uint8_t i = 0; i < NUMPIXELS; i++) {
    for (uint8_t c = 0; c < 6; c++) {
        leds.setPixelColor( ( NUMPIXELS + i - c ) % NUMPIXELS, leds.Color(0, 0 , 31 >> c ) );
        //pixels[ ((NUMPIXELS + i - c) * 3 + 2) % (NUMPIXELS * 3) ] = 31 >> c;  // -118 bytes
    }
    leds.show();
    delay(100);
  }
}

ライブラリを使用せずに自前できるかどうか探ってみましたが、、、
・100ナノ秒オーダーでの操作が必要
・ライブラリを見てみるとアセンブラ使用
・ライブラリ自体は意外と簡素
・SPIでやる方法もあるらしい

というわけで素直にライブラリを使うのが賢明のよう。

ライブラリの実体の在処
%localappdata%\Arduino15\packages\megaTinyCore\hardware\megaavr\2.6.4\libraries\tinyNeoPixel
%localappdata%\Arduino15\packages\megaTinyCore\hardware\megaavr\2.6.4\libraries\tinyNeoPixel_Static

データ形式(旧と新バージョンあるらしい)
ws2812b_time.png

nice!(0)  コメント(0)