月別アーカイブ: 2016年11月

Adafruit_NeoPixelで遊ぶ

シリアル対応のLEDをArduinoで使うにあたってのメモ書き。

使うもの

シリアルつきLEDについて

LEDの発光セルの内部にマイコンが組み込まれており、
Arduinoから発光のパターンをプログラムすることができる。
RGBなどのパラメータを変更することで色合いを自由に変化させることができる。
ライブラリはAdafruitから公開されているAdafruit_NeoPixel.hを使うことでArduinoやesp8266などから
LEDをプログラムすることができる。

https://github.com/adafruit/Adafruit_NeoPixel

マイコン内蔵RGB 8LEDスティックを使うための準備

ピンヘッダーをそれぞれはんだ付けする。
GND,DIN,5VDC,GND
2.54mmピッチなのできれいにはんだ付けできるはず。
ピンヘッダにジャンパワイヤ(オスーメス)をさし、割り振り通りにArduinoにさしてやる。
DOUTはArduinoの6番ピンにさす。

Adafruit_NeoPixelを扱う。

githubからライブラリをDLしArduinoのライブラリフォルダに移してやれば使えるようになる。
サンプルがいくつかあるうちのsimpleをまずは書き換えてライブラリが提供するAPIを探ってみる。


#include <Adafruit_NeoPixel.h>

#ifdef __AVR__
    #include <avr/power.h>
#endif
//1.Arduinoにつなぐピンの番号を指定する。※ほかのピン番号に変えても大丈夫
#define PIN            6
//2.LEDチップの数を指定する。
#define NUMPIXELS      8

//3.NeoPixelsのライブラリをインスタンスする。
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);

void setup() {
    //4.これでライブラリを初期化するっぽい。
    pixels.begin();
}

void loop() {
    //5.光らせるセルの番号,光らせるためのRGBの値を引数としてあたえてやる。※引数は整数を入れる。0.5とかだと光らない。
    pixels.setPixelColor(0,pixels.Color(30,0,0));
    pixels.setPixelColor(1,pixels.Color(0,30,0));
    pixels.setPixelColor(2,pixels.Color(0,0,30));

    //6.LEDセルを更新するための関数っぽい。
    pixels.show();
}

自分がわかる範囲でコードを削り込んでみた。重要な部分としてはコメントを割り振った1~6の部分。
関数やクラスのインスタンスを適切に扱うことができればLEDを望む色で点灯させることができるようだ。