enviar sms - numero como variavel

Não fizeste referência se o programa funciona quando não usas o número de telefone como uma variável. Eu assumo que sim, mas não faço ideia.

Outra coisa, este código que deixaste tem coisas estranhas.

Para que serve esta linha:

mySerial.print("\r"); ??

Porquê os delays entre envios de dados para o módulo GSM? Já apareceram aqui vários exemplos sem delays que aparentemente estavam a funcionar.

Finalmente, não me parece correcto que coloques o código a enviar SMSs sem condições no loop... de 4 em 4 segundos o módulo GSM vai tentar mandar SMSs... já viste se tens saldo no cartão? Coloca algo como:

if (Serial.available() > 0) {
    if (Serial.read() == 'S') {
        //Código para envio de mensagens...
    }
}

Assim sempre que enviares um S pela Serial, o módulo manda a SMS. Muito mais controlado e simples.

Ahh e experimenta o programa depois de teres desligado tudo e voltado a ligar.