Problema con funcion

Lo siento, pense que asi lo complicaria menos...El codigo esta incompleto porque pense en hacerlo con funciones ya que igual no me cabe el programa al completo...

#include <Wire.h> 
#include <LiquidCrystal_I2C.h>
#include <Keypad.h>
#include <ctype.h>
#include <stdlib.h>
#include <stdio.h>


LiquidCrystal_I2C lcd(0x27,16,2);  // set the LCD address to 0x27 for a 16 chars and 2 line display


const byte ROWS = 4; //four rows
const byte COLS = 3; //three columns

byte rowPins[ROWS] ={ 2, 3, 4, 5}; //connect to the row pinouts of the keypad
byte colPins[COLS] = {6, 7, 8}; //connect to the column pinouts of the keypad

char numberKeys[ROWS][COLS] = {
    { '1','2','3' },
    { '4','5','6' },
    { '7','8','9' },
    { '*','0','#' }
};

boolean alpha = 1;   // Alterna entre teclado normal y el que se usa para moverse

int tempmax = 26;
int tempmin = 15;
int mini;
int maxi;

int variable_menu; //Para navegar entre las principañes opciones
int variable_submenu; //Para acceder a los diferentes niveles
int variable_cursor; //Para navegar en los niveles inferiores

// Create two new keypads, one is a number pad and the other is a letter pad.
Keypad numpad = Keypad( makeKeymap(numberKeys), rowPins, colPins, sizeof(rowPins), sizeof(colPins) );


void setup() {
  
    Serial.begin(9600);
    lcd.backlight(); 
    lcd.init();                      // initialize the lcd 
    lcd.init();
    lcd.clear();
    int variable_menu = 0;
    int variable_submenu = 0;
    int variable_cursor = 0;
}



void loop() {
         char key = numpad.getKey();
         Serial.print(key);
        
         if ( key == '2' && variable_menu > 0 && variable_submenu == 0 && alpha == 1){ 
           variable_menu = variable_menu - 1;
           lcd.clear();
         }
         if( key == '2' && variable_cursor >= 1 && variable_submenu == 1 && alpha == 1){
          variable_cursor = variable_cursor - 1;          
         }
         if( key == '0' && variable_cursor < 1 && variable_submenu == 1 && alpha == 1){
          variable_cursor = variable_cursor + 1;          
         }
         if (key == '0' && variable_menu < 3 && variable_submenu == 0 && alpha == 1){ //3 son los estados de menu, ahora es un ejemplo
            variable_menu = variable_menu + 1;
            Serial.print(variable_menu);
            lcd.clear();
          }
         if (key == '5' && variable_submenu < 2 && alpha == 1){
           variable_submenu = variable_submenu + 1;
           lcd.clear();
          }
         if (key == '8' && variable_submenu == 1 && alpha == 1){
           variable_submenu = variable_submenu - 1;
           lcd.clear();
          }
    if (variable_menu == 0 && variable_submenu == 0 && variable_cursor == 0){
      lcd.setCursor(0, 0);
      lcd.print("-->Temperatura");
      lcd.setCursor(0, 1);
      lcd.print("Humedad");
    }
    if(variable_menu == 0 && variable_submenu == 1 && variable_cursor == 0){
      lcd.setCursor(0, 0);
      lcd.print("-->Temp. Max.   ");
      lcd.setCursor(0, 1);
      lcd.print("Temp. Min.  ");
    }
    if(variable_menu == 0 && variable_submenu == 2 && variable_cursor == 0){
      registro("Fija Temp. Max.", tempmax, 12, 35, key);   //***llamada a la funcion cabrona
          
    }          
    if(variable_menu == 0 && variable_submenu == 1 && variable_cursor == 1){
      lcd.setCursor(0, 0);
      lcd.print("-->Temp. Min.");
      lcd.setCursor(0, 1);
      lcd.print("Temp. Max.");
    }  
    if(variable_menu == 0 && variable_submenu == 2 && variable_cursor == 1){
      lcd.setCursor(0, 0);
      lcd.print("Fija Temp. Min.");
      alpha = 0; //desactiva la navegacion
      if(key == '2' && tempmin < 28){
        lcd.clear();
        lcd.setCursor(0, 1);
        tempmin = tempmin + 1;
        lcd.print(tempmin);
      }
      if(key == '0' && tempmin > 5){
        lcd.clear();
        lcd.setCursor(0, 1);
        tempmin = tempmin - 1;
        lcd.print(tempmin);
        }
        if(key == '3'){
          lcd.clear(); 
          alpha = 1;
          variable_submenu = 1;       
        }
    }    
   if (variable_menu == 1 && variable_submenu == 0 && variable_cursor == 0){  
      lcd.setCursor(0, 0);
      lcd.print("-->Humedad");
      lcd.setCursor(0, 1);
      lcd.print("Viento");     
    }
   if ( variable_menu == 2 && variable_submenu == 0 && variable_cursor == 0){  
      lcd.setCursor(0, 0);
      lcd.print("-->Viento");
      lcd.setCursor(0, 1);
      lcd.print("Humedad Tierra");     
    }
    }
    
    void registro(char *titulo, int variable, int mini, int maxi, char key){
      lcd.setCursor(0, 0);
      lcd.print(titulo);
      alpha = 0; //desactiva la navegacion
      if(key == '2' && variable < maxi){
        lcd.clear();
        lcd.setCursor(0, 0);
        lcd.print(titulo);
        lcd.setCursor(0, 1);
        variable++;
        lcd.print(variable);
      }
      if(key == '0' && variable > mini){
        lcd.clear();
        lcd.setCursor(0, 0);
        lcd.print(titulo);
        lcd.setCursor(0, 1);
        variable = variable - 1;
        lcd.print(variable);
        }
        if(key == '3'){
          lcd.clear(); 
          alpha = 1;
          variable_submenu = 1;
          return;
            
    }
    }