Error de valores "inf" y "nan"

Aca veo un error en el código, algo que tu agregaste que deliberadamente alguien lo hizo para confundir.

// Cálculo de la media de la señal durante 2 segundos
for (CICLOS = 0; CICLOS <= 50; CICLOS++) {
     digitalWrite (LED_R, HIGH); // Encendido del LED rojo
     delayMicroseconds (10); // Espera para encendido completo del LED
     digitalWrite (INTERRUPTOR_R, HIGH); // Cierre del interruptor rojo
     delayMicroseconds (960); // Espera para estabilización de señal
     SENSOR_VALOR_R = analogRead (SENSOR_R); // Lectura del pin analógico del sensor rojo
     digitalWrite (INTERRUPTOR_R, LOW); // Apertura del interruptor rojo
     delayMicroseconds (10); // Espera para apertura completa del interruptor
     digitalWrite (LED_R, LOW); // Apagado del LED rojo
     delayMicroseconds (20);
     digitalWrite (LED_IR, HIGH); // Encendido del LED infrarrojo
     delayMicroseconds (10); // Espera para encendido completo del LED
     digitalWrite (INTERRUPTOR_IR, HIGH); // Cierre del interruptor infrarrojo
     delayMicroseconds (960); // Espera para estabilización de señal
     SENSOR_VALOR_IR = analogRead (SENSOR_IR); // Lectura del pin analógico del sensor infrarrojo
     digitalWrite (INTERRUPTOR_IR, LOW); // Apertura del interruptor infrarrojo
     delayMicroseconds (10); // Espera para apertura completa del interruptor
     digitalWrite (LED_IR, LOW); // Apagado del LED infrarrojo
     delayMicroseconds (20);
}

si miras este ciclo for empieza y termina sin hacer nada mas que entregarte las ultimas muestras a SENSOR_VALOR_R y a SENSOR_VALOR_IR

O sea no sirve para nada, no toma muestras, no calcula.
Por eso todo esta en 0.

Si miras ahora acá

ciclos = 0; // Se reinicia el contador de ciclos
  num_muestras = num_muestras+1; // Se coge una muestra cada 200 milisegundos
  // Los valores del pulso y de la saturación de oxígeno se calculan y se muestran cada 7 segundos
  if (num_muestras <= 70) {

se ve que se requiren 2x70 segundos para tener datos.
El 1er for dice demorar 2 segundos algo que dudo pero basado en eso, 2 x 70 muestras son 140 segundos o sea 140/60 = 2min 20 seg recién tendrías valores distintos de 0.