2016-05-02 3 views
0

Я пытаюсь использовать флеш-память, используя неопиксельную и atm-8 светодиодную полосу (будет длиннее позже). То, что я пытаюсь сделать, - это предоставить список информации о пикселях и прокрутить список и зажечь огни, как говорит «скриптовый массив».Arduino Uno array failed

Вот код, который я сделал до сих пор:

#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) 
    } 
} 

Когда я проверить этот код, я получаю ошибку 'array' was not declared in this scope от линии strip.setPixelColor(j, strip.Color(array[i][j][0],array[i][j][1],array[i][j][2])).

ответ

0

Ваша array переменная объявлена ​​внутри функции setup и доступна только внутри этой функции. Вам просто нужно, чтобы переместить декларацию array в глобальную область видимости (вне функции setup.

#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