Password using the remote control

Please could help me to adding a password using the remote control (For example 123456) to access to the Reset menu
The Reset code line by remote is 432

#include <NewPing.h>
#include <IRremote.h>
#include <NewTone.h>
const int RECV_PIN = 12; 
IRrecv irrecv(RECV_PIN);
decode_results results;
#include<avr/eeprom.h>
#include <LcdBarGraphRobojax.h>
#include <Wire.h> 
#include <LiquidCrystal_I2C.h>

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

byte lcdNumCols = 20;  
LcdBarGraphRobojax lbg0(&lcd, lcdNumCols, 0, 1);  
LcdBarGraphRobojax lbg1(&lcd, lcdNumCols, 0, 3);

int pumpcont[] = {4, 0, 2, 1};
int alarm_disable[] = {4, 0, 2, 1};
int lcdcont[] = {4, 0, 2, 1};
int roww[] = {4, 0, 2, 1};
int info_page1[] = {4, 0, 2, 1};
int info_page2[] = {4, 0, 2, 1};

#define SONAR_NUM 2     


NewPing sonar[SONAR_NUM] = {   

  NewPing(11, 10),
  
  NewPing(8, 9)   
};

float pum1 = 0.8;  


float pum2 = 0.75; 
float pum3 = 0.25;  
int relay = 13; 

int buzz = A2;   
int led_alarm = A3; 
int stop_button = 3; 
const int restart_pin = 2; 

#define up 0xFF906F 
#define down 0xFFE01F
#define ir_info 0xFFA25D 
#define ir_stop 0xFFE21D
#define ir_move_up 0xFF02FD 
#define ir_move_down 0xFF9867
#define ir_setting 0xFFA857               
#define ir_reset 0xFF18E7   
#define save 0xFFB04F  
#define ir_pump 0xFF7A85 
#define ir_exit 0xFF6897
#define ir_restart 0xFF30CF

#define ir_no 0xFF22DD 

#define ir_yes 0xFFC23D 



#define delay_change_value 50
#define delay_select 500
#define delay_text_view 100
#define delay_text_info_view 7000
#define delay_save 100
#define delay_setting_view 4000
#define delay_error_text 2000
#define delay_press_tone1 100
#define delay_press_tone2 200
#define delay_press_tone3 300
#define delay_press_tone4 500
#define delay_press_tone5 20  
#define delay_press_tone6 800
#define delay_warning_tone 1000
#define frq_press_tone1 150    
#define frq_press_tone3 1500   



unsigned long lastTime = 0;
unsigned long timerDelay = 1000;
unsigned long lastTime1 = 0;
unsigned long timerDelay1 = 4000;


int high_tank1 = 1;    
int tank1 = 0 ;      
int distance_sen_wat1 = 5;  
int sensor1 = 0;               
int high_tank2 = 3;  
int tank2 = 0 ;    
int distance_sen_wat2 = 7;  
int sensor2 = 0;                

int ON_PUMP = 9;   
int MIN = 0 ;
int OFF_PUMP = 11;  
int MAX = 0;


int distance1 = 1;
int distance2 = 2;
int precent1, precent2;
int heigh1, heigh2;
float heightofwater11,  heightofwater12;
int heightofwater1, heightofwater2;
char tank1string_arr [10];
char tank2string_arr [10];
char sendstring [10];

int pump_save;
int val ;
int VAL1;
int VAL2;
int VAL3;
int VAL4;
int VAL5;
int VAL6;
int VAL7;
int row;
int exit_sure;
int L1 = 0;
int L2 = 0;
int L3 = 0;
int avrg = 0;
int larm;
unsigned int sec = 0;
unsigned int mint = 0;
bool pump = false;
bool pump1 = true;
bool IR = false;
bool NUM = false;
bool lcd1 = false;
bool RESTART = false;
int reset ;
int sett ;
bool IR_SAVE = false;
bool ON_OK = true;
bool OFF_OK = true;
bool UP_ULTRA = true;
bool DOWN_ULTRA = true;
bool DOWN_PAGE = false;
bool UP_PAGE = false;

byte p20[8] = {
  B10000,
  B10000,
  B10000,
  B10000,
  B10000,
  B10000,
  B10000,
  B10000,
};
byte p40[8] = {
  B11000,
  B11000,
  B11000,
  B11000,
  B11000,
  B11000,
  B11000,
  B11000,
};
byte p60[8] = {
  B11100,
  B11100,
  B11100,
  B11100,
  B11100,
  B11100,
  B11100,
  B11100,
};
byte p80[8] = {
  B11110,
  B11110,
  B11110,
  B11110,
  B11110,
  B11110,
  B11110,
  B11110,
};
byte p100[8] = {
  B11111,
  B11111,
  B11111,
  B11111,
  B11111,
  B11111,
  B11111,
  B11111,
};
byte ROW[] = {
  B00000,
  B00100,
  B00010,
  B11111,
  B00010,
  B00100,
  B00000,
  B00000
};
byte RIGHT[10] = {
  0b00000,
  0b00001,
  0b00011,
  0b10110,
  0b11100,
  0b01000,
  0b00000,
  0b00000
};

byte customChar[] = {
  0b00001,
  0b00011,
  0b01111,
  0b01111,
  0b01111,
  0b00011,
  0b00001,
  0b00000
};
byte customChar1[] = {
  B00000,
  B10001,
  B11011,
  B01110,
  B01110,
  B11011,
  B10001,
  B00000
};

