Error: PulseSensorPlayground - TinyGPS

Hola tengo problemas, uso arduino uno conectado a gps y un PulseSensor quiero mostrar los datos de ambos pero al iniciar el PulseSensor ya no funciona el gps, si no inicio (pulsesensor.begin()) el pulse sensor entonces funciona el gps, ayuda no se que mas hacer ya probé asta hilos y nada, aquí mi código

Hello I have problems, I use arduino one connected to gps and a PulseSensor I want to show the data of both but when starting the PulseSensor the gps no longer works, if i not start (pulsesensor.begin ()) the PulseSensor then the gps works, help I do not know what else to do, I tried until thread and nothing, here my code

lib:GitHub - WorldFamousElectronics/PulseSensorPlayground: A PulseSensor library (for Arduino) that collects our most popular projects in one place.


#include <SoftwareSerial.h>
#include <TinyGPS.h> // libreria para el GPS NEO-6M

#define USE_ARDUINO_INTERRUPTS true // Set-up low-level interrupts for most acurate BPM math.
#include <PulseSensorPlayground.h> // Includes the PulseSensorPlayground Library.
PulseSensorPlayground pulseSensor; // Crea una instancia del objeto PulseSensorPlayground llamado “pulseSensor”

// GPS NEO-6M
SoftwareSerial GPSserial(3, 4); // RX, TX
TinyGPS tinyGPS;

// Variables Sensor de pulso
const int PulseWire = 0; // PulseSensor PURPLE WIRE conectado a ANALOG PIN 0
const int LED13 = 13; // El led on-board Arduino, cerca del PIN 13.
int Threshold = 550; // Determine qué señal debe “contar como un beat (tope)” y cuáles ignorar.
// Usa el “Gettting Started Project” para ajustar el valor del umbral más allá de la configuración predeterminada.
// De lo contrario, deje el valor predeterminado “550”.

void setup() {
// Iniciar velocidades
Serial.begin(19200);

// Configura el objeto PulseSensor, asignándole nuestras variables.
pulseSensor.analogInput(PulseWire);
pulseSensor.blinkOnPulse(LED13); //auto-magically parpadea el LED Arduino con heartbeat.
pulseSensor.setThreshold(Threshold);

pulseSensor.begin();//IF I COMMENT IT, IT WORKS - SI LO COMENTO FUNCIONA

GPSserial.begin(9600);

Serial.println(“fin setup”);
}

void loop() {
// put your main code here, to run repeatedly:
//Serial.println(“loop”);
enviarBPMserial();
enviarGPSserial();
}

void enviarBPMserial(){
GPSserial.begin(9600);
int myBPM = pulseSensor.getBeatsPerMinute(); // Llama a la funcion de nuestro objeto pulseSensor que retorna BPM como un “int”.
// “myBPM” obtiene el valor BPM.

if (pulseSensor.sawStartOfBeat()) { // Constantemente comprueba si “un beat sucedio”.
Serial.println(":heart: Un HeartBeat ! "); // Si test es “true”, imprime un mensaje “Un heartbeat”.
Serial.print("BPM: "); // Imprime "BPM: "
Serial.println(myBPM); // Imprime el valor de myBPM.
}

delay(20); // Considerado buena practica en un sketch simple.
}

void enviarGPSserial(){
Serial.println(“entro”);
bool recebido = false;

while(!recebido){
while (GPSserial.available()) {
char cIn = GPSserial.read();
recebido = tinyGPS.encode(cIn);
}
}

if (recebido) {
Serial.println("----------------------------------------");

//Latitud y Longitud
long latitud, longitud;
unsigned long edadInfo;
tinyGPS.get_position(&latitud, &longitud, &edadInfo);

if (latitud != TinyGPS::GPS_INVALID_F_ANGLE) {
Serial.print("Latitud: ");
Serial.println(float(latitud) / 100000, 6);
}

if (longitud != TinyGPS::GPS_INVALID_F_ANGLE) {
Serial.print("Longitud: ");
Serial.println(float(longitud) / 100000, 6);
}

if (edadInfo != TinyGPS::GPS_INVALID_AGE) {
Serial.print("Edad de la informacion (ms): ");
Serial.println(edadInfo);
}

//Dia e Hora
int ano;
byte mes, dia, hora, minuto, segundo, centesima;
tinyGPS.crack_datetime(&ano, &mes, &dia, &hora, &minuto, &segundo, &centesima, &edadInfo);

Serial.print(“Data (GMT): “);
Serial.print(dia);
Serial.print(”/”);
Serial.print(mes);
Serial.print("/");
Serial.println(ano);

Serial.print(“Horario (GMT): “);
Serial.print(hora);
Serial.print(”:”);
Serial.print(minuto);
Serial.print(":");
Serial.print(segundo);
Serial.print(":");
Serial.println(centesima);

//altitud
float altitudGPS;
altitudGPS = tinyGPS.f_altitude();

if ((altitudGPS != TinyGPS::GPS_INVALID_ALTITUDE) && (altitudGPS != 1000000)) {
Serial.print("Altitude (cm): ");
Serial.println(altitudGPS);
}

//velocidade
float velocidad;
//velocidad = tinyGPS.speed(); //nós
velocidad = tinyGPS.f_speed_kmph(); //km/h
//velocidad = tinyGPS.f_speed_mph(); //milha/h
//velocidad = tinyGPS.f_speed_mps(); //milha/segundo

Serial.print("Velocidad (km/h): ");
Serial.println(velocidad, 2); //Conversão de Nós para Km/h

//sentido (em centesima de graus)
unsigned long sentido;
sentido = tinyGPS.course();

Serial.print("Sentido (grado): ");
Serial.println(float(sentido) / 100, 2);

//satelites e precision
unsigned short satelites;
unsigned long precision;
satelites = tinyGPS.satellites();
precision = tinyGPS.hdop();

if (satelites != TinyGPS::GPS_INVALID_SATELLITES) {
Serial.print("Satelites: ");
Serial.println(satelites);
}

if (precision != TinyGPS::GPS_INVALID_HDOP) {
Serial.print("Precision (centesimas de segundo): ");
Serial.println(precision);
}
}
}