PROGMEM

valera678
Offline
Зарегистрирован: 04.11.2016

Привет,народ!

Не подскажите ли по такой проблемке. Вобщем спаял такую плюшку,зовется лед куб 5Х5Х5 ,все работает прекрасно, но при попытке добавить данных в массив ,с целью увеличения количества световых эффектов конечно, начинается хрень. Скетч вобщем компилируется но железо не работает ,повисает наглухо на старте. о PROGMEM  я малость почитал,так понимаю он отправляет данные во flash ну и тд. Неужто флэш переполнен. 

скетч компилируется как я выше говорил "Размер скетча в двоичном коде: 5 598 байт (из 32 256 байт максимум)"

#include <avr/pgmspace.h>
#include <SPI.h>
int p  = 500;
int latchPin = 8;
int clockPin = 13;
int dataPin  = 11;
void GrowingCube();
void CountDown();
void  CubeDiman();
void ClearOut();
void MovingCube();
void shift_out(const byte  animation[5][6], int animationTime);

void setup()
{
  SPI.setBitOrder(MSBFIRST);
  SPI.setDataMode(SPI_MODE0);
  SPI.setClockDivider(SPI_CLOCK_DIV2);
  SPI.begin();
  pinMode(dataPin, OUTPUT);
  pinMode(clockPin, OUTPUT);  
  pinMode(latchPin, OUTPUT);
//  ClearOut();
 // CountDown();
}

void loop(){
         CountDown();
            MovingCube();
         CubeDiman();
  GrowingCube();
       CubeDiman();
      MovingCube();
        CubeDiman();
  
   
      ClearOut();

  int randomAnimation = random(4);
  switch(randomAnimation){
    case 0:
      GrowingCube();
      break;
    case 1:
      MovingCube();
      break;
      case 2:
      CountDown();
      break;
      case 3:
      ClearOut();
      break;
  }
}


void CubeDiman(){
   const byte cubeD1 [5][6] PROGMEM = {{B00001, B11111, B10001, B10001, B10001, B11111},
                                      {B00010, B10001, B00000, B00000, B00000, B10001},
                                      {B00100, B10001, B00000, B00000, B00000, B10001},
                                      {B01000, B10001, B00000, B00000, B00000, B10001},
                                      {B10000, B11111, B10001, B10001, B10001, B11111}};
                                      
     const byte cubeD2 [5][6] PROGMEM={{B00000, B00000, B00000, B00000, B00000, B00000},
                                      { B00010, B00000 ,B01110, B01110, B01110, B00000},
                                      { B00100, B00000 ,B01110, B01110, B01110, B00000},
                                      { B01000, B00000, B01110, B01110, B01110, B00000},
                                      { B00000, B00000, B00000, B00000, B00000, B00000}};
    
     const byte cubeD3 [5][6] PROGMEM={{B00000, B00000, B00000, B00000, B00000, B00000},
                                      { B00000, B00000, B00000, B00000, B00000, B00000},
                                      { B00100, B00000, B00000, B00100, B00000, B00000},
                                      { B00000, B00000, B00000, B00000, B00000, B00000},
                                      { B00000, B00000, B00000, B00000, B00000, B00000}}; 
                                      
   /*   const byte cubeD4 [5][6] PROGMEM = {{B00000, B00000, B00000, B00000, B00000, B00000},
                                         { B00000, B00000, B00000, B00000, B00000, B00000},
                                         { B00100, B00000, B00000, B00100, B00000, B00000},
                                         { B00010, B00000, B01110, B01110, B01110, B00000},
                                         { B00000, B00000, B00000, B00000, B00000, B00000}};      */                                                        
     
                                      

                                         
      //  const byte cubeD6 [5][6] PROGMEM={{B00000, B00000, B00000, B00000, B00000, B00000},
      //                                   { B01000, B00000, B01110, B01110, B01110, B00000},
       //                                  { B00100, B00000, B00000, B00100, B00000, B00000},
       //                                  { B00000, B00000, B00000, B00000, B00000, B00000},
      //                                   { B00000, B00000, B00000, B00000, B00000, B00000}};   
       
     //   const byte cubeD7 [5][6] PROGMEM={{B10000, B11111, B11111, B11111, B11111, B11111},
      //                                   { B01000, B00000, B01110, B01110, B01110, B00000},
      //                                   { B00100, B00000, B00000, B00100, B00000, B00000},
      //                                   { B00000, B00000, B00000, B00000, B00000, B00000},
      //                                   { B00000, B00000, B00000, B00000, B00000, B00000}};          */                         
                                      
                                       
 shift_out(cubeD1, p+100);
 shift_out(cubeD2, p+100);
 shift_out(cubeD3, p+100);


 

 //shift_out(cubeD6, 2000);
 //shift_out(cubeD7, 2000);
  ClearOut();
}




