Problem mit mehreren NeoPixel Strip's


hallo zusammen,

ich bin gerade bau eines würfels welcher auf jeder seite ein 8x8 neopixel gitter kriegt. ich habe jede seite einzeln als strip gebaut, d.h. pro strip sind das 64 neopixel_led's. der anfang der ansteuerung funktionierte auch noch recht gut, allerdings merke ih jetzt als ich eine funktion (turn_right(front);) anwenden will, das diese nicht richtig funktionieren will, sobald mehrere strip's aktiv sind. genauer gesagt sie wird mindestens 2 mal aus geführt nachher nicht mehr.

kann mir jemand helfen? die if abfragen in der void loop sollten denn durchlauf durch diese loop beschleunigen.

hier noch mein code
code: [select]

#include <adafruit_neopixel.h>
#ifdef __avr__
#include <avr/power.h>
#endif

//pin definition each side/each led-strip 64 pixel's
#define pin0 6
#define pin1 7
#define pin2 8
#define pin3 9
#define pin4 10
#define pin5 11

// define strip's
adafruit_neopixel strip0 = adafruit_neopixel(64, pin0, neo_grb + neo_khz800); //front
adafruit_neopixel strip1 = adafruit_neopixel(64, pin1, neo_grb + neo_khz800); //rear
adafruit_neopixel strip2 = adafruit_neopixel(64, pin2, neo_grb + neo_khz800); //bottom
adafruit_neopixel strip3 = adafruit_neopixel(64, pin3, neo_grb + neo_khz800); //top
adafruit_neopixel strip4 = adafruit_neopixel(64, pin4, neo_grb + neo_khz800); //left_side
adafruit_neopixel strip5 = adafruit_neopixel(64, pin5, neo_grb + neo_khz800); //right_side

// define colors
uint32_t yellow = strip0.color(255, 255, 0);
uint32_t white = strip0.color(255, 255, 255);
uint32_t blue = strip0.color(0, 0, 255);
uint32_t green = strip0.color(0, 255, 0);
uint32_t orange = strip0.color(255, 75, 0);
uint32_t red = strip0.color(255, 0, 0);

// define startingcolor of sides
uint32_t front[8][8] = {{red, red, red, red, red, red, red, red}, {red, red, red, red, red, red, red, red}, {red, red, red, red, red, red, red, red}, {red, red, red, red, red, red, red, red}, {red, red, red, red, red, red, red, red}, {red, red, red, red, red, red, red, red}, {red, red, red, red, red, red, red, red}, {red, red, red, red, red, red, red, red}};
uint32_t back[8][8] = {{orange, orange, orange, orange, orange, orange, orange, orange}, {orange, orange, orange, orange, orange, orange, orange, orange}, {orange, orange, orange, orange, orange, orange, orange, orange}, {orange, orange, orange, orange, orange, orange, orange, orange}, {orange, orange, orange, orange, orange, orange, orange, orange}, {orange, orange, orange, orange, orange, orange, orange, orange}, {orange, orange, orange, orange, orange, orange, orange, orange}, {orange, orange, orange, orange, orange, orange, orange, orange}};
uint32_t left[8][8] = {{blue, blue, blue, blue, blue, blue, blue, blue}, {blue, blue, blue, blue, blue, blue, blue, blue}, {blue, blue, blue, blue, blue, blue, blue, blue}, {blue, blue, blue, blue, blue, blue, blue, blue}, {blue, blue, blue, blue, blue, blue, blue, blue}, {blue, blue, blue, blue, blue, blue, blue, blue}, {blue, blue, blue, blue, blue, blue, blue, blue}, {blue, blue, blue, blue, blue, blue, blue, blue}};
uint32_t right[8][8] = {{green, green, green, green, green, green, green, green}, {green, green, green, green, green, green, green, green}, {green, green, green, green, green, green, green, green}, {green, green, green, green, green, green, green, green}, {green, green, green, green, green, green, green, green}, {green, green, green, green, green, green, green, green}, {green, green, green, green, green, green, green, green}, {green, green, green, green, green, green, green, green}};
uint32_t top[8][8] = {{yellow, yellow, yellow, yellow, yellow, yellow, yellow, yellow}, {yellow, yellow, yellow, yellow, yellow, yellow, yellow, yellow}, {yellow, yellow, yellow, yellow, yellow, yellow, yellow, yellow}, {yellow, yellow, yellow, yellow, yellow, yellow, yellow, yellow}, {yellow, yellow, yellow, yellow, yellow, yellow, yellow, yellow}, {yellow, yellow, yellow, yellow, yellow, yellow, yellow, yellow}, {yellow, yellow, yellow, yellow, yellow, yellow, yellow, yellow}, {yellow, yellow, yellow, yellow, yellow, yellow, yellow, yellow}};
uint32_t bottom[8][8] = {{white, white, white, white, white, white, white, white}, {white, white, white, white, white, white, white, white}, {white, white, white, white, white, white, white, white}, {white, white, white, white, white, white, white, white}, {white, white, white, white, white, white, white, white}, {white, white, white, white, white, white, white, white}, {white, white, white, white, white, white, white, white}, {white, white, white, white, white, white, white, white}};
uint32_t duplicate[8][8];

