3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

DotStar(APA102)(RGBLED)をmbedで使う

Last updated at Posted at 2020-06-08

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

image.png

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に線があるタイプ

image.png http://akizukidenshi.com/catalog/g/gI-03037/

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回送信

って感じです。
image.png

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)

サンプルプログラム

sample.cpp
# 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!!")

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?