2015年04月03日

マイコン内蔵RGB LED制御

マイコン内蔵RGB LED制御

動作の様子(YouTube)


マイコン内蔵RGB LED(型番:WS2812B)をArduinoで制御してみました。

マイコン内蔵RGB LEDはこちらの製品です。
 http://akizukidenshi.com/catalog/g/gI-07915/

仕様書上、制御する波形周期は次のようになっています。
--------------------------------------------------
マイコン内蔵RGB LED制御
--------------------------------------------------

マイコンボードは Seeeduino(Arduino 互換)を使用。

Aruduinoのライブラリは「Adafruit_NeoPixel」を利用しています。
 https://github.com/adafruit/Adafruit_NeoPixel

上記ボードとライブラリでのオシロスコープで実測波形は下記になります。
(標準時間との誤差はありますが、仕様範囲内です。)

 データ1
マイコン内蔵RGB LED制御
 データ0
マイコン内蔵RGB LED制御
(横軸:200nsec 縦軸:2.0V)

データ1 High時間 800nsec / Low時間 440nsec
データ0 High時間 320nsec / Low時間 945nsec

ライブラリのソースを確認すると、データ送信処理は速度重視のためアセンブラで記述されていました。
(ソース: Adafruit_NeoPixel.cpp)
マイコン内蔵RGB LED制御

【クラスについて】
 // LED総数、使用ピンの設定
 Adafruit_NeoPixel pixels = Adafruit_NeoPixel( LED総数, PIN, NEO_GRB + NEO_KHZ800);

 // 開始
 pixels.begin();

 // 各LEDデータの保存
 pixels.setPixelColor( LED位置, pixels.Color( 赤値, 緑値, 青値));

 // 表示の更新
 pixels.show();



LEDの表示を固定パターン化する際に、テーブルデータをフラッシュROMエリアに配置する場合
通常のC言語と少し異なり
 PROGMEM、pgm_read_word_near、pgm_read_byte_near
などを利用する必要があります。
これについては下記「Arduino 日本語リファレンス」→「PROGMEM」のページにわかりやすく書かれています。

http://www.musashinodenpa.com/arduino/ref/index.php?f=0&pos=1824






同じカテゴリー(マイコン開発)の記事
Fusion PCBでエレキー
Fusion PCBでエレキー(2020-04-01 19:00)


上の画像に書かれている文字を入力して下さい
 
<ご注意>
書き込まれた内容は公開され、ブログの持ち主だけが削除できます。

削除
マイコン内蔵RGB LED制御
    コメント(0)