Arrays, como hacer un array y poderlo enviar via GPRS

Hola alguien me podia yudar con mi codigo e esta batallando mucho con este codigo ya gracias a este foro eh resuelto algunas duda y eh avanzado, ahora pido otra ayuda quiero enviar un array via gprs cabe mencionar que el array es de tama;o 16 y me arroja combinaciones alaertorias de 1234567890*#ABCD esto depende la se;al resivida por eso es aletoria y necesito hacer un array con esas conbinaciones aleatoria para poder enviarla via gprs, alguien me podria ayudar

#define IRQ_PIN  2   // Puerto Del MCU, Conectado SID (Presencia De datos )
#define D0_PIN   3   // Puerto Recibe dato Binario 0
#define D1_PIN   4   // Puerto Recibe dato Binario 1
#define D2_PIN   5   // Puerto Recibe dato Binario 2
#define D3_PIN   6   // Puerto Recibe dato Binario 3

byte irq_state;
char key[16];
int indice=0;

void setup()
{
 // Configura El Puerto Serial 9600,8,N,1
 Serial.begin(9600);
 
 // Pone Los Puerto En Modo De Lectura
 pinMode(IRQ_PIN, INPUT); 
 pinMode(D0_PIN, INPUT); 
 pinMode(D1_PIN, INPUT); 
 pinMode(D2_PIN, INPUT); 
 pinMode(D3_PIN, INPUT); 
   
}  

void loop()
{
 // Espera a Que Haya Una Senal o Tono 
 irq_state = digitalRead(IRQ_PIN);
 
 if ( irq_state == 1 )
    {

      Serial.print("");
      key[indice] = read_codigo(); // Lee El Codigo DTMF
      Serial.print(key); // Imprime La Tecla recibida
      if (indice < 15) {
      	indice++;
      } else {
      	indice=0;
      	Serial.print("Se han recibido 16 tonos, que son: ");
      	for (int i=0; i<16; i++)
      		Serial.print(key[i]);
      }
      delay(500);          // Pausa Para Sincronizar La Senal o IRQ
    }
}
/*-------------------------------------------------------------*/
byte read_codigo()
{
 byte dato;           // Variable Que Tiene El Valor byte De La tecla
 char key;            // Variable Que Tiene El Valor Char  tecla


 byte D0,D1,D2,D3;    // Variable Donde Se Lee el Estado
 
 // Lee Los Estado Logico o Binario Del MT8870 (1 o 0 , ON o OFF )
 D0 = digitalRead(D0_PIN);
 D1 = digitalRead(D1_PIN);
 D2 = digitalRead(D2_PIN);
 D3 = digitalRead(D3_PIN);
 
 // Covierte De Binario A BYTE o ENTERO
 // Escribe Los BITS En Una Variable dato
 bitWrite(dato,0,D0);
 bitWrite(dato,1,D1);
 bitWrite(dato,2,D2);
 bitWrite(dato,3,D3);

// Convierte La Tecla a CHAR
 if ( dato == 1  ) key = '1';
 if ( dato == 2  ) key = '2';
 if ( dato == 3  ) key = '3';
 if ( dato == 4  ) key = '4';
 if ( dato == 5  ) key = '5';
 if ( dato == 6  ) key = '6';
 if ( dato == 7  ) key = '7';
 if ( dato == 8  ) key = '8';
 if ( dato == 9  ) key = '9';
 
 if ( dato == 10 ) key = '0';
 if ( dato == 11 ) key = '*';
 if ( dato == 12 ) key = '#';
 if ( dato == 13 ) key = 'A';
 if ( dato == 14 ) key = 'B';
 if ( dato == 15 ) key = 'C';
 if ( dato == 0  ) key = 'D';
 

 
return key; 
}

Esto es lo que llevo hasta ahora

AbelKarim. Por favor, respeta las normas del foro y no crees nuevos hilos para preguntar sobre lo mismo.
Te respondo en tu hilo inicial.