PWM - Peltier working code

It's easyer said than done that way.

What is? You said that the String part was simply to strip out the decimal point from the string. And that's what I see happening.

 char tBuffer[16];
 stringOne =  dtostrf(temp,8,2,tBuffer);
 
 if (value == 1) // 999.9 or -99.9 numbers
  stringOne = stringOne.substring(2,5)+stringOne.substring(6,7); 
 else if (value == 3) // 9999 or -999 numbers
  stringOne = stringOne.substring(2,6);
 else // 99.99 or -9.99 numbers
  stringOne = stringOne.substring(3,5)+stringOne.substring(6,8);

You can copy the elements of tBuffer to another char array array the same way.

char cBuffer[16];
int j=0;
if (value == 1) // 999.9 or -99.9 numbers
{
   for(int i=2; i<5; i++)
   {
      cBuffer[j++] = tBuffer[i];
   }
   cBuffer[j++] = tBuffer[6];
   cBuffer[j] = '\0';
}
// The other cases work exactly the same

Now, you have a static array of characters instead of dynamic String with all it's overhead and issues.

If the downstream use of the data requires a String object, I wouldn't be using whatever library REQUIRES a String.