void CountDown(){
  
   const byte FiveRow5 [5][6] PROGMEM = {{ B10000, B01111, B00000, B00000, B00000, B00000},
                                          {B01000, B01000, B00000, B00000, B00000, B00000},
                                          {B00100, B01110, B00000, B00000, B00000, B00000},
                                          {B00010, B00001, B00000, B00000, B00000, B00000},
                                          {B00001, B01110, B00000, B00000, B00000, B00000}};
                        
  const byte FiveRow4 [5][6] PROGMEM =  {{ B10000, B00000, B01111, B00000, B00000, B00000},
                                          {B01000, B00000, B01000, B00000, B00000, B00000},
                                          {B00100, B00000, B01110, B00000, B00000, B00000},
                                          {B00010, B00000, B00001, B00000, B00000, B00000},
                                          {B00001, B00000, B01110, B00000, B00000, B00000}};   
                          
  const byte FiveRow3 [5][6] PROGMEM =  {{ B10000, B00000, B00000, B01111, B00000, B00000},
                                          {B01000, B00000, B00000, B01000, B00000, B00000},
                                          {B00100, B00000, B00000, B01110, B00000, B00000},
                                          {B00010, B00000, B00000, B00001, B00000, B00000},
                                          {B00001, B00000, B00000, B01110, B00000, B00000}}; 
                          
  const byte FiveRow2 [5][6] PROGMEM =   {{B10000, B00000, B00000, B00000, B01111, B00000},
                                          {B01010, B00000, B00000, B00000, B01000, B00000},
                                          {B00100, B00000, B00000, B00000, B01110, B00000},
                                          {B00010, B00000, B00000, B00000, B00001, B00000},
                                          {B00001, B00000, B00000, B00000, B01110, B00000}}; 
                          
  const byte FiveRow1 [5][6] PROGMEM =  {{ B10000, B00000, B00000, B00000, B00000, B01111},
                                          {B01000, B00000, B00000, B00000, B00000, B01000},
                                          {B00100, B00000, B00000, B00000, B00000, B01110},
                                          {B00010, B00000, B00000, B00000, B00000, B00001},
                                          {B00001, B00000, B00000, B00000, B00000, B01110}};
                                          
                                          
                                          
                                          
                                          
    const byte FourRow5 [5][6] PROGMEM = {{B10000, B01001, B00000, B00000, B00000, B00000},
                                          {B01000, B01001, B00000, B00000, B00000, B00000},
                                          {B00100, B01111, B00000, B00000, B00000, B00000},
                                          {B00010, B00001, B00000, B00000, B00000, B00000},
                                          {B00001, B00001, B00000, B00000, B00000, B00000}};
                        
  const byte FourRow4 [5][6] PROGMEM =  {{ B10000, B00000, B01001, B00000, B00000, B00000},
                                          {B01000, B00000, B01001, B00000, B00000, B00000},
                                          {B00100, B00000, B01111, B00000, B00000, B00000},
                                          {B00010, B00000, B00001, B00000, B00000, B00000},
                                          {B00001, B00000, B00001, B00000, B00000, B00000}};   
                          
  const byte FourRow3 [5][6] PROGMEM =  {{ B10000, B00000, B00000, B01001, B00000, B00000},
                                          {B01000, B00000, B00000, B01001, B00000, B00000},
                                          {B00100, B00000, B00000, B01111, B00000, B00000},
                                          {B00010, B00000, B00000, B00001, B00000, B00000},
                                          {B00001, B00000, B00000, B00001, B00000, B00000}}; 
                          
  const byte FourRow2 [5][6] PROGMEM =   {{B10000, B00000, B00000, B00000, B01001, B00000},
                                          {B01000, B00000, B00000, B00000, B01001, B00000},
                                          {B00100, B00000, B00000, B00000, B01111, B00000},
                                          {B00010, B00000, B00000, B00000, B00001, B00000},
                                          {B00001, B00000, B00000, B00000, B00001, B00000}}; 
                          
  const byte FourRow1 [5][6] PROGMEM =  {{ B10000, B00000, B00000, B00000, B00000, B01001},
                                          {B01000, B00000, B00000, B00000, B00000, B01001},
                                          {B00100, B00000, B00000, B00000, B00000, B01111},
                                          {B00010, B00000, B00000, B00000, B00000, B00001},
                                          {B00001, B00000, B00000, B00000, B00000, B00001}};
                                          
                                          
                                          
                                          
  const byte ThreeRow5 [5][6] PROGMEM =  {{B00001, B01110, B00000, B00000, B00000, B00000},
                                          {B00010, B00001, B00000, B00000, B00000, B00000},
                                          {B00100, B00110, B00000, B00000, B00000, B00000},
                                          {B01000, B00001, B00000, B00000, B00000, B00000},
                                          {B10000, B01110, B00000, B00000, B00000, B00000}};
                        
  const byte ThreeRow4 [5][6] PROGMEM =  {{B00001, B00000, B01110, B00000, B00000, B00000},
                                          {B00010, B00000, B00001, B00000, B00000, B00000},
                                          {B00100, B00000, B00110, B00000, B00000, B00000},
                                          {B01000, B00000, B00001, B00000, B00000, B00000},
                                          {B10000, B00000, B01110, B00000, B00000, B00000}};   
                          
  const byte ThreeRow3 [5][6] PROGMEM =  {{B00001, B00000, B00000, B01110, B00000, B00000},
                                          {B00010, B00000, B00000, B00001, B00000, B00000},
                                          {B00100, B00000, B00000, B00110, B00000, B00000},
                                          {B01000, B00000, B00000, B00001, B00000, B00000},
                                          {B10000, B00000, B00000, B01110, B00000, B00000}}; 
                          
  const byte ThreeRow2 [5][6] PROGMEM =   {{B00001, B00000, B00000, B00000, B01110, B00000},
                                          {B00010, B00000, B00000, B00000, B00001, B00000},
                                          {B00100, B00000, B00000, B00000, B00110, B00000},
                                          {B01000, B00000, B00000, B00000, B00001, B00000},
                                          {B10000, B00000, B00000, B00000, B01110, B00000}}; 
                          
  const byte ThreeRow1 [5][6] PROGMEM =  {{B00001, B00000, B00000, B00000, B00000, B01110},
                                          {B00010, B00000, B00000, B00000, B00000, B00001},
                                          {B00100, B00000, B00000, B00000, B00000, B00110},
                                          {B01000, B00000, B00000, B00000, B00000, B00001},
                                          {B10000, B00000, B00000, B00000, B00000, B01110}};
                         
  const byte TwoRow5 [5][6] PROGMEM =    {{B10000, B00110, B00000, B00000, B00000, B00000},
                                          {B01000, B01001, B00000, B00000, B00000, B00000},
                                          {B00100, B00010, B00000, B00000, B00000, B00000},
                                          {B00010, B00100, B00000, B00000, B00000, B00000},
                                          {B00001, B01111, B00000, B00000, B00000, B00000}};
                          
  const byte TwoRow4 [5][6] PROGMEM =    {{B10000, B00000, B00110, B00000, B00000, B00000},
                                          {B01000, B00000, B01001, B00000, B00000, B00000},
                                          {B00100, B00000, B00010, B00000, B00000, B00000},
                                          {B00010, B00000, B00100, B00000, B00000, B00000},
                                          {B00001, B00000, B01111, B00000, B00000, B00000}};  
                          
  const byte TwoRow3 [5][6] PROGMEM =    {{B10000, B00000, B00000, B00110, B00000, B00000},
                                          {B01000, B00000, B00000, B01001, B00000, B00000},
                                          {B00100, B00000, B00000, B00010, B00000, B00000},
                                          {B00010, B00000, B00000, B00100, B00000, B00000},
                                          {B00001, B00000, B00000, B01111, B00000, B00000}}; 
                          
  const byte TwoRow2 [5][6] PROGMEM =    {{B10000, B00000, B00000, B00000, B00110, B00000},
                                          {B01000, B00000, B00000, B00000, B01001, B00000},
                                          {B00100, B00000, B00000, B00000, B00010, B00000},
                                          {B00010, B00000, B00000, B00000, B00100, B00000},
                                          {B00001, B00000, B00000, B00000, B01111, B00000}}; 
                          
  const byte TwoRow1 [5][6] PROGMEM =    {{B10000, B00000, B00000, B00000, B00000, B00110},
                                          {B01000, B00000, B00000, B00000, B00000, B01001},
                                          {B00100, B00000, B00000, B00000, B00000, B00010},
                                          {B00010, B00000, B00000, B00000, B00000, B00100},
                                          {B00001, B00000, B00000, B00000, B00000, B01111}}; 

  const byte OneRow5 [5][6] PROGMEM =    {{B10000, B00010, B00000, B00000, B00000, B00000},
                                          {B01000, B00110, B00000, B00000, B00000, B00000},
                                          {B00100, B00010, B00000, B00000, B00000, B00000},
                                          {B00010, B00010, B00000, B00000, B00000, B00000},
                                          {B00001, B00111, B00000, B00000, B00000, B00000}};
                          
  const byte OneRow4 [5][6] PROGMEM =    {{B10000, B00000, B00010, B00000, B00000, B00000},
                                          {B01000, B00000, B00110, B00000, B00000, B00000},
                                          {B00100, B00000, B00010, B00000, B00000, B00000},
                                          {B00010, B00000, B00010, B00000, B00000, B00000},
                                          {B00001, B00000, B00111, B00000, B00000, B00000}};
                          
  const byte OneRow3 [5][6] PROGMEM =    {{B10000, B00000, B00000, B00010, B00000, B00000},
                                          {B01000, B00000, B00000, B00110, B00000, B00000},
                                          {B00100, B00000, B00000, B00010, B00000, B00000},
                                          {B00010, B00000, B00000, B00010, B00000, B00000},
                                          {B00001, B00000, B00000, B00111, B00000, B00000}};
                          
  const byte OneRow2 [5][6]PROGMEM =     {{B10000, B00000, B00000, B00000, B00010, B00000},
                                          {B01000, B00000, B00000, B00000, B00110, B00000},
                                          {B00100, B00000, B00000, B00000, B00010, B00000},
                                          {B00010, B00000, B00000, B00000, B00010, B00000},
                                          {B00001, B00000, B00000, B00000, B00111, B00000}};
                          
  const byte OneRow1 [5][6] PROGMEM =    {{B10000, B00000, B00000, B00000, B00000, B00010},
                                          {B01000, B00000, B00000, B00000, B00000, B00110},
                                          {B00100, B00000, B00000, B00000, B00000, B00010},
                                          {B00010, B00000, B00000, B00000, B00000, B00010},
                                          {B00001, B00000, B00000, B00000, B00000, B00111}};
//shift_out(Animation you want to run, how long the animation should be runned in milliseconds); 
 
  shift_out(FiveRow5, p);
  shift_out(FiveRow4, p);
  shift_out(FiveRow3, p);
  shift_out(FiveRow2, p);
  shift_out(FiveRow1, p);
  shift_out(FourRow5, p);
  shift_out(FourRow4, p);
  shift_out(FourRow3, p);
  shift_out(FourRow2, p);
  shift_out(FourRow1, p);
  shift_out(ThreeRow5, p);
  shift_out(ThreeRow4, p);
  shift_out(ThreeRow3, p);
  shift_out(ThreeRow2, p);
  shift_out(ThreeRow1, p);
  shift_out(TwoRow5, p);
  shift_out(TwoRow4, p);
  shift_out(TwoRow3, p);
  shift_out(TwoRow2, p);
  shift_out(TwoRow1, p);
  shift_out(OneRow5, p);
  shift_out(OneRow4, p);
  shift_out(OneRow3, p);
  shift_out(OneRow2, p);
  shift_out(OneRow1, p);
  ClearOut();
}