void setup()
{ irrecv.enableIRIn();
  Serial.begin (9600);
  pinMode(stop_button, INPUT_PULLUP);
  pinMode(relay, OUTPUT);
  pinMode(led_alarm, OUTPUT);
  pinMode(buzz, OUTPUT);
  VAL1 = 1;
  VAL2 = 1;
  VAL3 = 1;
  VAL4 = 1;
  VAL5 = 1;
  VAL6 = 1;
  VAL7 = 1;
  pump_save = 0;
  row = 0;
  larm = 1;
  reset = 0;
  sett = 0;
  val = 0;
  exit_sure = 0;
   lcd.init();                      // initialize the lcd 
  lcd.init();
  // Print a message to the LCD.
  lcd.backlight();
  tank1 = eeprom_read_word(high_tank1);
  tank2 = eeprom_read_word(high_tank2);
  sensor1 = eeprom_read_word(distance_sen_wat1);
  sensor2 = eeprom_read_word(distance_sen_wat2);
  MIN = eeprom_read_word(ON_PUMP);
  MAX = eeprom_read_word(OFF_PUMP);
  lcd.createChar(0, p20);
  lcd.createChar(1, p40);
  lcd.createChar(2, p60);
  lcd.createChar(3, p80);
  lcd.createChar(4, p100);
  lcd.createChar(5, customChar);
  lcd.createChar(6, customChar1);
  lcd.createChar(7, ROW);
  lcd.createChar(8, RIGHT);
  
  digitalWrite(restart_pin, HIGH);
  pinMode(restart_pin, OUTPUT);
}
void loop()
{
  if (irrecv.decode(&results)) {
  
    switch (results.value) {
      case ir_restart:
        if (RESTART == false) {
          delay(delay_save);
          exit1();
        }
    }

    
    switch (results.value) {
      case  ir_stop:

        VAL1 = 2;
        VAL2 = 2;
        VAL3 = 2;
        if (larm == 0) {
          larm = 2;
        }
        if ( VAL6 == 0 ) {
          VAL5 = 2;
          VAL6 = 2;
        }
    }

  
    switch (results.value) {
      case  ir_info:
        if (lcd1 == false) {
          if (lcdcont[1] == 0) {
            lcdcont[1] = 1;
            delay(300);
            lcd.clear();
            val = 1;
            IR = true ;
            VAL7 = 0;
            NUM = true ;
            RESTART = true ;
            DOWN_PAGE = true;
            UP_PAGE = true;
            pumpcont[1] = 3;
            reset = 5;
            eprom_val();
            info1();
            select_tone();
          }

          else if (lcdcont[1] == 1) {
            select_tone();
            lcd.clear();
            val = 0;
            reset = 0;
            IR = false ;
            NUM = false ;
            VAL7 = 1;
            RESTART = false ;
            DOWN_PAGE = false;
            UP_PAGE = false;
            pumpcont[1] = 0;
            lcdcont[1] = 0;

            delay(300);
          }
        }
    }

    switch (results.value) {
      case ir_move_down:
        if (DOWN_PAGE == true ) {
          if (info_page1[1] == 0) {
            delay(delay_select);
            info_page1[1] = 1;
            info2();
            select_tone();
          }

          else if (info_page1[1] == 1) {
            delay(delay_select);
            info_page1[1] = 2;
            info3();
            select_tone();
          }
        }
    }


    switch (results.value) {
      case ir_move_up:
        if (UP_PAGE == true ) {
          if (info_page1[1] == 2) {
            delay(delay_select);
            info_page1[1] = 1;
            info2();
            select_tone();
          }

          else if (info_page1[1] == 1) {
            delay(delay_select);
            info_page1[1] = 0;
            info1();
            select_tone();
          }
        }
    }


    switch (results.value) {
      case  ir_pump:
        if (pumpcont[1] == 0) {
          pump = true;
          pumpcont[1] = 1;
          select_tone();
          delay(300);
        }
        else if (pumpcont[1] == 1) {
          pump = false;
          pumpcont[1] = 0;
          select_tone();
          delay(300);
        }
    }

    switch (results.value) {
      case  ir_exit:

        if (alarm_disable[1] == 0 && lcdcont[1] == 0 && reset == 0 && IR == false) {

          alarm_disable[1] = 1;

          VAL4 = 2;
          select_tone();
          delay(300);
        }

        else if (alarm_disable[1] == 1 && lcdcont[1] == 0 && reset == 0 && IR == false) {
          alarm_disable[1] = 0;

          VAL4 = 1;
          select_tone();
          delay(300);
        }
    }

    switch (results.value) {
      case  ir_reset:
        if (reset == 0) {

          delay(delay_select);
          reset = 2;
          sett = 1;
          val = 1;
          VAL7 = 0;
          RESTART = true;
          lcd1 = true;
          IR = true ;
          NUM = true ;
          pump1 = false;
          pumpcont[1] = 3;
          lcd.clear();
          lcd.setCursor(2, 0);
          lcd.print(F("DO YOU WANT RESET"));
          lcd.setCursor(5, 1);
          lcd.print (F("ALL VALUES?"));
          lcd.setCursor(7, 3);
          lcd.print (F("NO  YES"));


          eprom_val();
          warning_tone();

        }
    }

    switch (results.value) {
      case  ir_no:

        if (reset == 2) {
          delay(delay_select);
          pumpcont[1] = 0;
          sett = 0;
          lcd.clear();
          lcd.setCursor(1, 1);
          lcd.print(F("RESET IS CANCELED"));
          exit_tone();
          delay(delay_text_view);
          exit1();
        }

    }

    switch (results.value) {
      case  ir_yes:
        if (reset == 2) {
          delay(delay_select);
           eeprom_update_word(high_tank1, 100);
            eeprom_update_word(high_tank2, 400);
            eeprom_update_word(distance_sen_wat1, 10);
           eeprom_update_word(distance_sen_wat2, 20);
           eeprom_update_word(OFF_PUMP, 95);
           eeprom_update_word(ON_PUMP, 50);
          lcd.clear();
          lcd.setCursor(0, 1);
          lcd.print(F("RESET IN PROGRESSING"));
          reset_tone();
          for (int i = 0; i < 20; i++)
          {
            for (int j = 0; j < 5; j++)
            {
              lcd.setCursor(i, 2);
              lcd.write(j);
              delay(delay_save);
            }
          }
          lcd.clear();
          reset = 0;
          sett = 0;
          val = 0;
          VAL4 = 1;

          lcd1 = false;
          IR = false ;
          NUM = false ;
          exit1();
        }
    }


    switch (results.value) {
      case  ir_setting:
        if (IR == false && sett == 0) {
          delay(delay_select);

          eprom_val();
          IR = true;
          lcd1 = true;
          pump1 = false;

          val = 1;
          VAL7 = 0;
          RESTART = true;
          reset = 1;
          sett = 2;
          pumpcont[1] = 3;

          select_tone();
          lcd.clear();
          roww[1] = 1;
          row = 1;
   

          lcd.setCursor(0, 0);
          lcd.write(byte(7)); 
         

          lcd_display();
        }
    }
 
    switch (results.value) {
      case  ir_exit:
        if (IR == true && exit_sure == 0 && sett == 2) {


          exit_tone();
          pumpcont[1] = 0;
          exit1();
        }
        else if ( IR == true && exit_sure == 1 && sett == 2) {
          lcd.clear();
          lcd_sure();
          exit_sure = 2;
          NUM = true ;
          warning_tone();
        }
    }
    switch (results.value) {
      case  ir_yes:
        if (IR == true && exit_sure == 2 && sett == 2) {

          exit_sure = 0;
          exit_tone();
          pumpcont[1] = 0;
          exit1();
        }
    }


    switch (results.value) {
      case  ir_no:
        if (IR == true && exit_sure == 2 && sett == 2) {
          exit_sure = 1;
          NUM = false ;
          lcd.clear();
          lcd_display();
          roww[1] = 1;
          row = 1;
          lcd.setCursor(0, 0);
          lcd.write(7);
          select_tone();

        }
    }
    switch (results.value) {
      case ir_move_up:
        if (IR == true && NUM == false && UP_PAGE == false) {
          delay(delay_select);
         
          if (roww[1] == 2) {
            roww[1] = 1;
            row = 1;

            lcd.setCursor(0, 0);
            lcd.print(F(" "));
            lcd.setCursor(0, 1);
            lcd.print(F(" "));
            lcd.setCursor(0, 0);
            lcd.write(7);
          }
          else if (roww[1] == 3) {
            roww[1] = 2;
            row = 2;
            lcd.clear();
            lcd_display();
            lcd.setCursor(0, 1);
            lcd.write(7);
          }

          else if (roww[1] == 4) {
            roww[1] = 3;
            row = 3;
            lcd.setCursor(0, 0);
            lcd.print(F(" "));
            lcd.setCursor(0, 1);
            lcd.print(F(" "));
            lcd_display2();
            lcd.setCursor(0, 0);
            lcd.write(7);
          }
          else if (roww[1] == 5) {
            roww[1] = 4;
            row = 4;
            lcd.clear();
            lcd.setCursor(0, 1);
            lcd.write(7);
            lcd_display2();
          }
          else if (roww[1] == 6) {
            roww[1] = 5;
            row = 5;
            lcd.setCursor(0, 0);
            lcd.print(F(" "));
            lcd.setCursor(0, 1);
            lcd.print(F(" "));
            lcd.setCursor(0, 0);
            lcd.write(byte(7));
            lcd_display3();
          }
          select_tone();
        }
    }

 
    switch (results.value) {
      case ir_move_down:
        if (IR == true && NUM == false && DOWN_PAGE == false) {
          delay(delay_select);
         
          if (roww[1] == 1) {
            roww[1] = 2;
            row = 2;
            lcd.setCursor(0, 0);
            lcd.print(F(" "));
            lcd.setCursor(0, 1);
            lcd.write(7);




          }

          else if (roww[1] == 2) {
            roww[1] = 3;
            row = 3;
            lcd.clear();
            lcd_display2();
            lcd.setCursor(0, 0);
            lcd.write(byte(7));

          }
          else if (roww[1] == 3) {
            roww[1] = 4;
            row = 4;
            lcd.setCursor(0, 0);
            lcd.print(F(" "));
            lcd.setCursor(0, 1);
            lcd.print(F(" "));
            lcd.setCursor(0, 1);
            lcd.write(byte(7));
          }
       
          else if (roww[1] == 4) {
            roww[1] = 5;
            row = 5;
            lcd.clear();
            lcd_display3();
            lcd.setCursor(0, 0);
            lcd.write(byte(7));

            if ((MIN > pum2 * tank1) || (MIN < pum3 * tank1) || MIN == 0) {
              lcd.setCursor(19, 0);
              lcd.print(F(" "));
              lcd.setCursor(19, 0);
              lcd.write(byte(6));
            }
            else {
              lcd.setCursor(19, 0);
              lcd.print(F(" "));
              lcd.setCursor(19, 0);
              lcd.write(byte(8));
            }

            if ((MAX > tank1) || (MAX < pum1 * tank1) || MAX == 0) {
              lcd.setCursor(19, 1);
              lcd.print(F(" "));
              lcd.setCursor(19, 1);
              lcd.write(byte(6));
            }
            else {
              lcd.setCursor(19, 1);
              lcd.print(F(" "));
              lcd.setCursor(19, 1);
              lcd.write(byte(8));
            }

          }
          else if (roww[1] == 5) {
            roww[1] = 6;
            row = 6;
            lcd_display3();
            lcd.setCursor(0, 0);
            lcd.print(F(" "));
            lcd.setCursor(0, 1);
            lcd.print(F(" "));
            lcd.setCursor(0, 1);
            lcd.write(byte(7));
          }
          select_tone();
        }
    }
   
    switch (results.value) {
      case up:
        if (IR == true && NUM == false) {
          if (row == 1 ) {
            delay(delay_change_value);
            tank1 = tank1 + 1;
            if (tank1 > 300) tank1 = 300;
          }
          if (row == 2 ) {
            delay(delay_change_value);
            sensor1 = sensor1 + 1;
            if (sensor1 > 50) sensor1 = 50;

          }
          if (row == 3 ) {
            delay(delay_change_value);
            tank2 = tank2 + 1;
            if (tank2 > 450) tank2 = 450;
          }
          if (row == 4 ) {
            delay(delay_change_value);
            sensor2 = sensor2 + 1;
            if (sensor2 > 50) sensor2 = 50;
          }
         
          if (row == 5 ) {
            delay(delay_change_value);
            MIN = MIN + 1;
            if ((MIN > pum2 * tank1) || (MIN < pum3 * tank1) || MIN == 0) {
              lcd.setCursor(19, 0);
              lcd.print(F(" "));
              lcd.setCursor(19, 0);
              lcd.write(byte(6));
            }
            else {
              lcd.setCursor(19, 0);
              lcd.print(F(" "));
              lcd.setCursor(19, 0);
              lcd.write(byte(8));
            }
          }
        
          if (row == 6 ) {
            delay(delay_change_value);
            MAX = MAX + 1;
            if ((MAX > tank1) || (MAX < pum1 * tank1) || MAX == 0) {
              lcd.setCursor(19, 1);
              lcd.print(F(" "));
              lcd.setCursor(19, 1);
              lcd.write(byte(6));
            }
            else {
              lcd.setCursor(19, 1);
              lcd.print(F(" "));
              lcd.setCursor(19, 1);
              lcd.write(byte(8));
            }
          }
         

          if (row == 3 ) {
            lcd.setCursor(16, 0);
            lcd.print(F("   "));
            lcd.setCursor(0, 0);
            lcd.print(F(" "));
            lcd.setCursor(0, 1);
            lcd.print(F(" "));
            lcd.setCursor(0, 0);
            lcd.write(byte(7));
            lcd_display2();
          }
          else if ( row == 4) {
            lcd.setCursor(16, 1);
            lcd.print(F("   "));
            lcd.setCursor(0, 0);
            lcd.print(F(" "));
            lcd.setCursor(0, 1);
            lcd.print(F(" "));
            lcd.setCursor(0, 1);
            lcd.write(byte(7));
            lcd_display2();
          }

          else if ( row == 5) {
            lcd.setCursor(16, 0);
            lcd.print(F("   "));
            lcd.setCursor(0, 0);
            lcd.print(F(" "));
            lcd.setCursor(0, 1);
            lcd.print(F(" "));
            lcd.setCursor(0, 0);
            lcd.write(byte(7));
            lcd_display3();
          }
          else if ( row == 6) {
            lcd.setCursor(16, 1);
            lcd.print(F("   "));
            lcd.setCursor(0, 0);
            lcd.print(F(" "));
            lcd.setCursor(0, 1);
            lcd.print(F(" "));
            lcd.setCursor(0, 1);
            lcd.write(byte(7));
            lcd_display3();
          }
          else {
            lcd.clear();
            if (row == 1) {
              lcd.setCursor(0, 0);
              lcd.write(7);
            }
            if (row == 2) {
              lcd.setCursor(0, 1);
              lcd.write(7);
            }
            if (row == 3) {
              lcd.setCursor(0, 2);
              lcd.write(7);
            }
            if (row == 4) {
              lcd.setCursor(0, 3);
              lcd.write(7);
            }

            lcd_display();
          }
          change_tone();
          exit_sure = 1;
          IR_SAVE = true;
        }
    }


    switch (results.value) {
      case down:
        if (IR == true && NUM == false) {
          if (row == 1 ) {
            delay(delay_change_value);
            tank1 = tank1 - 1;
            if (tank1 < 0) tank1 = 0;
          }
          if (row == 2 ) {
            delay(delay_change_value);
            sensor1 = sensor1 - 1;
            if (sensor1 < 10) sensor1 = 10;
          }
          if (row == 3 ) {

            delay(delay_change_value);
            tank2 = tank2 - 1;
            if (tank2 < 0) tank2 = 0;
          }
          if (row == 4 ) {
            delay(delay_change_value);
            sensor2 = sensor2 - 1;

            if (sensor2 < 10) sensor2 = 10;
          }
          
          if (row == 5 ) {
            delay(delay_change_value);
            MIN = MIN - 1;
            if ((MIN > pum2 * tank1) || (MIN < pum3 * tank1)) {
              lcd.setCursor(19, 0);
              lcd.print(F(" "));
              lcd.setCursor(19, 0);
              lcd.write(byte(6));
            }
            else {
              lcd.setCursor(19, 0);
              lcd.print(F(" "));
              lcd.setCursor(19, 0);
              lcd.write(byte(8));
            }
          }

     
          if (row == 6 ) {
            delay(delay_change_value);
            MAX = MAX - 1;
            if ((MAX > tank1) || (MAX < pum1 * tank1)) {
              lcd.setCursor(19, 1);
              lcd.print(F(" "));
              lcd.setCursor(19, 1);
              lcd.write(byte(6));
            }
            else {
              lcd.setCursor(19, 1);
              lcd.print(F(" "));
              lcd.setCursor(19, 1);
              lcd.write(byte(8));
            }
          }


          if (row == 3 ) {
            lcd.setCursor(16, 0);
            lcd.print(F("   "));
            lcd.setCursor(0, 0);
            lcd.print(F(" "));
            lcd.setCursor(0, 1);
            lcd.print(F(" "));
            lcd.setCursor(0, 0);
            lcd.write(byte(7));
            lcd_display2();
          }
          else if ( row == 4) {
            lcd.setCursor(16, 1);
            lcd.print(F("   "));
            lcd.setCursor(0, 0);
            lcd.print(F(" "));
            lcd.setCursor(0, 1);
            lcd.print(F(" "));
            lcd.setCursor(0, 1);
            lcd.write(byte(7));
            lcd_display2();
          }
          else if ( row == 5) {
            lcd.setCursor(16, 0);
            lcd.print(F("   "));
            lcd.setCursor(0, 0);
            lcd.print(F(" "));
            lcd.setCursor(0, 1);
            lcd.print(F(" "));
            lcd.setCursor(0, 0);
            lcd.write(byte(7));
            lcd_display3();
          }
          else if ( row == 6) {
            lcd.setCursor(16, 1);
            lcd.print(F("   "));
            lcd.setCursor(0, 0);
            lcd.print(F(" "));
            lcd.setCursor(0, 1);
            lcd.print(F(" "));
            lcd.setCursor(0, 1);
            lcd.write(byte(7));
            lcd_display3();
          }
        
          else {
            lcd.clear();
            if (row == 1) {
              lcd.setCursor(0, 0);
              lcd.write(7);
            }
            if (row == 2) {
              lcd.setCursor(0, 1);
              lcd.write(7);
            }
            if (row == 3) {
              lcd.setCursor(0, 0);
              lcd.write(7);
            }
            if (row == 4) {
              lcd.setCursor(0, 1);
              lcd.write(7);
            }

            if (row == 5) {
              lcd.setCursor(0, 0);
              lcd.write(7);
            }
            if (row == 6) {
              lcd.setCursor(0, 1);
              lcd.write(7);
            }
            lcd_display();
          }
          change_tone();
          exit_sure = 1;
          IR_SAVE = true;
        }
    }
   
    
    switch (results.value) {
      case save:
        if (IR_SAVE == false && IR == true && sett == 2) {

          lcd_display4();
        }
    }
    switch (results.value) {
      case save:
        if (IR_SAVE == true && sett == 2) {
          if ((MAX > tank1 || MAX < pum1 * tank1) && (MIN <= pum2 * tank1 && MIN >= pum3 * tank1))   {
            OFF_OK = false;
            ON_OK = true;
          }
          if ( ( MIN > pum2 * tank1 || MIN < pum3 * tank1) && (MAX <= tank1 && MAX >= pum1 * tank1)) {
            ON_OK = false;
            OFF_OK = true;
          }

          if ((MAX > tank1 || MAX < pum1 * tank1 ) && ( MIN > pum2 * tank1 || MIN < pum3 * tank1)) {
            ON_OK = false;
            OFF_OK = false;
          }
          if (MAX <= tank1 && MAX >= pum1 * tank1 && MIN <= pum2 * tank1 && MIN >= pum3 * tank1) {
            ON_OK = true;
            OFF_OK = true;
          }
          if (ON_OK == true && OFF_OK == false) {
            lcd.clear();
            ERROR_SAVE();
            ERROR_SAVE_1();
            warning_tone();
            delay(delay_error_text);
            roww[1] = 6;
            row = 6;
            lcd.clear();
            lcd.setCursor(0, 0);
            lcd.print(F(" "));
            lcd.setCursor(0, 1);
            lcd.print(F(" "));
            lcd.setCursor(0, 1);
            lcd.write(byte(7));
            lcd.setCursor(19, 0);
            lcd.print(F(" "));
            lcd.setCursor(19, 0);
            lcd.write(byte(8));
            lcd.setCursor(19, 1);
            lcd.print(F(" "));
            lcd.setCursor(19, 1);
            lcd.write(byte(6));
            lcd_display3();
          }
          if (ON_OK == false && OFF_OK == true) {
            lcd.clear();
            ERROR_SAVE();
            ERROR_SAVE_2();
            warning_tone();
            delay(delay_error_text);
            roww[1] = 5;
            row = 5;
            lcd.clear();
            lcd.setCursor(0, 0);
            lcd.print(F(" "));
            lcd.setCursor(0, 1);
            lcd.print(F(" "));
            lcd.setCursor(0, 0);
            lcd.write(byte(7));
            lcd.setCursor(19, 1);
            lcd.print(F(" "));
            lcd.setCursor(19, 1);
            lcd.write(byte(8));
            lcd.setCursor(19, 0);
            lcd.print(F(" "));
            lcd.setCursor(19, 0);
            lcd.write(byte(6));
            lcd_display3();
          }
          if (ON_OK == false && OFF_OK == false) {
            lcd.clear();
            ERROR_SAVE();
            ERROR_SAVE_3();
            warning_tone();
            delay(delay_error_text);
            roww[1] = 5;
            row = 5;
            lcd.clear();
            lcd.setCursor(0, 0);
            lcd.print(F(" "));
            lcd.setCursor(0, 1);
            lcd.print(F(" "));
            lcd.setCursor(0, 0);
            lcd.write(byte(7));
            lcd.setCursor(19, 0);
            lcd.print(F(" "));
            lcd.setCursor(19, 1);
            lcd.print(F(" "));
            lcd.setCursor(19, 0);
            lcd.write(byte(6));
            lcd.setCursor(19, 1);
            lcd.write(byte(6));
            lcd_display3();
          }
          if (ON_OK == true && OFF_OK == true) {
            delay(delay_save);
              eeprom_update_word(high_tank1, tank1);
              eeprom_update_word(distance_sen_wat1, sensor1);
              eeprom_update_word(high_tank2, tank2);
               eeprom_update_word(distance_sen_wat2, sensor2);
               eeprom_update_word(OFF_PUMP, MAX);
             eeprom_update_word(ON_PUMP, MIN);
            exit_sure = 0;
            lcd.clear();
            save1();
          }
        }
    }

    irrecv.resume();
  }

  if (val == 0) {
    if ((millis() - lastTime) > timerDelay) {
      heightofwater1 = eeprom_read_word(high_tank1) - (sonar[0].ping_cm() - eeprom_read_word(distance_sen_wat1));
      dtostrf (heightofwater1, 0, 2, tank1string_arr);      
    
      heightofwater2 = eeprom_read_word(high_tank2) - (sonar[1].ping_cm() - eeprom_read_word(distance_sen_wat2));
      dtostrf(heightofwater2, 0, 2, tank2string_arr);    

    strcat (sendstring, tank1string_arr);
      strcat (sendstring, tank2string_arr);

      Serial.print(sendstring);
      delay (200);
      memset(sendstring, '\0', 10);

      heigh1 = 0;
      heigh2 = 0;
      heightofwater11 = heightofwater1;
      heightofwater12 = heightofwater2;
      if (heightofwater1 >= 0) {
        precent1 = (heightofwater11 / eeprom_read_word(high_tank1)) * 100;
      }
      else {
        precent1 = (heigh1 / eeprom_read_word(high_tank1)) * 100;
      }

  
      if (heightofwater2 >= 0) {
        precent2 = (heightofwater12 / eeprom_read_word(high_tank2)) * 100;
      }
      else {
        precent2 = (heigh2 / eeprom_read_word(high_tank2)) * 100;
      }




      if (heightofwater1 >= 0 && heightofwater1 <= eeprom_read_word(high_tank1) ) {
        lbg0.drawValue( (heightofwater1), ( tank1));
      }

      if (heightofwater1 > eeprom_read_word(high_tank1) ) {
        lbg0.drawValue( (tank1), ( tank1));
      }
      if (heightofwater1 < 0) {
        lbg0.drawValue( (0), ( tank1));
      }

      if (heightofwater2 >= 0  && heightofwater2 <= eeprom_read_word(high_tank2) ) {
        lbg1.drawValue( (heightofwater2), ( tank2));
      }

      if (heightofwater2 > eeprom_read_word(high_tank2) ) {
        lbg1.drawValue( (tank2), ( tank2));
      }
      if (heightofwater2 < 0) {
        lbg1.drawValue( (0), ( tank2));
      }
 
      if (VAL4 == 2) {
        lcd.setCursor (0, 0);
        lcd.print(F("        "));
        lcd.setCursor(3, 0);
        lcd.write(byte(5));
        lcd.setCursor(4, 0);
        lcd.write(byte(6));
      }
      else {
        lcd.setCursor (0, 0);
        lcd.print(F("        "));
        lcd.setCursor (0, 0);
        lcd.print(F("UP.TANK:"));
      }

      lcd.setCursor(9, 0);
      lcd.print(F("           "));
      if (heightofwater1 >= 0) {
        lcd.setCursor (9, 0);
        lcd.print(heightofwater1);
        lcd.print(F(" CM"));
      }
      else {
        lcd.setCursor(9, 0);
        lcd.print(heigh1);
        lcd.print(F(" CM"));
      }

      lcd.setCursor(16, 0);
      lcd.print( precent1  );
      lcd.print(F("% "));
      lcd.setCursor (0, 2);
      lcd.print(F("GR.TANK:"));
      lcd.setCursor(9, 2);
      lcd.print(F("           "));
      if (heightofwater2 >= 0) {
        lcd.setCursor (9, 2);
        lcd.print(heightofwater2);
        lcd.print(F(" CM"));
      }
      else {
        lcd.setCursor (9, 2);
        lcd.print(heigh2);
        lcd.print(F(" CM"));
      }

      lcd.setCursor(16, 2);
      lcd.print( precent2  );
      lcd.print(F("% "));
      sec++;
      lastTime = millis();
    }
  }

 

  if (digitalRead(stop_button) == LOW && VAL6 == 0   ) {

    VAL5 = 2;
    VAL6 = 2;
  }
  if (digitalRead(stop_button) == LOW  ) {
    VAL1 = 2;
    VAL2 = 2;
    VAL3 = 2;
    if (larm == 0) {
      larm = 2;
    }
  }



  if (sec > 44) {
    sec = 0;
    mint = mint + 1;
  }
  if (mint > 5) {
    mint = 0;
    L1 = 0;
    L3 = 0;
  }
  if (sec == 1 && mint == 0 ) {
    L1 = heightofwater1;
  }

  if (sec == 1 && mint == 4) {
    L2 = heightofwater1;
  }

  if (sec == 1 && mint == 5) {
    L3 = heightofwater1;
  }
  avrg = (L1 - L3);

  if ((avrg > 3) && larm == 1 && L3 > 0 && heightofwater1 > 75) {
    larm = 0;

  }
  if ((avrg >= 1) && larm == 1 && L3 > 0 && heightofwater1 <= 75) {
    larm = 0;
  }
  if ((L1 == L2) || ((L3 - L1) > 2)) {
    larm = 1;
  }
  if (larm == 0) {
    digitalWrite(led_alarm, HIGH);

  }
  else {
    digitalWrite(led_alarm, LOW);
  }

  if (VAL7 == 1) {
    if (VAL4 == 1) {

      if  (heightofwater1 >= tank1 && VAL1 == 1 )    {
        VAL1 = 0;
      }
      if (VAL1 == 0) {
       
           alarm1();
      }
      if (heightofwater1 < tank1 - 5) {
        VAL1 = 1;

      }
      if (heightofwater1 < 0.45 * tank1 && VAL3 == 1 )    {
        VAL3 = 0;
      }
      if (VAL3 == 0) {
         alarm2();
      }
      if ( heightofwater1 >= (0.45 * tank1) + 5 )    {
        VAL3 = 1;
      }

      if (heightofwater2 >= tank2  && heightofwater2 < tank2 + 5 && VAL2 == 1 )    {
        VAL2 = 0;
      }
      if (VAL2 == 0) {
          alarm2();
        
      }
      if (heightofwater2 < tank2 - 5)    {
        VAL2 = 1;
        VAL5 = 1;
        VAL6 = 1;

      }

    

      if (heightofwater2 >= tank2 + 5 && VAL5 == 1 )    {
        VAL5 = 0;
        VAL6 = 0;
        VAL2 = 2;
      }
      if (VAL5 == 0) {
        
         alarm4();
      }
      if (heightofwater2 < tank2)    {
        VAL5 = 1;

      }

    }
  }



  if (MAX > tank1 || MAX < pum1 * tank1 || MIN > pum2 * tank1 || MIN < pum3 * tank1  ) {
    pump_save = 1;

  }
  if (MAX <= tank1 && MAX >=  pum1 * tank1 && MIN <= pum2 * tank1 && MIN >= pum3 * tank1  ) {
    pump_save = 0;

  }
  if (pump_save == 0) {
    if (heightofwater1 <= MIN && (heightofwater2 > 0.3 * (tank2)  ) )  {
      pump = true;
    }

    if ((heightofwater1 >= MAX || (heightofwater2 <= 0.3 * (tank2)  )) )   {
      pump = false;
    }

    if (pump == true && pump1 == true) {  

      digitalWrite(relay, HIGH);
    }


    if (pump == false || pump1 == false ) {
      digitalWrite(relay, LOW);
    }
  }

}




