2016-05-02 22 views
0

neoPixelとatm 8のLEDストリップを使用して色をフラッシュしようとしています(後でもっと長くなります)。私がしようとしているのは、ピクセル情報のリストを与え、リストをループし、 'スクリプト配列'のようにライトを点滅させることです。ここでArduino Unoアレイが失敗する

私がこれまで行っているコードです:

#include <Adafruit_NeoPixel.h> 
#ifdef __AVR__ 
    #include <avr/power.h> 
#endif 

#define PIN 6 

Adafruit_NeoPixel strip = Adafruit_NeoPixel(8, PIN, NEO_GRB + NEO_KHZ800); 

void setup() { 

    strip.begin(); 
    strip.show(); 
    int array[2][8][3] = { 
    {{120, 100, 40},{120, 100, 40},{120, 100, 40},{120, 100, 40},{120, 100, 40},{120, 100, 40},{120, 100, 40},{120, 100, 40}}, 
    {{50, 90, 200}, {50, 90, 200},{50, 90, 200},{50, 90, 200},{50, 90, 200},{50, 90, 200},{50, 90, 200},{50, 90, 200}} 
    }; // flashing two colors on all leds 
} 

void loop() { 
    fromArray(50); 
} 

void fromArray(uint8_t wait){ 
    for(int i=0; i<2; i++){ 
    for (int j=0; j<8; j++){ 
     strip.setPixelColor(j, strip.Color(array[i][j][0],array[i][j][1],array[i][j][2])) 
    } 
    strip.show(); 
    delay(wait) 
    } 
} 

私はこのコードをチェックすると、私はラインstrip.setPixelColor(j, strip.Color(array[i][j][0],array[i][j][1],array[i][j][2]))からエラー'array' was not declared in this scopeを取得します。

答えて

0

array変数はsetup関数内で宣言されており、この関数内でのみ使用できます。あなたは、単にsetup関数の外部(グローバルスコープにarrayの宣言を移動する必要があります。

#include <Adafruit_NeoPixel.h> 
#ifdef __AVR__ 
    #include <avr/power.h> 
#endif 

#define PIN 6 

Adafruit_NeoPixel strip = Adafruit_NeoPixel(8, PIN, NEO_GRB + NEO_KHZ800); 

int array[2][8][3] = { 
    {{120, 100, 40},{120, 100, 40},{120, 100, 40},{120, 100, 40},{120, 100, 40},{120, 100, 40},{120, 100, 40},{120, 100, 40}}, 
    {{50, 90, 200}, {50, 90, 200},{50, 90, 200},{50, 90, 200},{50, 90, 200},{50, 90, 200},{50, 90, 200},{50, 90, 200}} 
    }; // flashing two colors on all leds 

void setup() { 

    strip.begin(); 
    strip.show(); 
} 

void loop() { 
    fromArray(50); 
} 

void fromArray(uint8_t wait){ 
    for(int i=0; i<2; i++){ 
    for (int j=0; j<8; j++){ 
     strip.setPixelColor(j, strip.Color(array[i][j][0],array[i][j][1],array[i][j][2])); 
    } 
    strip.show(); 
    delay(wait); 
    } 
} 

あなたはまた、私は私のバージョンで追加されているあなたのfromArray機能にいくつかのセミコロンが欠落している。

+0

すぐにお返事ありがとうございます。どういうわけか、それがそこに入った。フォトフレームを続ける時間:) – Duzzz

0

あなたの配列は、あなたのsetup()関数内で宣言され、あなたのコードの残りの部分には表示されませんので、あなたはこのエラーを取得している。

あなたは一番上に移動する必要があります。

int array[2][8][3] = { 
    {{120, 100, 40},{120, 100, 40},{120, 100, 40},{120, 100, 40},{120, 100, 40},{120, 100, 40},{120, 100, 40},{120, 100, 40}}, 
    {{50, 90, 200}, {50, 90, 200},{50, 90, 200},{50, 90, 200},{50, 90, 200},{50, 90, 200},{50, 90, 200},{50, 90, 200}} 
    }; // flashing two colors on all leds 

void setup() { 

    strip.begin(); 
    strip.show(); 

} 

void loop() { 
    fromArray(50); 
} 
+0

両方の素早い答えをありがとう。どういうわけか、それがそこに入った。フォトフレームを続ける時間:) – Duzzz

関連する問題