void GrowingCube(){
  const byte cube1 [5][6] PROGMEM =  {{B00001, B00000, B00000, B00000, B00011, B00011},
                                      {B00010, B00000, B00000, B00000, B00011, B00011},
                                      {B00000, B00000, B00000, B00000, B00000, B00000},
                                      {B00000, B00000, B00000, B00000, B00000, B00000},
                                      {B00000, B00000, B00000, B00000, B00000, B00000}};
                        
  const byte cube2 [5][6] PROGMEM =  {{B00001, B00000, B00000, B00111, B00111, B00111},
                                      {B00010, B00000, B00000, B00111, B00111, B00111},
                                      {B00100, B00000, B00000, B00111, B00111, B00111},
                                      {B00000, B00000, B00000, B00000, B00000, B00000},
                                      {B00000, B00000, B00000, B00000, B00000, B00000}};
                      
  const byte cube3 [5][6] PROGMEM =  {{B00001, B00000, B01111, B01111, B01111, B01111},
                                      {B00010, B00000, B01111, B01111, B01111, B01111},
                                      {B00100, B00000, B01111, B01111, B01111, B01111},
                                      {B01000, B00000, B01111, B01111, B01111, B01111},
                                      {B00000, B00000, B00000, B00000, B00000, B00000}};
                      
  const byte cube4 [5][6] PROGMEM =  {{B00001, B11111, B11111, B11111, B11111, B11111},
                                      {B00010, B11111, B11111, B11111, B11111, B11111},
                                      {B00100, B11111, B11111, B11111, B11111, B11111},
                                      {B01000, B11111, B11111, B11111, B11111, B11111},
                                      {B10000, B11111, B11111, B11111, B11111, B11111}};
                      
  const byte cube5 [5][6] PROGMEM =  {{B00001, B11111, B11111, B11111, B11111, B11111},
                                      {B00010, B11111, B11111, B11111, B11111, B11111},
                                      {B00100, B11111, B11111, B11111, B11111, B11111},
                                      {B01000, B11111, B11111, B11111, B11111, B11111},
                                      {B00000, B00000, B00000, B00000, B00000, B00000}};
                      
  const byte cube6 [5][6] PROGMEM =  {{B00001, B11111, B11111, B11111, B11111, B11111},
                                      {B00010, B11111, B11111, B11111 ,B11111, B11111},
                                      {B00100, B11111, B11111, B11111, B11111, B11111},
                                      {B00000, B00000, B00000, B00000, B00000, B00000},
                                      {B00000, B00000, B00000, B00000, B00000, B00000}};
                      
  const byte cube7 [5][6] PROGMEM =  {{B00001, B11111, B11111, B11111, B11111, B11111},
                                      {B00010, B11111, B11111, B11111, B11111, B11111},
                                      {B00000, B00000, B00000, B00000, B00000, B00000},
                                      {B00000, B00000, B00000, B00000, B00000, B00000},
                                      {B00000, B00000, B00000, B00000, B00000, B00000}};
  
  // To avoid different brightness I always shiftout an array with a 5*6 dimension                    
  const byte cube8 [5][6] PROGMEM =  {{B00001, B11111, B11111, B11111, B11111, B11111},
                                      {B00000, B00000, B00000, B00000, B00000, B00000},
                                      {B00000, B00000, B00000, B00000, B00000, B00000},
                                      {B00000, B00000, B00000, B00000, B00000, B00000},
                                      {B00000, B00000, B00000, B00000, B00000, B00000}};
                      
  shift_out(cube1, 1000);
  shift_out(cube2, 1000);
  shift_out(cube3, 1000);
  shift_out(cube4, 1000);
  shift_out(cube5, 1000);
  shift_out(cube6, 1000);
  shift_out(cube7, 1000);
  shift_out(cube8, 1000); 
  ClearOut();
}