void alarm1() {
  for (int hz = 500; hz < 600; hz += 1) {
    NewTone(buzz, hz, 150);
    delay(3);
  }
}

void alarm2() {
  if ((millis() - lastTime1) > timerDelay1) {
    NewTone(buzz, 400, 700);
    lastTime1 = millis();
  }
}



void alarm3() {
  for (int hz = 100; hz < 150; hz += 1) {
    NewTone(buzz, hz, 50);
    delay(45);
  }
}

void alarm4() {
  for (int hz = 150; hz < 350; hz += 4) {
    NewTone(buzz, hz, 7);
    delay(6);
  }
}


void warning_tone() {

  NewTone(buzz, frq_press_tone1);
  delay(delay_warning_tone);
  noNewTone(buzz);

}

void select_tone() {
  NewTone( buzz, frq_press_tone3);
  delay(delay_press_tone1);
  noNewTone(buzz);
}
void save_tone() {
  NewTone( buzz, frq_press_tone3);
  delay(delay_press_tone4);
  noNewTone( buzz);
  delay(delay_press_tone1);
  NewTone( buzz, frq_press_tone3);
  delay(delay_press_tone4);
  noNewTone( buzz);
  delay(delay_press_tone1);
  NewTone( buzz, frq_press_tone3);
  delay(delay_press_tone6);
  noNewTone(buzz);
}
void change_tone() {
  NewTone( buzz, frq_press_tone3);
  delay(delay_press_tone5);
  noNewTone(buzz);
}
void exit_tone() {
  NewTone( buzz, frq_press_tone3);
  delay(delay_press_tone4);
  noNewTone(buzz);
}
void reset_tone() {
  NewTone( buzz, frq_press_tone3);
  delay(delay_press_tone4);
  noNewTone(buzz);
  delay(delay_press_tone1);
  NewTone( buzz, frq_press_tone3);
  delay(delay_press_tone4);
  noNewTone(buzz);
  delay(delay_press_tone1);
  NewTone( buzz, frq_press_tone3);
  delay(delay_press_tone6);
  noNewTone(buzz);
}
void info1() {
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print(F("UPPER TANK    "));
  lcd.print(tank1);
  lcd.setCursor(18, 0);
  lcd.print(F("CM"));
  lcd.setCursor(0, 1);
  lcd.print(F("UPPER SENSOR  "));
  lcd.print(sensor1);
  lcd.setCursor(18, 1);
  lcd.print(F("CM"));
  lcd.setCursor(4, 3);
  lcd.print(F("(DOWN / INFO.))"));

}
void info2() {
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print(F("GROUND TANK   "));
  lcd.print(tank2);
  lcd.setCursor(18, 0);
  lcd.print(F("CM"));
  lcd.setCursor(0, 1);
  lcd.print(F("GROUND SENSOR "));
  lcd.print(sensor2);
  lcd.setCursor(18, 1);
  lcd.print(F("CM"));

  lcd.setCursor(0, 3);
  lcd.print(F("(UP / DOWN / INFO.)"));

}

