no hay suficiente espacio

hola quiero hacer una pantalla led de 50pixel de ancho por 15 pixel de alto, de echo ya la tengo armada,,, pero en el codigo solo me acepta 650 led y cuando pongo mas me pone esto

El Sketch usa 708 bytes (2%) del espacio de almacenamiento de programa. El máximo es 32256 bytes.

Las variables Globales usan 2114 bytes (103%) de la memoria dinámica, dejando -66 bytes para las variables locales. El máximo es 2048 bytes.
No hay suficiente memoria, ver http://www.arduino.cc/en/Guide/Troubleshooting#size para obtener consejos sobre cómo reducir su huella

.

este es el codigo
aqui cambio la cantidad #define NUMBER_OF_PIXELS 650

//##############################################################################
//##############################################################################
//                                                                             #
// Glediator to WS2812 pixel converter                                         #
// by R. Heller                                                                #
// V 1.0 - 07.01.2014                                                          #            
// wwww.SolderLab.de                                                           #
//                                                                             #
// Receives serial data in Glediator protocol format @ 1 MBit/s                #
// and distributes it to a connectect chain of WS2812 pixels                   #
//                                                                             #
// Adjust the correct DATA PIN and the correct NUMBER OF PIXELS you are using  # 
// in the definitions section below before uploading this sketch to your       #
// Arduino device.                                                             #
//                                                                             #
// Maxiumim number of supported pixeles is 512 !!!                             #
//                                                                             #
// In the Glediator software set output mode to "Glediator_Protocol",          #
// color order to "GRB" and baud rate to "1000000"                             #
//                                                                             #
//##############################################################################
//##############################################################################


//##############################################################################
//                                                                             #
// Definitions --> Make changes ONLY HERE                                      #
//                                                                             #
// To find out the correct port, ddr and pin name when you just know the       #
// Arduino's digital pin number just google for "Arduino pin mapping".         #
// In the present example digital Pin 6 is used which corresponds to "PORTD",  #
// "DDRD" and "6", respectively.                                               #
//                                                                             #
//##############################################################################

#define DATA_PORT          PORTD
#define DATA_DDR           DDRD 
#define DATA_PIN           6 
#define NUMBER_OF_PIXELS   650



//##############################################################################
//                                                                             #
// Variables                                                                   #
//                                                                             #
//##############################################################################

unsigned char display_buffer[NUMBER_OF_PIXELS * 3];
static unsigned char *ptr;
static unsigned int pos = 0;

volatile unsigned char go = 0;


//##############################################################################
//                                                                             #
// Setup                                                                       #
//                                                                             #
//##############################################################################

void setup()
{
  // Set data pin as output
  DATA_DDR |= (1 << DATA_PIN);
  
  // Initialize UART
  UCSR0A |= (1<<U2X0);                                
  UCSR0B |= (1<<RXEN0)  | (1<<TXEN0) | (1<<RXCIE0);   
  UCSR0C |= (1<<UCSZ01) | (1<<UCSZ00)             ; 
  UBRR0H = 0;
  UBRR0L = 1; //Baud Rate 1 MBit (at F_CPU = 16MHz)
  
  ptr=display_buffer;
  
  //Enable global interrupts
  sei();
}


//##############################################################################
//                                                                             #
// Main loop                                                                   #
//                                                                             #
//##############################################################################

void loop()
{   
  if (go==1) 
  {
    cli();
    ws2812_sendarray(display_buffer, NUMBER_OF_PIXELS * 3); 
    sei();
    go=0;
  }
}


//##############################################################################
//                                                                             #
// UART-Interrupt-Prozedur (called every time one byte is compeltely received) #
//                                                                             #
//##############################################################################

ISR(USART_RX_vect) 
{
  unsigned char b;
  b=UDR0;
  
  if (b == 1)  {pos=0; ptr=display_buffer; return;}    
  if (pos == (NUMBER_OF_PIXELS*3)) {} else {*ptr=b; ptr++; pos++;}  
  if (pos == ((NUMBER_OF_PIXELS*3)-1)) {go=1;}
}


//##############################################################################
//                                                                             #
// WS2812 output routine                                                       #
// Extracted from a ligh weight WS2812 lib by Tim (cpldcpu@gmail.com)          #
// Found on wwww.microcontroller.net                                           #
// Requires F_CPU = 16MHz                                                      #
//                                                                             #
//##############################################################################

void ws2812_sendarray(uint8_t *data,uint16_t datlen)
{
  uint8_t curbyte,ctr,masklo;
  uint8_t maskhi = _BV(DATA_PIN);
  masklo =~ maskhi & DATA_PORT;
  maskhi |= DATA_PORT;

  while (datlen--) 
  {
    curbyte = *data++;

    asm volatile
    (
      " ldi %0,8 \n\t" // 0
      "loop%=:out %2, %3 \n\t" // 1
      "lsl %1 \n\t" // 2
      "dec %0 \n\t" // 3
      " rjmp .+0 \n\t" // 5
      " brcs .+2 \n\t" // 6l / 7h
      " out %2,%4 \n\t" // 7l / -
      " rjmp .+0 \n\t" // 9
      " nop \n\t" // 10
      " out %2,%4 \n\t" // 11
      " breq end%= \n\t" // 12      nt. 13 taken
      " rjmp .+0 \n\t" // 14
      " rjmp .+0 \n\t" // 16
      " rjmp .+0 \n\t" // 18
      " rjmp loop%= \n\t" // 20
      "end%=: \n\t" 
      : "=&d" (ctr)
      : "r" (curbyte), "I" (_SFR_IO_ADDR(DATA_PORT)), "r" (maskhi), "r" (masklo)
    );
  }

}


//##############################################################################
//                                                                             #
// End of program                                                              #
//                                                                             #
//##############################################################################

El arduino Uno tiene tan solo 2048 bytes de RAM.

En tu código defines:

unsigned char display_buffer[NUMBER_OF_PIXELS * 3];

NUMBER_OF_PIXELS son 650 y multiplicado por 3 tienes 1950 bytes de RAM consumidos para empezar. Te queda poco para variables locales y otras cosas. Si aumentas esos 650, aumentarás el tamaño del array.

la solución es aumentar la RAM y para ello debes recurrir a otro micro: mega, due, etc.

perfecto muchas gracias... puede ser que el arduino mega tenga 253952 de ram q

darioreyes:
puede ser que el arduino mega tenga 253952 de ram

Corrección: tiene 8192 bytes (8 KB) de RAM

bueno me acaba de llegar el arduino mega 2560. le he subido el codigo lo mas bien, pero cuando pongo las toras led no pasa nada, no prenden, y en cambio vuelvo a poner el arduino uno y funciona, que estare haciendo mal, el codigo lo subi igual que cuando lo subo al arduino uno, nomas que en placa y procesador pongo el mega 2560

Hola!
Ten cuidado, algunos pines tienen funciones diferentes en uno y otro micro.
¿Que pines estás usando?

Saludos

ya he probado todos los pines, y nada, esta es la imagen para el circuito que uso..

siempre el pin 6 era el que traia el codigo, pero despues fui probando del 2 al 12