// save of previous colors
uint32_t front_old[8][8];
uint32_t back_old[8][8];
uint32_t left_old[8][8];
uint32_t right_old[8][8];
uint32_t top_old[8][8];
uint32_t bottom_old[8][8];

// write stripes blank
void setup()
{
  strip0.setbrightness(200);
  strip1.setbrightness(200);
  strip2.setbrightness(200);
  strip3.setbrightness(200);
  strip4.setbrightness(200);
  strip5.setbrightness(200);
  strip0.begin();
  strip1.begin();
  strip2.begin();
  strip3.begin();
  strip4.begin();
  strip5.begin();
  strip0.show();
  strip1.show();
  strip2.show();
  strip3.show();
  strip4.show();
  strip5.show();
  (int g = 0; g < 8; g++)
  {
    front[2][g] = blue;
    front[3][g] = blue;
    front[4][g] = green;
    front[5][g] = green;
    front[6][g] = white;
    front[7][g] = white;
  }
  delay(100);
}

void loop()
{
  if (front != front_old)
  {
    pannel(strip0, front);
  }
  if (back != back_old)
  {
    pannel(strip1, back);
  }
  if (left != left_old)
  {
    pannel(strip2, left);
  }
  if (right != right_old)
  {
    pannel(strip3, right);
  }
  if (top != top_old)
  {
    pannel(strip4, top);
  }
  if (bottom != bottom_old)
  {
    pannel(strip5, bottom);
  }
  backup_array(front, front_old);
  backup_array(back, back_old);
  backup_array(left, left_old);
  backup_array(right, right_old);
  backup_array(top, top_old);
  backup_array(bottom, bottom_old);
  turn_right(front);
  delay(500);
}

void pannel(adafruit_neopixel strip, uint32_t pannel[8][8])
{
  strip.begin();
  strip.show();
  (int x = 0; x < 8; x++)
  {
    int column = 8 * x;
    (int y = 0; y < 8; y++)
    {
      strip.setpixelcolor(column + y, pannel[x][y]);
    }
  }
  strip.show();
}

void backup_array(uint32_t array[8][8], uint32_t backuparray[8][8])
{
  (int = 0; < 8; a++)
  {
    (int b = 0; b < 8; b++)
    {
      backuparray[a][b] = array[a][b];
    }
  }
}

void duplicate_array(uint32_t array[8][8])
{
  (int = 0; < 8; a++)
  {
    (int b = 0; b < 8; b++)
    {
      duplicate[a][b] = array[a][b];
    }
  }
}

void turn_left(uint32_t turn_l[8][8])
{
  duplicate_array(turn_l);
  (int c = 0; c < 8; c++)
  {
    (int z = 0; z < 8; z++)
    {
      if ((z == 1) || (z == 3) || (z == 5) || (z == 7))
      {
        turn_l[z][7 - c] = duplicate[z][c];
      }
    }
  }
  duplicate_array(turn_l);
  (int c = 0; c < 8; c++)
  {
    (int z = 0; z < 8; z++)
    {
      turn_l[7 - c][z] = duplicate[z][c];
    }
  }
  duplicate_array(turn_l);
  (int c = 0; c < 8; c++)
  {
    (int z = 0; z < 8; z++)
    {
      if ((z == 1) || (z == 3) || (z == 5) || (z == 7))
      {
        turn_l[z][7 - c] = duplicate[z][c];
      }
    }
  }
}

void turn_right(uint32_t turn_r[8][8])
{
  duplicate_array(turn_r);
  (int d = 0; d < 8; d++)
  {
    (int w = 0; w < 8; w++)
      if ((w == 1) || (w == 3) || (w == 5) || (w == 7))
      {
        turn_r[w][7 - d] = duplicate[w][d];
      }
  }
  duplicate_array(turn_r);
  (int d = 0; d < 8; d++)
  {
    (int w = 0; w < 8; w++)
    {
      turn_r[d][7 - w] = duplicate[w][d];
    }
  }
  duplicate_array(turn_r);
  (int d = 0; d < 8; d++)
  {
    (int w = 0; w < 8; w++)
      if ((w == 1) || (w == 3) || (w == 5) || (w == 7))
      {
        turn_r[w][7 - d] = duplicate[w][d];
      }
  }
}


lg simon

wie sieht denn deine versorgung der led aus?

8x8 led x 6 seiten man 3 farben mal 20 ma = 23a schafft das deine versorgung?

gruß tommy


Arduino Forum > International > Deutsch (Moderator: uwefed) > Problem mit mehreren NeoPixel Strip's


arduino

Comments

Popular posts from this blog

Flip address is out of range arduino uno r3

Arduino Uno not uploading

Indesign and MathType fonts