2017-07-27 15 views
0

パーティクルフォトン上のNeoPixelsで遊んでいますか?異なる色でネオピクセルを回転させるランニングの上にサンプルコードがあります。しかし、これをどのように拡張するのか、特にネオピクセルの色を定義した方法について少し混乱します。#NeoPIxelのRGB色を定義します。

スケッチはそう

#define BLUE 5,5,190 
#define WHITE 150,150,150 
#define GREEN 10,180,10 

として色を定義し、このように次の関数のスピンを呼び出し

spin (BLUE); 

void spin(int R, int G, int B) { 
    for(i=0; i < PIXEL_COUNT; i++) { 
     strip.setPixelColor(i, R,G,B); 
     strip.show(); 
     delay(waitTime); 
    } 
    for(i=0; i < PIXEL_COUNT; i++) { 
     strip.setPixelColor(i, 0,0,0); 
     strip.show(); 
     delay(waitTime); 
    } 
} 

私は光子が色を変更するためにコマンドを送信するので、設定する必要がしたいです定義された色の1つに等しい変数を使用して、スピン関数に渡します。 はしかし、intに変数を設定することはすなわち

int lightcolor = BLUE;

は私もこれは同様に失敗した配列

int lightcolor [] = BLUE;

を試してみましたが失敗します。

私はコンパイラを渡すために int lightcolor [1,1,1] = BLUE

を得ることができたが、それは

スピン(lightcolor)

または スピン(lightcolor [1,1,1]機能の呼び出しに失敗しました。 }

#defineがそのconstを宣言する方法と、スケッチ全体でそれを使用する方法について、私がここで紛失していることがわかりません。

ありがとう

+0

'5,5,190'は有効なintではありません。カンマ区切りの数字を引数として関数に渡すことになっていますか? – Carcigenicate

+0

これは本当に色を定義するための奇妙な方法です。データを使って何か大きなことをしようとしているのであれば、非常に役に立たないでしょう。異なるサンプルコードを見ることをお勧めします。 –

答えて

1

実際に定義ステートメントが何であるかを調べる必要があります。プリプロセッサは、コンパイラがそれを見る前に、BLUEをソースファイルの5,5,190文字に置き換えます。

スピン(ブルー)は、スピン(5,5,190)が機能するため動作します。 BLUEを変数に代入するには、実際には3つの変数に割り当てる必要があります。なぜなら、スピンには3つの独立した変数、つまり各カラーチャネルに1つの変数が必要だからです。とにかく変数に代入するのはなぜですか?なぜ定義を使用しないのですか?

cやC++の紹介(別の言語です)を読んで、自分が何をしているのかを理解してください。あなたがやっているように盲目的にポンキングすることは、良い結果を生み出すことはまずありません。