Extraer datos de un case

Buenos días, tengo una duda de como se puede extraer un dato de un case de inicio tengo esto en el case

 case 19:
       TPP = 21;
       Serial.print("TPP = ");
        Serial.println(TPP);
       break;
case 20:
       TPP = 22;
       Serial.print("TPP = ");
        Serial.println(TPP);
       break;
............etc

Entonces lo que necesito es usar la variable TPP fuera de los casos para una operación,se que se puede poniendo la operación dentro de cada caso de esta forma:

 case 30:
       TPP = 7;
       Serial.print("TPP = ");
        Serial.println(TPP);
        SuperHead = (Temp -  TPP);
     Serial.print("SuperHerad = ");
        Serial.println(SuperHead);
       break;

el problema es que son 2500 casos los que ya tengo escritos y se me hace demasiado tedioso copiar y pegar en cada caso la operación.

Alguna manera de extraer el dato??

de antemano gracias por la atención.

what I need is to use the TPP variable outside of the cases

So what is stopping you ?

there are 2500 cases that I have already written

Then you are probably doing something wrong. How unique are the cases and is there any fixed relationship between the case value and the actions that you take ?

UKHeliBob:
Then you are probably doing something wrong. How unique are the cases and is there any fixed relationship between the case value and the actions that you take ?

Lo que pasa es que es una lectura de un sensor de presión que es de 0 a 500 psi entonces tenia que hacer una conversión pero no hay una relación matemática para esa conversión entonces se ingresan tablas de relación por ello los casos y son 2500 casos ya que son 5 tablas de 500 que ingrese.

Pero intente realizar la operación fuera de los casos y no me lee la variable TPP.
Solo se puede si es dentro del caso... pero me imagino que se tiene que poder sacara el dato.

Gracias por su atención

Hace falta ver todo el programa para responder algo.

Adjuntalo ya que se supone supera 9k

A falta de saber cómo es el código entero, me imagino que el códig será similar a esto:

switch ( variable )
{
  case 1: 
    tpp = x1;
    Serial.print("algo");
  case 2:
    tpp = x2;
    Serial.print("algo");
  case 3:
    tpp = x3;
    Serial.print("algo");
  
  // Aqui iran el resto.
  
  case 2500:
    tpp = x2500;
    Serial.print("algo");
  default: 
    ...
}

Prácticamente haces los mismo en todos los case. El uso de tablas implica generalmente el uso de arrays, así que veo un mal enfoque del problema.

En este caso el tamaño del array (tabla) será de 2500 posiciones, con lo que el tamaño excede la memoria RAM del Uno con lo que habría que guardar esta tabla en la memoria flash usando el modificador PROGMEM

Y tú código debería parecerse a esto:

#include <avr/pgmspace.h>

// La tabla será un array del tanaño de las variables.
// Si la creo de tamaño "int" ocupará 2 bytes, total del array 5000.
// Si los x no tienen un valor superior a 256 se podría usar un byte.
const int variableArray[2500] PROGMEM = { x1, x2, x3, ..., x2500 };

// código extra..

// en el loop...
// Luego cuando quiera acceder a la variable, la leo de la memoria flash
// es el valor del "case". 
tpp = prm_read_word_near(variableArray, variable);
Serial.print("algo");
// Y puedo trabajar con la variable tpp.

La ventaja de este código es que minimas el código a la mínima expresión, pero tienes que crear la tabla de conversión. La desventaja es que comes memoria flash, pero creo que un case te va a comer tambíen mucho mas.

Bueno por ahi iba mi respuesta tmb (similar a la de victorjam) pero a falta del código no quise adivinar.