     if( mode == 0 ){ // cal complete
       Serial.println("Calibrate Complete!");
       digitalWrite(PIN_LED,0);
-      save_setting();
+      if(calibrate_complete_check()) save_setting();
+      else load_setting();
     }else{ //mode = 1 , cal start
       Serial.println("Calibrate Start!");
       digitalWrite(PIN_LED,1);
       for(int i=0;i<VWC_CNT;i++){
         bound[i].v_top = CALINIT_TOP;
         bound[i].v_down = CALINIT_DOWN;
+        bound_change[i*2+0] = 0;
+        bound_change[i*2+1] = 0;
       }
     }
     delay(500); // to avoid single click with multiple action

#define DEF_TOP 520
#define DEF_DOWN 261
#define VWC_CNT 3
struct ADC_Bound {
  int v_top; // value sense at air
  int v_down; // value sense at water

  Serial.print(val[i]); Serial.print(",");
  Serial.print(vwc[i]*100); Serial.print(",");
  Serial.print(bound[i].v_down); Serial.print(",");
  Serial.print(bound[i].v_top); Serial.print(" ");
  if(i != VWC_CNT-1 ) Serial.print(",");
  }
  Serial.println("");
    
}
int calibrate_complete_check(){
  int change_cnt =0;
  for(int i=0;i<VWC_CNT*2;i++){
    if(bound_change[i]==1){
      change_cnt++;
    }
  }
  if(change_cnt==6) return 1;
  else return 0;
}


void mode_check_and_run(){
  int btn_state;
  //detect if btn click