void info3() {
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print(F("ON  PUMP VAL. "));
  lcd.print(MIN);
  lcd.setCursor(18, 0);
  lcd.print(F("CM"));
  lcd.setCursor(0, 1);
  lcd.print(F("OFF PUMP VAL. "));
  lcd.print(MAX);
  lcd.setCursor(18, 1);
  lcd.print(F("CM"));
  lcd.setCursor(4, 3);
  lcd.print(F("(UP / INFO.)"));

}


void save1() {
  lcd.setCursor(4, 0);
  lcd.print(F("SAVING VALUE"));

  for (int i = 0; i < 20; i++)
  {
    for (int j = 0; j < 5; j++)
    {
      lcd.setCursor(i, 2);
      lcd.write(j);
      delay(delay_save);
    }
  }
  lcd.clear();

  lcd.setCursor(3, 0);
  lcd.print(F("ALL VALUES ARE"));
  lcd.setCursor(1, 2);
  lcd.print(F("SAVED SUCCESSFULLY"));
  row = 0;

  save_tone();

  delay(delay_text_view);

  IR_SAVE = false;
  eprom_val();
  lcd.clear();
  roww[1] = 1;
  row = 1;
  lcd.setCursor(0, 0);
  lcd.print(F(" "));

  lcd.setCursor(0, 0);
  lcd.write(7);
  lcd_display();
}
void exit1() {
  lcd.clear();
  lcd.setCursor(1, 1);
  lcd.print(F("DEVICE WILL RESTART"));
  lcd.setCursor(5, 2);
  lcd.print(F("IN A MOMENT"));
  delay(500);
  digitalWrite(restart_pin, LOW);
  lcd.clear();
  reset = 0;
  val = 0;
  VAL7 = 1;
  IR_SAVE = false;
  lcd1 = false;
  IR = false ;
  sett = 0;
  NUM = false ;
  pump1 = true;
  row = 0;
  RESTART = false;

  eprom_val();
}