void MovingCube(){
   const byte cube1 [5][6] PROGMEM = {{B00001, B00000, B00000, B00000, B00011, B00011},
                                      {B00010, B00000, B00000, B00000, B00011, B00011},
                                      {B00000, B00000, B00000, B00000, B00000, B00000},
                                      {B00000, B00000, B00000, B00000, B00000, B00000},
                                      {B00000, B00000, B00000, B00000, B00000, B00000}};
                      
   const byte cube2 [5][6] PROGMEM = {{B00001, B00000, B00000, B00011, B00011, B00000},
                                      {B00010, B00000, B00000, B00011, B00011, B00000},
                                      {B00000, B00000, B00000, B00000, B00000, B00000},
                                      {B00000, B00000, B00000, B00000, B00000, B00000},
                                      {B00000, B00000, B00000, B00000, B00000, B00000}};
                      
   const byte cube3 [5][6]PROGMEM =  {{B00001, B00000, B00011, B00011, B00000, B00000},
                                      {B00010, B00000, B00011, B00011, B00000, B00000},
                                      {B00000, B00000, B00000, B00000, B00000, B00000},
                                      {B00000, B00000, B00000, B00000, B00000, B00000},
                                      {B00000, B00000, B00000, B00000, B00000, B00000}};
                                      
   const byte cube4 [5][6] PROGMEM = {{B00001, B00011, B00011, B00000, B00000, B00000},
                                      {B00010, B00011, B00011, B00000, B00000, B00000},
                                      {B00000, B00000, B00000, B00000, B00000, B00000},
                                      {B00000, B00000, B00000, B00000, B00000, B00000},
                                      {B00000, B00000, B00000, B00000, B00000, B00000}};
                      
   const byte cube5 [5][6] PROGMEM =  {{B00010, B00000, B00011, B00011, B00000, B00000},
                                      {B00100, B00000, B00011, B00011, B00000, B00000},
                                      {B00000, B00000, B00000, B00000, B00000, B00000},
                                      {B00000, B00000, B00000, B00000, B00000, B00000},
                                      {B00000, B00000, B00000, B00000, B00000, B00000}};
                      
   const byte cube6 [5][6] PROGMEM = {{B00010, B00000, B00110, B00110, B00000, B00000},
                                      {B00100, B00000, B00110, B00110, B00000, B00000},
                                      {B00000, B00000, B00000, B00000, B00000, B00000},
                                      {B00000, B00000, B00000, B00000, B00000, B00000},
                                      {B00000, B00000, B00000, B00000, B00000, B00000}};
                      
   const byte cube7 [5][6] PROGMEM = {{B00010, B00000, B01100, B01100, B00000, B00000},
                                      {B00100, B00000, B01100, B01100, B00000, B00000},
                                      {B00000, B00000, B00000, B00000, B00000, B00000},
                                      {B00000, B00000, B00000, B00000, B00000, B00000},
                                      {B00000, B00000, B00000, B00000, B00000, B00000}};
                        
   const byte cube8 [5][6] PROGMEM = {{B00100, B00000, B01100, B01100, B00000, B00000},
                                      {B01000, B00000, B01100, B01100, B00000, B00000},
                                      {B00000, B00000, B00000, B00000, B00000, B00000},
                                      {B00000, B00000, B00000, B00000, B00000, B00000},
                                      {B00000, B00000, B00000, B00000, B00000, B00000}};
                      
   const byte cube9 [5][6] PROGMEM = {{B01000, B00000, B01100, B01100, B00000, B00000},
                                      {B10000, B00000, B01100, B01100, B00000, B00000},
                                      {B00000, B00000, B00000, B00000, B00000, B00000},
                                      {B00000, B00000, B00000, B00000, B00000, B00000},
                                      {B00000, B00000, B00000, B00000, B00000, B00000}};
                      
  const byte cube10 [5][6] PROGMEM = {{B01000, B00000, B00000, B00110, B00110, B00000},
                                      {B10000, B00000, B00000, B00110, B00110, B00000},
                                      {B00000, B00000, B00000, B00000, B00000, B00000},
                                      {B00000, B00000, B00000, B00000, B00000, B00000},
                                      {B00000, B00000, B00000, B00000, B00000, B00000}};
                                      
  const byte cube11 [5][6] PROGMEM = {{B01000, B00000, B00000, B00000, B00011, B00011},
                                      {B10000, B00000, B00000, B00000, B00011, B00011},
                                      {B00000, B00000, B00000, B00000, B00000, B00000},
                                      {B00000, B00000, B00000, B00000, B00000, B00000},
                                      {B00000, B00000, B00000, B00000, B00000, B00000}};
                      
  const byte cube12 [5][6] PROGMEM = {{B01000, B00000, B00000, B00011, B00011, B00000},
                                      {B10000, B00000, B00000, B00011, B00011, B00011},
                                      {B00000, B00000, B00000, B00000, B00000, B00000},
                                      {B00000, B00000, B00000, B00000, B00000, B00000},
                                      {B00000, B00000, B00000, B00000, B00000, B00000}};
                      
  const byte cube13 [5][6] PROGMEM = {{B01000, B00000, B00011, B00011, B00000, B00000},
                                      {B10000, B00000, B00011, B00011, B00011, B00011},
                                      {B00000, B00000, B00000, B00000, B00000, B00000},
                                      {B00000, B00000, B00000, B00000, B00000, B00000},
                                      {B00000, B00000, B00000, B00000, B00000, B00000}};
                      
  const byte cube14 [5][6] PROGMEM = {{B01000, B00011, B00011, B00000, B00000, B00000},
                                      {B10000, B00011, B00011, B00011, B00011, B00011},
                                      {B00000, B00000, B00000, B00000, B00000, B00000},
                                      {B00000, B00000, B00000, B00000, B00000, B00000},
                                      {B00000, B00000, B00000, B00000, B00000, B00000}};
                      
  const byte cube15 [5][6] PROGMEM = {{B01000, B00110, B00110, B00000, B00000, B00000},
                                      {B10000, B00111, B00111, B00011, B00011, B00011},
                                      {B00000, B00000, B00000, B00000, B00000, B00000},
                                      {B00000, B00000, B00000, B00000, B00000, B00000},
                                      {B00000, B00000, B00000, B00000, B00000, B00000}};
                      
  const byte cube16 [5][6] PROGMEM = {{B01000, B00000, B00110, B00110, B00000, B00000},
                                      {B10000, B00111, B00111, B00111, B00011, B00011},
                                      {B00000, B00000, B00000, B00000, B00000, B00000},
                                      {B00000, B00000, B00000, B00000, B00000, B00000},
                                      {B00000, B00000, B00000, B00000, B00000, B00000}};
                      
  const byte cube17 [5][6] PROGMEM = {{B01000, B00000, B00000, B00110, B00110, B00000},
                                      {B10000, B00111, B00111, B00111, B00111, B00011},
                                      {B00000, B00000, B00000, B00000, B00000, B00000},
                                      {B00000, B00000, B00000, B00000, B00000, B00000},
                                      {B00000, B00000, B00000, B00000, B00000, B00000}};
                      
  const byte cube18 [5][6] PROGMEM = {{B01000, B00000, B00000, B00000, B00110, B00110},
                                      {B10000, B00111, B00111, B00111, B00111, B00111},
                                      {B00000, B00000, B00000, B00000, B00000, B00000},
                                      {B00000, B00000, B00000, B00000, B00000, B00000},
                                      {B00000, B00000, B00000, B00000, B00000, B00000}};
       
  const byte cube19 [5][6] PROGMEM = {{B01000, B00000, B00000, B00000, B01100, B01100},
                                      {B10000, B00111, B00111, B00111, B01111, B01111},
                                      {B00000, B00000, B00000, B00000, B00000, B00000},
                                      {B00000, B00000, B00000, B00000, B00000, B00000},
                                      {B00000, B00000, B00000, B00000, B00000, B00000}};
                      
  const byte cube20 [5][6] PROGMEM = {{B01000, B00000, B00000, B01100, B01100, B00000},
                                      {B10000, B00111, B00111, B01111, B01111, B01111},
                                      {B00000, B00000, B00000, B00000, B00000, B00000},
                                      {B00000, B00000, B00000, B00000, B00000, B00000},
                                      {B00000, B00000, B00000, B00000, B00000, B00000}};
                      
  const byte cube21 [5][6] PROGMEM = {{B01000, B00000, B01100, B01100, B00000, B00000},
                                      {B10000, B00111, B01111, B01111, B01111, B01111},
                                      {B00000, B00000, B00000, B00000, B00000, B00000},
                                      {B00000, B00000, B00000, B00000, B00000, B00000},
                                      {B00000, B00000, B00000, B00000, B00000, B00000}};
                      
  const byte cube22 [5][6] PROGMEM = {{B01000, B01100, B01100, B00000, B00000, B00000},
                                      {B10000, B01111, B01111, B01111, B01111, B01111},
                                      {B00000, B00000, B00000, B00000, B00000, B00000},
                                      {B00000, B00000, B00000, B00000, B00000, B00000},
                                      {B00000, B00000, B00000, B00000, B00000, B00000}};
                      
  const byte cube23 [5][6] PROGMEM = {{B01000, B11000, B11000, B00000, B00000, B00000},
                                      {B10000, B11111, B11111, B01111, B01111, B01111},
                                      {B00000, B00000, B00000, B00000, B00000, B00000},
                                      {B00000, B00000, B00000, B00000, B00000, B00000},
                                      {B00000, B00000, B00000, B00000, B00000, B00000}};
                      
  const byte cube24 [5][6] PROGMEM = {{B01000, B00000, B11000, B11000, B00000, B00000},
                                      {B10000, B11111, B11111, B11111, B01111, B01111},
                                      {B00000, B00000, B00000, B00000, B00000, B00000},
                                      {B00000, B00000, B00000, B00000, B00000, B00000},
                                      {B00000, B00000, B00000, B00000, B00000, B00000}};
                      
  const byte cube25 [5][6] PROGMEM = {{B01000, B00000, B00000, B11000, B11000, B00000},
                                      {B10000, B11111, B11111, B11111, B11111, B01111},
                                      {B00000, B00000, B00000, B00000, B00000, B00000},
                                      {B00000, B00000, B00000, B00000, B00000, B00000},
                                      {B00000, B00000, B00000, B00000, B00000, B00000}};
                      
  const byte cube26 [5][6]PROGMEM =  {{B01000, B00000, B00000, B00000, B11000, B11000},
                                      {B10000, B11111, B11111, B11111, B11111, B11111},
                                      {B00000, B00000, B00000, B00000, B00000, B00000},
                                      {B00000, B00000, B00000, B00000, B00000, B00000},
                                      {B00000, B00000, B00000, B00000, B00000, B00000}};
                                      
  const byte cube27 [5][6] PROGMEM = {{B10000, B11111, B11111, B11111, B11111, B11111},
                                      {B01000, B11111, B11111, B11111, B11111, B11111},
                                      {B00000, B00000, B00000, B00000, B00000, B00000},
                                      {B00000, B00000, B00000, B00000, B00000, B00000},
                                      {B00000, B00000, B00000, B00000, B00000, B00000}};
                      
  const byte cube28 [5][6]PROGMEM =  {{B10000, B11111, B11111, B11111, B11111, B11111},
                                      {B01000, B11111, B11111, B11111, B11111, B11111},
                                      {B00100, B11111, B11111, B11111, B11111, B11111},
                                      {B00000, B00000, B00000, B00000, B00000, B00000},
                                      {B00000, B00000, B00000, B00000, B00000, B00000}};
                      
  const byte cube29 [5][6] PROGMEM=  {{B10000, B11111, B11111, B11111, B11111, B11111},
                                      {B01000, B11111, B11111, B11111, B11111, B11111},
                                      {B00100, B11111, B11111, B11111, B11111, B11111},
                                      {B00010, B11111, B11111, B11111, B11111, B11111},
                                      {B00000, B00000, B00000, B00000, B00000, B00000}};
                                      
  const byte cube30 [5][6]PROGMEM =  {{B10000, B11111, B11111, B11111, B11111, B11111},
                                      {B01000, B11111, B11111, B11111, B11111, B11111},
                                      {B00100, B11111, B11111, B11111, B11111, B11111},
                                      {B00010, B11111, B11111, B11111, B11111, B11111},
                                      {B00001, B11111, B11111, B11111, B11111, B11111}};

  shift_out(cube1, 100);
  shift_out(cube2, 100);
  shift_out(cube3, 100);
  shift_out(cube4, 100);
  shift_out(cube5, 100);
  shift_out(cube6, 100);
  shift_out(cube7, 100);
  shift_out(cube8, 100);
  shift_out(cube9, 100);
  shift_out(cube10, 100); 
  shift_out(cube11, 100);
  shift_out(cube12, 100);
  shift_out(cube13, 100);
  shift_out(cube14, 100);
  shift_out(cube15, 100);
  shift_out(cube16, 100);
  shift_out(cube17, 100);
  shift_out(cube18, 100);
  shift_out(cube19, 100);
  shift_out(cube20, 100);
  shift_out(cube21, 100);
  shift_out(cube22, 100);
  shift_out(cube23, 100);
  shift_out(cube24, 100);
  shift_out(cube25, 100);
  shift_out(cube26, 100);
  shift_out(cube27, 100);
  shift_out(cube28, 100);
  shift_out(cube29, 100);
  shift_out(cube30, 100);
  ClearOut();                    
}


