mbedでシリアル制御のフルカラーLEDを使ってみた

Qitta書いたことないし、今までやった備忘録を書いておこうと思いました。
今回はフルカラーLEDのDotstarをmbedで使う為にに行くつか調べたことを書きたいと思います。
あとライブラリーも作りました。NeoPixelをmbedで使いたかったけど、動かないんだ!!って人は是非DotStarを使いましょう!!通信も簡単だし、ライブラリも作ったので是非使ってください。
[作ったライブラリ library for using DotStar with Mbed!!](https://github.com/TomiXRM/APA102-DotStar-for-Mbed "library for using DotStar with Mbed!!")
フルカラーLEDの種類
・普通のRGBに線があるタイプ
・NeoPixel(なぞのシリアル制御LED)
・Dotstar(APA102)(SPI通信で光らせられるLED,安定してる)
・ほかにも色々
普通のRGBに線があるタイプ

RGBそれぞれに信号線が出ています。PWMかなんかでそれぞれに電気を入れてあげると光ります。
当然、LEDの使う個数 x 3本GPIOを使います。
16個光らせるなら16x3で48個のGPIOが必要です。おおすぎる
それでこの多すぎるからピン数を減らしたいよねーってでてきたのがシリアル制御のLEDになります。
NeoPixel
https://www.switch-science.com/catalog/list/?keyword=neopixel
これは1本線シリアルでLEDにRED(256bit)GREEN(256bit)BLUE(256bit)のデータを送信して光らせます。1本でLED256個までならいけるらしいです。しかしGPIOにバッファ機能(?)がないとシリアルで文字を送るのは難しいらしく、mbedでは無理っぽいです。一応特殊なことをすればいけるらしいですが、僕が今回使おうとしてるマイコンでは動作しない様です。
DotStar
https://www.switch-science.com/catalog/3239/
DotStarはSPI通信でLEDを制御するタイプです。2本線(MOSIとSCK)が必要です。上のNeoPixelと似ていますが、SPI通信なので大概のマイコンが標準搭載している通信方式ということもあり、NeoPixelよりもはるかに通信が楽です。しかし値段はNeoPixelよりも高いです。クロック同期なので通信も安定するっぽいです。値段が張ること以外はいいことがあるっぽいですね。あと、反応が早いとか。
今回はDotstarが手に入ったので実験することにしました。Switch Scienceで売っているDotStarの赤い基板を使います。
通信
APA102データシートより(https://cdn-shop.adafruit.com/datasheets/APA102.pdf)
1.0x00を4回送信
2.11100000から11111111までの数値(2の5乗の0~31+111)で明るさを設定する
3.RGB(使用上BGRの順番)の値を0~255 x3で送る。
4.0xFFをを4回送信
DotStarのライブラリを作ったよ。
ライブラリを作りました。今回はインスタンスが生成された時に変数の配列の数を決定するっていうのをやってみたかったのでやってみました。
使ったLED(https://www.sparkfun.com/products/14353)
まずはincludeします。
# include "LGDotStar.h"
次にインスタンス
LGDotStar LED(D11,D13,4);//mosi,sck,Number of leds used
LEDの設定
LED.set(255,0,0,0);//RED,GREEN,BLUE,Number of led
LEDにデータの送信
LED.write();
//or
LED.write(31);//set Brightness(0~31)
サンプルプログラム
# include "mbed.h"
# include "LGDotStar.h"
LGDotStar LED(D11,D13,4);
int main(){
while (1) {
LED.set(255,0,255,0);
LED.set(255,255,255,1);
LED.set(255,255,0,2);
LED.set(0,255,255,3);
LED.write(31);
}
}
こんな感じです。
[作ったライブラリ library for using DotStar with Mbed!!](https://github.com/TomiXRM/APA102-DotStar-for-Mbed "library for using DotStar with Mbed!!")