problm reading flash memory using progmem

This sketch fetches an element in a stored array, via row and column, one element at a time, and prints it as L_element in the serial monitor. When I try to use flash memory, I am not able to access data in the array using progmem in the pgmspace.h library. I am using an Arduino UNO R3 and IDE 1.0.5
The sketch works when I use SRAM and declare the array as:

int Ledarray[28][18] = { array rows and cols}

The sketch does not workwhen I use
prog_int16_t Ledarray[28][18] PROGMEM = { array rows and cols}
or
int Ledarray[28][18] PROGMEM = { array rows and cols}

I found some tutorials on character arays and pointers in pgmspace.h but nothing on integers.
Any suggestions?

#include "pgmspace.h"
// using the PROGMEM attribute in your array declaration,
int num_row = 14;
int num_col = 18;
int row;
int col;
int L_element;
int Ledarray[28][18] PROGMEM = 
      {
    {01,01,31,41,51,61,71,81,22,10,11,12,13,14,15,16,17,01},
    {01,01,32,42,52,62,72,82,92,10,11,80,12,13,15,16,17,02},
    {01,01,33,10,10,10,33,00,00,00,11,12,80,13,15,16,17,03},
    {01,01,34,44,54,64,33,00,00,00,11,80,12,13,15,16,17,24},
    {01,01,35,45,55,65,33,00,00,00,10,10,77,15,16,17,11,25},
    {01,01,36,46,56,66,33,00,00,00,12,13,66,15,16,17,11,26},
    {01,01,37,47,57,67,77,87,97,90,11,12,13,77,15,16,17,27},
    {01,01,38,48,58,68,78,88,98,10,80,12,13,77,15,16,17,28},
    {01,01,39,49,59,69,79,89,99,10,11,10,13,99,15,16,17,29},
    {01,01,40,50,60,70,80,90,10,11,12,10,14,10,15,16,17,10},
    {01,01,41,51,61,71,81,91,11,11,12,11,10,10,15,16,17,11},
    {01,01,42,52,62,72,82,92,10,11,12,13,14,10,15,16,17,12},
    {01,01,43,53,63,73,83,93,10,11,12,13,14,88,15,16,17,13},
    {01,01,44,54,64,74,84,94,10,11,12,13,14,88,15,16,17,14}, 
    {31,41,31,41,51,61,71,81,22,10,11,12,13,14,15,16,17,15},
    {31,41,32,42,52,62,72,82,92,10,11,80,12,13,15,16,17,16},
    {31,41,33,10,10,10,00,00,00,00,00,12,80,13,15,16,17,17},
    {31,41,34,44,54,64,00,00,00,00,00,80,12,13,15,16,17,18},
    {31,41,35,45,55,65,00,00,00,00,00,10,10,77,15,16,17,19},
    {31,41,35,45,55,65,00,00,00,00,00,10,10,77,15,16,17,20},
    {33,10,37,47,57,67,00,00,00,00,00,12,13,77,15,16,17,21},
    {33,10,38,48,58,68,78,88,98,10,80,12,13,77,15,16,17,22},
    {33,10,39,49,59,69,79,89,99,10,11,10,13,99,15,16,17,23},
    {33,10,40,50,60,70,80,90,10,11,12,10,14,10,15,16,17,24},
    {33,10,41,51,61,71,81,91,11,11,12,11,10,10,15,16,17,25},
    {33,10,42,52,62,72,82,92,10,11,12,13,14,10,15,16,17,26},
    {33,10,43,53,63,73,83,93,10,11,12,13,14,88,15,16,17,27},
    {33,10,44,54,64,74,84,94,10,11,12,13,14,88,15,16,17,28}
    /*              */
          };
 void setup() 
    {
        int row=0;
        int col=0;
		Serial.begin(9600); // Sets up communication with the serial monitor
		Serial.print("start");
     }
void loop() 
      {
        for (row=0; row <  num_row; row++) 
         {
           for ( col=0; col< num_col; col++) 
              {
             Serial.print("col");Serial.println(col); delay (50);
                 int L_element = Ledarray[row][col];  
                   Serial.print("L_element =  ");Serial.println(L_element);
                  
             }       // end col loop
         }           //   end row col loop
      }

slim_array2.ino (2.5 KB)

1st, change the type of the array values from "int" to "byte":

byte Ledarray[28][18] PROGMEM = ...

That way you won't waste a huge amount of memory/flash. Then, once you use PROGMEM, you also need to read the bytes excplicitely:

byte L_element = pgm_read_byte(&Ledarray[row][col]);

Thanks, I will try that tomorrow