2017-12-04 9 views
1

the NeoPixel moduleを使用して特定のLEDをオンにしようとしています。どのように動作するのは簡単です:RGBカラーの2D配列を解析します。ここに例があります:EspruinoのNeoPixelモジュールを使用して特定のLEDを点灯させますか?

require("neopixel").write(NodeMCU.B2, [[255, 0, 0], [0, 255, 0], [0, 0, 255]]); 

赤、緑、青の3つのLEDが点灯します。私は次のような何かをすることができる関数を持っています:

function single(number, color) { 
    require("neopixel").write(NodeMCU.B2, number, color); 
} 

single(0, [255, 0, 0]); 
single(1, [0, 255, 0]); 
single(2, [0, 0, 255]); 

これは、上記と全く同じです。今、あなたは質問するかもしれません:なぜあなたはそれを望みますか?まあ:

  1. は、私はそれがLEDの最後の「設定」を覚えておきたいので、私はすべての私の100+のLEDをオフにして、ちょうど(最後の数をオンにしたい場合は、私は時間
  2. の上にそれを更新することができますあるいは途中でのもの)、私はwrite()機能に100+のLEDを解析する必要はないだろう、それらのほとんどが黒でどこ

は、その可能性のようなものですか、私は順番にいくつかの魔法を行う必要があります最後のLED構成を覚えていますか?

答えて

1

ネオピクセルのドキュメントはhttp://www.espruino.com/WS2811にありますので、配列を使用して に保存することをお勧めします。

ここでarrという配列を作成したら、.setメソッドを使用して、3つの要素を正しい位置に設定することができます(RGBのため3倍の数)。その後、配列全体が再送信されます。

var arr = new Uint8ClampedArray(NUM_OF_LEDS*3); 

function single(number, color) { 
    arr.set(color, number*3); 
    require("neopixel").write(NodeMCU.B2, arr); 
} 
+0

病気!ですから 'arr.set()'を実行すると、新しい 'arr'は新しいLEDを更新します。基本的に私が欲しいものを正確にやっている。 – MortenMoulder

+0

また、単純にすべてをオフにすることができる場合、または100+を[0,0,0]に設定する必要がある場合は、わかりますか? – MortenMoulder

+0

はい、そうです。 '.set()'は標準のJavaScript型付き配列メソッドです(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/set)。配列のすべての要素を同じものに設定する '.fill'もあります。したがって、それらをすべて無効にするには、' arr.fill(0) 'と' neopixel'行を実行してすべてのデータを戻します。 –

関連する問題