void lcd_display() {

  lcd.setCursor(1, 0);
  lcd.print(F("UPPER TANK    "));
  lcd.print(tank1);
  lcd.setCursor(1, 1);
  lcd.print(F("UPPER SENSOR  "));
  lcd.print(sensor1);
  lcd.setCursor(0, 2);
  lcd.print(F("(+ / - / UP / DOWN)"));
  lcd.setCursor(3, 3);
  lcd.print(F("(SAVE / Exit)"));

}

void lcd_display2() {


  lcd.setCursor(1, 0);
  lcd.print(F("GROUND TANK   "));
  lcd.print(tank2);
  lcd.setCursor(1, 1);
  lcd.print(F("GROUND SENSOR "));
  lcd.print(sensor2);
  lcd.setCursor(0, 2);
  lcd.print(F("(+ / - / UP / DOWN)"));
  lcd.setCursor(3, 3);
  lcd.print(F("(SAVE / Exit)"));
}


void lcd_display3() {

  lcd.setCursor(1, 0);
  lcd.print(F("ON  PUMP LEVEL "));
  lcd.print(MIN);
  lcd.setCursor(1, 1);
  lcd.print(F("OFF PUMP LEVEL "));
  lcd.print(MAX);


  lcd.setCursor(0, 2);
  lcd.print(F("(+ / - / UP / DOWN)"));
  lcd.setCursor(3, 3);
  lcd.print(F("(SAVE / Exit)"));

}

