Nextion TFT Keypad problem

Hallo zusammen,

ich habe ein Keypad auf einem Nextion TFT erstellt und möchte die eingegeben variablen der Reihe nach in ein char array speichern, das array in eine float variable umwandeln und nach jeder Zeicheneingabe die variable zum TFT senden.
Leider funktioniert das mit dem Code den ich geschrieben habe nicht. Wäre schön wenn mir jemand helfen könnte?

Vielen Dank im Voraus

Hier ein Auszug aus meinem Code:

void b1PopCallback(void *ptr)  // Release event for button b1
{
  change_array(1);
}

void b2PopCallback(void *ptr)  // Release event for button b2
{
  change_array(2);
}

void b3PopCallback(void *ptr)  // Release event for button b3
{
  change_array(3);
}

void b4PopCallback(void *ptr)  // Release event for button b4
{
  change_array(4);
}

void b5PopCallback(void *ptr)  // Release event for button b5
{
  change_array(5);
}

void b6PopCallback(void *ptr)  // Release event for button b6
{
  change_array(6);
}

void b7PopCallback(void *ptr)  // Release event for button b7
{
  change_array(7);
}

void b8PopCallback(void *ptr)  // Release event for button b8
{
  change_array(8);
}

void b9PopCallback(void *ptr)  // Release event for button b9
{
  change_array(9);
}

void b0PopCallback(void *ptr)  // Release event for button b0
{
  change_array(0);
}

void b10PopCallback(void *ptr)  // Release event for button komma
{
  change_array(11);
}


void b11PopCallback(void *ptr)  //Release event for button back
{
  array_number--;
  if (array_number <= 0) {      //if array is zero, set array_init to zero
    array_init = 0;
    array_number = 0;
  }else if (array_number >= 5){
    array_number = 5;
  }
}

void save_varPopCallback(void *ptr)  // Release event for button save
{
  if (Mode_value_setup == 1) {  //set Travel
    travel_distance = number_input;
    travel_to_distance();
  } else if (Mode_value_setup == 2) {  //calculate
     measured_distance = number_input;
     calculate_steps();
  } else if (Mode_value_setup == 3) {  //set steps
     mm_to_travel  = number_input;
  } else if (Mode_value_setup == 4) {  //bed focal length
     zero_point_to_focus_lens = number_input;
  } else if (Mode_value_setup == 5) {   //focal length
     focal_length = number_input;
  }
}


void change_array(int x) {            //function to save number to array => convert to float => send to nextion
  if (array_init == 0) {
    array_init = 1;
  } else {                           //if array is not zero go to next number
    array_number++;
  }
  
  if (x == 11) {
    array_input[array_number] = ".";          /
  } else {
    array_input[array_number] = x;
  }

  number_input = atof (array_input);   //array to float
  
  Serial.print("number_var.txt=\"");   //print values on screen after each number entered
  Serial.print(number_input);
  Serial.write('"');
  Serial.write(0xFF);
  Serial.write(0xFF);
  Serial.write(0xFF);
}

Was sollen wir mit den Fragmenten anfangen?
"Funktioniert nicht" ist keine brauchbare Fehlerbeschreibung.
Was soll change_array sein?

Gruß Tommy

Leider kann ich den ganzen Code nur als Anhang anfügen da er über 9000 Zeichen hat. Die Funktion change_array steht im Auszug den ich zuvor gepostet habe

k40_nextion_clean.ino (44.3 KB)

Du solltest das Nextion über SoftwareSeriell betreiben, damit Du Serial zum Debuggen frei hast.
Dann könntest Du Dir Dein array_input mal ausgeben lassen.

atof verlangt einen 0-terminierten C-string (char-Array). Infos zu Zeichenketten in C/C++ hier.

Gruß Tommy