Problemas con SoftwareSerial

este codigo funciona perfectamente pero si descomento esto "serialgps.begin(9600);" para que se ejecute el codigo deja de funcionar y enviar el SMS... no se que más mirar ya ¿alquien puede ayudarme?

#include <SoftwareSerial.h>
#include <TinyGPS.h>//incluimos TinyGPS

TinyGPS gps;//Declaramos el objeto gps
SoftwareSerial serialgps(11,10);//Declaramos el pin 11 Tx y 10 Rx
SoftwareSerial serialGSM(8,7); // Amarillo 8 - Azul 7

//Declaramos la variables para la obtención de 
      //VARIABLES PARA EL MODULO GMS0

      String inGSM; //Almacenar la informacion leida del modulo gsm
      String numList[]={"949875747","627639733"}; //Numeros autorizados
      boolean enviado=false; //para saber si hemos enviado sms con coordenadas
      double ttl=0; //Tiempo de vida

    boolean encontrado;
    unsigned long chars;
unsigned short sentences, failed_checksum;
        float latitude, longitude;
   
void setup() {
  
  
  serialGSM.begin(9600);
  Serial.begin(115200);
  delay(1000);
  
  serialGSM.print("AT+CMGF=1\r"); // Configuración del módulo GSM en modo texto.
  delay(100);
  
  Serial.print("MODULO GSM INICIADO \r");

/*  serialgps.begin(9600);//Iniciamos el puerto serie del gps
  delay(1000);*/
  

  enviado=false;
  encontrado=false;
  
}//Fin Setup

//Enviamos SMS con la coordenadas
void SendSMS() {  // Enviamos coordenadas por sms

 /* Serial.print("Latitud/Longitud: "); 
  Serial.print(latitude,5); 
  Serial.print(", "); 
  Serial.print(longitude,5);
*/
     
      serialGSM.println("AT+CMGS=\"627639733\"");  //Numero al que vamos a enviar el mensaje
      delay(1000);
      
      serialGSM.println("prueba envio SMS");  // Texto del SMS
      delay(100);
      
      serialGSM.println((char)26); //Comando de finalización 
      delay(100);
      
      serialGSM.println();
      delay(15000);  // Esperamos un tiempo para que envíe el SMS
      
      Serial.println("SMS enviado");
      
      enviado=true;
      encontrado=false;
}

void leer_gps()
{
 
   while((serialgps.available()) && (encontrado==false)) {
        int c = serialgps.read(); 
        if(gps.encode(c)) 
        {

        gps.f_get_position(&latitude, &longitude);
         gps.stats(&chars, &sentences, &failed_checksum);
        encontrado=true;
        }
}
}

void loop()  {

  bool finGSM = false;
  inGSM = "";
  ttl++;
  int c ;

  // leer_gps();
  //Leer eventos en modulo gs
  while (serialGSM.available()) {

     delay(10);
     inGSM += (char)serialGSM.read(); 
     finGSM = true;
  }  //Fin while
  
  if (finGSM)
      Serial.print(inGSM);

  //Si entra llamada
  if (inGSM.indexOf("RING")>-1)   {
      delay(100);
      serialGSM.print("ATH\r"); 
      Serial.print("LLAMADA COLGADA"); 
      delay(1000);
      SendSMS();


  }//Fin if

}//fin loop

Mirate este post:

arduino mega y sim900

Si bien es cierto la libreria SoftwareSerial.h permite la creación de múltiples puertos serie "virtuales", solo uno puede recibir datos a la vez.

Te recomiendo cambiarte a la librería AltSoftSerial.

Gracias creo que es algo de los puertos ya que el codigo por separada de cada uno de ellos funciona perfectamente pero al juntarlo es cuando deja de funcionar. probare la librería AltSoftSerial aunque creo que con arduino uno no funciona muy bien porque no funciona el codigo seguiré investigando. Gracias por los aportes.

Usa un MEGA no pierdas tiempo con soluciones virtuales.

Ya hubiese sido mejor opción la verdad. compre el uno y con varios módulos tengo problemas ya que el codigo aislado funciona pero al unirlo y conectar todo es cuando deja de funcionar... ya era por orgullo pero vamos estoy empezando a desistir. Gracias por los aportes