void lcd_display4() {
  lcd.clear();
  lcd.setCursor(2, 1);
  lcd.print(F("THERE IS NO DATA"));
  lcd.setCursor(1, 2);
  lcd.print(F("CHANGE TO BE SAVED"));
  delay(delay_error_text);
  lcd.clear();
  lcd_display();
  roww[1] = 1;
  row = 1;

  lcd.setCursor(0, 0);
  lcd.write(7);

}
void ERROR_SAVE() {
  lcd.setCursor(7, 0);
  lcd.print(F("WARNING"));
  lcd.setCursor(1, 1);
  lcd.print(F("CHECK THE VALUE OF"));

}

void ERROR_SAVE_1() {

  lcd.setCursor(2, 3);
  lcd.print(F(" OFF PUMP LEVEL "));
}
void ERROR_SAVE_2() {


  lcd.setCursor(3, 3);
  lcd.print(F(" ON PUMP LEVEL "));

}

void ERROR_SAVE_3() {

  lcd.setCursor(0, 3);
  lcd.print(F("ON & OFF PUMP LEVELS"));
}
void lcd_sure() {

  lcd.setCursor(0, 0);
  lcd.print(F("DO YOU WANT TO EXIT"));
  lcd.setCursor(3, 1);
  lcd.print(F("WITHOUT SAVING?"));
  lcd.setCursor(6, 3);
  lcd.print (F("NO / YES"));

}
void eprom_val() {
  tank1 = eeprom_read_word(high_tank1);
  tank2 = eeprom_read_word(high_tank2);
  sensor1 = eeprom_read_word(distance_sen_wat1);
  sensor2 = eeprom_read_word(distance_sen_wat2);
  MAX = eeprom_read_word(OFF_PUMP);
  MIN = eeprom_read_word(ON_PUMP);
}

