2016-12-31 19 views
3

私はarduino用のイコライザを構築していますので、私はCでコーディングしていますが、次の問題があります。解決策を見つけることができました。なぜなら、私は今では多くのコードをコードしていないからです。だからここ は私が何をしたいです:複数のNeoPixelを使ったArduinoスケッチ(別のNeoPixelsを使用する機能)

Adafruit_NeoPixel strip1 = Adafruit_NeoPixel(21, LEFT_BAND_1, NEO_GRB + NEO_KHZ800); 
    ... 
Adafruit_NeoPixel strip14 = Adafruit_NeoPixel(21, RIGHT_BAND_7, NEO_GRB + NEO_KHZ800); 

Adafruit_NeoPixel strips[14] = {strip1,strip2,strip3,strip4,strip5,strip6,strip7,strip8,strip9,strip10,strip11,strip12,strip13,strip14}; 

は、今私は、次の引数を取る関数があります。

void set_band_ledx(Adafruit_NeoPixel stripx,uint32_t color, float value,float value_old) {...} 

を、私はこのような関数を使用したい:

for(int i = 0;i<1;i++){ 
    set_band_ledx(strips[i],strip[i].Color(c1, c2, c3), value_l[i],value_l_old[i]); 
    } 

私は1つのLEDストリップのためにそれを使用する場合、機能自体は動作します 私は問題がポインタについてだと思います。この機能は単にこのようには機能しませんし、機能させることができませんでした。 ストリップの配列なしでこれをテストすると、全体的なプリプログラムが正常に動作します。

だから、どこでどのようにポインタを使う必要がありますか? 事前に助けてくれてありがとう!

+0

* Arduino *はC *ではありません。あなたは資格を取らなければなりません*少しだけ詳細に働きます*どんなことができますか?どうしたの?何を試しましたか?* - それはあなたのプロジェクトで何が間違っているのかを推測することだけが可能です。 *ガード 'i <1'はバグコードか作業中ですか? –

答えて

1

あなたはこの

Adafruit_NeoPixel strip1 = Adafruit_NeoPixel(21, LEFT_BAND_1, NEO_GRB + NEO_KHZ800); 
    ... 
Adafruit_NeoPixel strip14 = Adafruit_NeoPixel(21, RIGHT_BAND_7, NEO_GRB + NEO_KHZ800); 

Adafruit_NeoPixel strips[14] = {strip1,strip2,strip3,strip4,strip5,strip6,strip7,strip8,strip9,strip10,strip11,strip12,strip13,strip14}; 

を行うとあなたが代わりに必要な14のメモリ内2 * 14 = 28Adafruit_NeoPixelのメモリに相当し、占有しています。

これが良いだろう。

Adafruit_NeoPixel strips[14] = { 
    Adafruit_NeoPixel(21, LEFT_BAND_1, NEO_GRB + NEO_KHZ800), 
    ... 
    Adafruit_NeoPixel(21, RIGHT_BAND_7, NEO_GRB + NEO_KHZ800) 
} 
代わりに値

void set_band_ledx(Adafruit_NeoPixel stripx, uint32_t color, float value, float value_old) {...} 

stripxを渡すの


あなたは参照

void set_band_ledx(Adafruit_NeoPixel &stripx, uint32_t color, float value, float value_old) {...} 
0でそれを渡す必要があります私が見ることなく、この上間違っているかもしれませんが(

set_band_ledx(strips[i],strip[i].Color(c1, c2, c3), value_l[i],value_l_old[i]); 

:どうやらそれはstripxインスタンス内に保存されていることから、個別の引数としてuint32_t colorを渡すために何らかの理由があるようには思えない。また

、コードの残りの部分)

+0

ありがとう、私はもっと頻繁にそれをやり直すとポインタで作業するのがより快適になると思います! – Th3Fi3nD

関連する問題