logica software

salve a tutti!
innanzitutto grazie come sempre degli aiuti.
ho un problema nel creare un “menù” che mi permetta tramite pulsante(1° caso) di richiamare la funzione per calibrare la bilancia di arduino (uno)
mentre(2°caso) ha la funzione di visualizzare la lettura dati della cella di carico.

lo sketch è il seguente, e non capisco come dove sbaglio:

  unsigned long mil = millis();
 ck1 = digitalRead(5);

  if (ck1!=ck2){                   //
     if (mil - prev >= 1000){       //condizione impulso del tasto
        ck3++;                   //
        Serial.print("contatore menù ok(ck3++)");
        delay(500);
                            }
          if (ck3%2==0) {        //       
    if (mil - prev >= 1000){        // condizione cambio di stato: 1;1
          prev = mil;                   //
          calibrazione(); 
          Serial.print("ck3 pari:    "+String(ck3));
          }
                }
          
    if (ck3%2==1){
      if (mil - prev >= 1000) {
        Serial.print("ck3 pari:    "+String(ck3));
          scale.set_scale(calibration_factor);//da tentare di creare funzione void, return units//
          units = scale.get_units();
            if (units < 0) {
            units = 0.00;