Unfortunately I will not have the time to solve your problem but if you want somebody else to assist you, you should give some more information:

  • How do you want to input the password, by Serial input or via an IR Remote Control?
  • If it is the Remote Control, what are the IR codes sent for numbers?

For the latter you would need to give a list like this

// These codes are just examples, not the real ones!!!!
#define ir_zero  0xFF7A84 
#define ir_one  0xFF7A85 
#define ir_two  0xFF6897
#define ir_three 0xFF30CF
#define ir_four 0xFFE055
// ... and so on until ...
#define ir_nine 0xFFE966
// and probably also for these commands
#define ir_startpassword 0xFFFF7777
#define ir_restartpassword 0xFFFF7799
#define ir_confirmpassword 0xFFFF8888

This might allow someone to add a password control to the sketch ... who is willing to investigate in an about 1700 line code ... :wink:

I reduced the code size and kept the access reset menu code
Entering reset menu is the one I want to help me making a code cons

#include <IRremote.h>
const int RECV_PIN = 12;
IRrecv irrecv(RECV_PIN);
decode_results results;
#include <LcdBarGraphRobojax.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27, 20, 4); 

byte lcdNumCols = 20;  
LcdBarGraphRobojax lbg0(&lcd, lcdNumCols, 0, 1); 
LcdBarGraphRobojax lbg1(&lcd, lcdNumCols, 0, 3);