void ClearOut(){
  digitalWrite(latchPin, LOW);
  for(int b=0; b<6; b++){
    SPI.transfer(B00000);
  }
  digitalWrite(latchPin, HIGH);
  digitalWrite(latchPin, LOW);
}

void shift_out(const byte  animation[5][6], int animationTime){
  for(int i=0; i<(animationTime*0.2);i++){ 
    for(int a=0; a<5; a++){
      digitalWrite(latchPin, LOW);
      for(int b=0; b<6; b++){
        SPI.transfer(animation[a][b]);
      }
      digitalWrite(latchPin, HIGH);
      delay(1);
    }
  }
}

 

valera678
Offline
Зарегистрирован: 04.11.2016

подробности компиляции

C:\Program Files\Arduino\hardware\tools\avr\bin\avr-ar rcs C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\build3024078175412661099.tmp\core.a C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\build3024078175412661099.tmp\HardwareSerial.cpp.o 
C:\Program Files\Arduino\hardware\tools\avr\bin\avr-ar rcs C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\build3024078175412661099.tmp\core.a C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\build3024078175412661099.tmp\HID.cpp.o 
C:\Program Files\Arduino\hardware\tools\avr\bin\avr-ar rcs C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\build3024078175412661099.tmp\core.a C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\build3024078175412661099.tmp\IPAddress.cpp.o 
C:\Program Files\Arduino\hardware\tools\avr\bin\avr-ar rcs C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\build3024078175412661099.tmp\core.a C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\build3024078175412661099.tmp\main.cpp.o 
C:\Program Files\Arduino\hardware\tools\avr\bin\avr-ar rcs C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\build3024078175412661099.tmp\core.a C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\build3024078175412661099.tmp\new.cpp.o 
C:\Program Files\Arduino\hardware\tools\avr\bin\avr-ar rcs C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\build3024078175412661099.tmp\core.a C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\build3024078175412661099.tmp\Print.cpp.o 
C:\Program Files\Arduino\hardware\tools\avr\bin\avr-ar rcs C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\build3024078175412661099.tmp\core.a C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\build3024078175412661099.tmp\Stream.cpp.o 
C:\Program Files\Arduino\hardware\tools\avr\bin\avr-ar rcs C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\build3024078175412661099.tmp\core.a C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\build3024078175412661099.tmp\Tone.cpp.o 
C:\Program Files\Arduino\hardware\tools\avr\bin\avr-ar rcs C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\build3024078175412661099.tmp\core.a C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\build3024078175412661099.tmp\USBCore.cpp.o 
C:\Program Files\Arduino\hardware\tools\avr\bin\avr-ar rcs C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\build3024078175412661099.tmp\core.a C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\build3024078175412661099.tmp\WMath.cpp.o 
C:\Program Files\Arduino\hardware\tools\avr\bin\avr-ar rcs C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\build3024078175412661099.tmp\core.a C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\build3024078175412661099.tmp\WString.cpp.o 
C:\Program Files\Arduino\hardware\tools\avr\bin\avr-gcc -Os -Wl,--gc-sections -mmcu=atmega328p -o C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\build3024078175412661099.tmp\cube5v2.cpp.elf C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\build3024078175412661099.tmp\cube5v2.cpp.o C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\build3024078175412661099.tmp\SPI\SPI.cpp.o C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\build3024078175412661099.tmp\core.a -LC:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\build3024078175412661099.tmp -lm 
C:\Program Files\Arduino\hardware\tools\avr\bin\avr-objcopy -O ihex -j .eeprom --set-section-flags=.eeprom=alloc,load --no-change-warnings --change-section-lma .eeprom=0 C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\build3024078175412661099.tmp\cube5v2.cpp.elf C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\build3024078175412661099.tmp\cube5v2.cpp.eep 
C:\Program Files\Arduino\hardware\tools\avr\bin\avr-objcopy -O ihex -R .eeprom C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\build3024078175412661099.tmp\cube5v2.cpp.elf C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\build3024078175412661099.tmp\cube5v2.cpp.hex 
Размер скетча в двоичном коде: 5 598 байт (из 32 256 байт максимум

 

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Нет, во флеше еще вагон места.

А с массивами меньшего размера этот код работал? Или он работал только пока Вы не переделали на PROGMEM? 

Я что-то не нашел места, где бы Вы читали из PROGMEM.

Ну и заодно уж: раз печатаете диагностику скетча, который компилируется, но не паботает, не забывайте указывать также размер занятой оперативной памяти.

 

valera678
Offline
Зарегистрирован: 04.11.2016

andriano пишет:

А с массивами меньшего размера этот код работал? 

Да ,работал. Он  с выложенным работает. а вот если раскоментировать строки с 76-80 и запустить ниже shift_out(cubeD4, p+100); то виснет.

 

valera678
Offline
Зарегистрирован: 04.11.2016

andriano пишет:

 Или он работал только пока Вы не переделали на PROGMEM? 

да я  на прогмем не переделывал,только массивы добавлял. 

http://www.instructables.com/id/LED-CUBE-Arduino-5x5x5/  статья здесь

оригинал скетча здесь https://cdn.instructables.com/ORIG/FYH/IGK4/HVW4NDXV/FYHIGK4HVW4NDXV.ino

valera678
Offline
Зарегистрирован: 04.11.2016

Почему из темы удален мой комментарий от 11марта ?

valera678
Offline
Зарегистрирован: 04.11.2016

Кто нибудь хочет подсказать как решить проблему нехватки памяти МК,например читать массивы с sd карты? Или вы можете только дерьмом плеваться?

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

valera678 пишет:
Кто нибудь хочет подсказать как решить проблему нехватки памяти МК,например читать массивы с sd карты?

Ты сам ответил на свой вопрос: например, читать массивы с SD-карты. В стандартной поставке есть примеры чтения/записи в файл.

ven-til
Offline
Зарегистрирован: 13.02.2018

Ну тут все почесноку. Перестань сам плеваться дерьмом, ответ №2 внимательней прочитай и укажи недостающие данные.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

valera678 пишет:
Кто нибудь хочет подсказать как решить проблему нехватки памяти МК,например читать массивы с sd карты? Или вы можете только дерьмом плеваться?

Увы :((((

Мы тут такие :(