В чём ошибка в функции?

При выводе данных, на экране остаются их следы, поэтому я использую пробел, что бы затереть их.

Когда пишу так:

tft.setTextColor( ST7735_WHITE, ST7735_BLACK);                //цвет текста белый, цвет заливки текста чёрный
  char VOLTS_DISPLAY[7]; dtostrf(VOLTS, 5, 2, VOLTS_DISPLAY);   //Конвертируем показания в привычные глазу данные для дальнейшего вывода на экран
  char VOLTS_RESULT[12] = " "; strcat(VOLTS_RESULT, VOLTS_DISPLAY);            //Очищаем данные для планой анимации
  tft.drawRightString((VOLTS < 10 ? VOLTS_RESULT : VOLTS_DISPLAY), 138, 19, 6); //"Текст", положение по оси Х, положение по оси Y, размер шрифта

На экран монитора tft 1,8’ нормально выводятся данные, однако стоить мне использовать функцию, то на экран выводится кракозябра:

static char* DATA_DISPLAY(float DATA, int COUNT)
{
  char DATA_DISPLAY[8]; 
  dtostrf(DATA, COUNT, 2, DATA_DISPLAY);   //Конвертируем показания в привычные глазу данные для дальнейшего вывода на экран

  int LEN = strlen(DATA_DISPLAY);
  char DATA_RESULT[COUNT] = "";
  for(int i=0; i < COUNT - (LEN - 1); ++i)
    strcat(DATA_RESULT, " ");

  strcat(DATA_RESULT, DATA_DISPLAY);            //Очищаем данные для планой анимации
  
  return DATA_RESULT;
} 

  tft.drawRightString(DATA_DISPLAY(AMPS, 6), 110, 65, 4);

Что я не так делаю?

строка 3 - вас не смущает, что переменная имеет такое же имя, как и функция?

static char* DATA_DISPLAY_TEXT(float DATA, int COUNT)
{
  char DATA_DISPLAY[8]; 
  dtostrf(DATA, COUNT, 2, DATA_DISPLAY);   //Конвертируем показания в привычные глазу данные для дальнейшего вывода на экран

  int LEN = strlen(DATA_DISPLAY);
  char DATA_RESULT[COUNT] = "";
  for(int i=0; i < COUNT - (LEN - 1); ++i)
    strcat(DATA_RESULT, " ");

  strcat(DATA_RESULT, DATA_DISPLAY);            //Очищаем данные для планой анимации
  
  return DATA_RESULT;
} 

Изменил, не помогло, при чём если написать ,

Serial.write(DATA_RESULT)

внутри функции, то данные отображаются корректно, но на экране это какая-то фигня.

Существует только внутри функции и лежит на стеке !

То есть, мне её нужно объявить как глобальную? Я правильно понял?

Как вариант…

Спасибо большое за наводку, объявил переменную глобальной и заменил strcat на strcpy и всё заработало

код вдруг кому пригодится.

char DATA_RESULT[20];

static char* DATA_DISPLAY_TEXT(float DATA, int COUNT)
{
  char DATA_DISPLAY[8]; 
  dtostrf(DATA, COUNT, 2, DATA_DISPLAY);   //Конвертируем показания в привычные глазу данные для дальнейшего вывода на экран

  int LEN = strlen(DATA_DISPLAY);
  
  for(int i=0; i < COUNT - (LEN - 1); ++i)
  {
    strcpy(DATA_RESULT, " ");
  }
  strcat(DATA_RESULT, DATA_DISPLAY);            //Очищаем данные для планой анимации
  
  return DATA_RESULT;
}