#define up 0xFF906F
#define down 0xFFE01F
#define ir_info 0xFFA25D
#define ir_stop 0xFFE21D
#define ir_move_up 0xFF02FD
#define ir_move_down 0xFF9867
#define ir_setting 0xFFA857
#define ir_reset 0xFF18E7
#define save 0xFFB04F
#define ir_pump 0xFF7A85
#define ir_exit 0xFF6897
#define ir_restart 0xFF30CF
#define ir_no 0xFF22DD
#define ir_yes 0xFFC23D



int val ;
int reset ;

byte p20[8] = {
  B10000,
  B10000,
  B10000,
  B10000,
  B10000,
  B10000,
  B10000,
  B10000,
};
byte p40[8] = {
  B11000,
  B11000,
  B11000,
  B11000,
  B11000,
  B11000,
  B11000,
  B11000,
};
byte p60[8] = {
  B11100,
  B11100,
  B11100,
  B11100,
  B11100,
  B11100,
  B11100,
  B11100,
};
byte p80[8] = {
  B11110,
  B11110,
  B11110,
  B11110,
  B11110,
  B11110,
  B11110,
  B11110,
};
byte p100[8] = {
  B11111,
  B11111,
  B11111,
  B11111,
  B11111,
  B11111,
  B11111,
  B11111,
};

byte customChar[] = {
  0b00001,
  0b00011,
  0b01111,
  0b01111,
  0b01111,
  0b00011,
  0b00001,
  0b00000
};
byte customChar1[] = {
  B00000,
  B10001,
  B11011,
  B01110,
  B01110,
  B11011,
  B10001,
  B00000
};

void setup()
{ irrecv.enableIRIn();
  reset = 0;
  val = 0;
  lcd.init();
  lcd.init();
  lcd.backlight();

  lcd.createChar(0, p20);
  lcd.createChar(1, p40);
  lcd.createChar(2, p60);
  lcd.createChar(3, p80);
  lcd.createChar(4, p100);
  lcd.createChar(5, customChar);
  lcd.createChar(6, customChar1);


}
void loop()
{
  if (irrecv.decode(&results)) {

    switch (results.value) {
      case  ir_reset:
        if (reset == 0) {
          delay(100);
          reset = 2;
          val = 1;

          lcd.clear();
          lcd.setCursor(2, 0);
          lcd.print(F("DO YOU WANT RESET"));
          lcd.setCursor(5, 1);
          lcd.print (F("ALL VALUES?"));
          lcd.setCursor(7, 3);
          lcd.print (F("NO  YES"));

        }
    }

    switch (results.value) {
      case  ir_no:

        if (reset == 2) {
          delay(100);

          lcd.clear();
          lcd.setCursor(1, 1);
          lcd.print(F("RESET IS CANCELED"));

          delay(500);
          lcd.clear();
          val = 0;
          reset = 0;
        }

    }

    switch (results.value) {
      case  ir_yes:
        if (reset == 2) {

          lcd.clear();
          lcd.setCursor(0, 1);
          lcd.print(F("RESET IN PROGRESSING"));

          for (int i = 0; i < 20; i++)
          {
            for (int j = 0; j < 5; j++)
            {
              lcd.setCursor(i, 2);
              lcd.write(j);
              delay(20);
            }
          }
          lcd.clear();
          reset = 0;
          val = 0;

        }
    }

    irrecv.resume();
  }


  if (val == 0) {
    lcd.setCursor (1, 1);
    lcd.print(F("IR REMOTE PASSWORD"));
    lcd.setCursor (3, 2);
    lcd.print(F("TO RESET ACCESS"));
  }

}

I reduced the code size and kept the access reset menu code
Entering reset menu is the one I want to help me making a code consisting of numbers using a remote control

I want to use the remote control.
ِAbout the code for these numbers, you can choose a random code , and after that I will change it or choose any one from above HEX code

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.