Bomba fake airsoft

Ola, alguem pode me ajudar com o codigo abaixo. (codigo de um jogo para airsoft)
Inicialmente o codigo pede apenas para inserir uma senha e sosinho coloca um tempo fixo predefinido para inicio do jogo. preciso colocar para digitar o tempo tambem. estou apanhando. (usando teclado 4x4 e lcd 16x2 e arduino uno)

#include <Keypad.h>
#include <Key.h>
#include <LiquidCrystal.h>
#include <Tone.h>
#define pound 14

Tone tone1;

int Scount = 12; // count seconds
int Mcount = 1; // count minutes
int Hcount = 0; // count hours
int DefuseTimer = 0; // set timer to 0

long secMillis = 0; // store last time for second add
long interval = 1000; // interval for seconds

char password[4]; // number of characters in our password
int currentLength = 0; //defines which number we are currently writing
int i = 0;
char entered[4];

int ledPin = 4; //red led
int ledPin2 = 3; //yellow led
int ledPin3 = 2; //green led
int pinRel6 = 6; // rele sirene

LiquidCrystal lcd(7, 8, 10, 11, 12, 13); // the pins we use on the LCD

const byte ROWS = 4; // 4 linha
const byte COLS = 4; // 4 colunas
char keys[ROWS][COLS] = {
{‘1’, ‘2’, ‘3’, ‘A’},
{‘4’, ‘5’, ‘6’, ‘B’},
{‘7’, ‘8’, ‘9’, ‘C’},
{’*’, ‘0’, ‘#’, ‘D’}
};
byte rowPins[ROWS] = {A0, A1, A2, A3}; //connect to the row pinouts of the keypad
byte colPins[COLS] = {A4, A5, 6, 5}; //connect to the column pinouts of the keypad

Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );

void setup() {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Digite o Tempo: ");
while (currentLength < 5)
{
lcd.setCursor(currentLength + 6, 1);
lcd.cursor();
char tmp = keypad.getKey();
tmp == NO_KEY;
if (tmp != NO_KEY)
{
if ((tmp != ‘*’) && (tmp != ‘#’))
{
lcd.print(tmp);
password[currentLength] = tmp;
currentLength++;
tone1.play(NOTE_C6, 200);
}
}
}

lcd.clear();
pinMode(ledPin, OUTPUT); // sets the digital pin as output
pinMode(ledPin2, OUTPUT); // sets the digital pin as output
pinMode(ledPin3, OUTPUT); // sets the digital pin as output
tone1.begin(9);
lcd.begin(16, 2);
Serial.begin(9600);
tone1.play(NOTE_E6, 200);
delay(150);
tone1.play(NOTE_B6, 200);
delay(150);
tone1.play(NOTE_C6, 200);
delay(150);
tone1.play(NOTE_F6, 200);
delay(150);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Digite a Senha: ");
delay(300);
while (currentLength < 4)
{
lcd.setCursor(currentLength + 6, 1);
lcd.cursor();
char key = keypad.getKey();
key == NO_KEY;
if (key != NO_KEY)
{
if ((key != ‘*’) && (key != ‘#’))
{
lcd.print(key);
password[currentLength] = key;
currentLength++;
tone1.play(NOTE_C6, 200);
}
}
}

if (currentLength == 4)
{
delay(500);
lcd.noCursor();
lcd.clear();
lcd.home();
lcd.print("Digitou a Senha: ");
lcd.setCursor(6, 1);
lcd.print(password[0]);
lcd.print(password[1]);
lcd.print(password[2]);
lcd.print(password[3]);

tone1.play(NOTE_E6, 200);
delay(3000);
lcd.clear();
currentLength = 0;

}
}

void loop()
{
timer();
char key2 = keypad.getKey(); // get the key

if (key2 == ‘*’)
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Senha: ");

while (currentLength < 4)
{

  timer();

  char key2 = keypad.getKey();
  if (key2 == '#')
  {
    currentLength = 0;
    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print("Senha: ");
  }
  else if (key2 != NO_KEY)
  {

    lcd.setCursor(currentLength + 7, 0);
    lcd.cursor();

    lcd.print(key2);
    entered[currentLength] = key2;
    currentLength++;
    tone1.play(NOTE_C6, 200);
    delay(100);
    lcd.noCursor();
    lcd.setCursor(currentLength + 6, 0);
    lcd.print("*");
    lcd.setCursor(currentLength + 7, 0);
    lcd.cursor();
  }
}

if (currentLength == 4)
{
  if (entered[0] == password[0] && entered[1] == password[1] && entered[2] == password[2] && entered[3] == password[3])
  {
    lcd.noCursor();
    lcd.clear();
    lcd.home();
    lcd.print("Bomba Desarmada  ");
    currentLength = 0;
    digitalWrite(ledPin3, HIGH);
    delay(2500);
    lcd.setCursor(0, 1);
    lcd.print("Reset da Bomba   ");
    delay(10000);
  }
  else
  {
    lcd.noCursor();
    lcd.clear();
    lcd.home();
    lcd.print(" Senha Errada ");

    if (Hcount > 0)
    {
      Hcount = Hcount - 1;
    }

    if (Mcount > 0)
    {
      Mcount = Mcount - 59;
    }
    if (Scount > 0)
    {
      Scount = Scount - 59;
    }
    delay(1500);
    currentLength = 0;

  }
}

}
}

void timer()
{
Serial.print(Scount);
Serial.println();

if (Hcount <= 0)
{
if ( Mcount < 0 )
{
lcd.noCursor();
lcd.clear();
lcd.home();
lcd.print("… A Bomba… “);
lcd.setCursor (0, 1);
lcd.print(”… Explodiu… ");
pinMode(pinRel6, OUTPUT); // ativa sirene
digitalWrite(pinRel6, HIGH);
delay(2000);

  while (Mcount < 0)
  {
    digitalWrite(ledPin, HIGH); // sets the LED on
    tone1.play(NOTE_A2, 90);
    delay(100);
    digitalWrite(ledPin, LOW); // sets the LED off
    tone1.play(NOTE_A2, 90);
    delay(100);
    digitalWrite(ledPin2, HIGH); // sets the LED on
    tone1.play(NOTE_A2, 90);
    delay(100);
    digitalWrite(ledPin2, LOW); // sets the LED off
    tone1.play(NOTE_A2, 90);
    delay(100);
    digitalWrite(ledPin3, HIGH); // sets the LED on
    tone1.play(NOTE_A2, 90);
    delay(100);
    digitalWrite(ledPin3, LOW); // sets the LED off
    tone1.play(NOTE_A2, 90);
    delay(100);
  }
}

}

lcd.setCursor (0, 1); // sets cursor to 2nd line
lcd.print ("Tempo: ");

if (Hcount >= 10)
{
lcd.setCursor (7, 1);
lcd.print (Hcount);
}
if (Hcount < 10)
{
lcd.setCursor (7, 1);
lcd.write (“0”);
lcd.setCursor (8, 1);
lcd.print (Hcount);
}

lcd.print (":");

if (Mcount >= 10)
{
lcd.setCursor (10, 1);
lcd.print (Mcount);
}
if (Mcount < 10)
{
lcd.setCursor (10, 1);
lcd.write (“0”);
lcd.setCursor (11, 1);
lcd.print (Mcount);
}

lcd.print (":");

if (Scount >= 10)
{
lcd.setCursor (13, 1);
lcd.print (Scount);
}
if (Scount < 10)
{
lcd.setCursor (13, 1);
lcd.write (“0”);
lcd.setCursor (14, 1);
lcd.print (Scount);
}

if (Hcount < 0)
{
Hcount = 0;
}

if (Mcount < 0)
{
Hcount --;
Mcount = 59;
}

if (Scount < 1) // if 60 do this operation
{
Mcount --; // add 1 to Mcount
Scount = 59; // reset Scount
}

if (Scount > 0) // do this oper. 59 times
{
unsigned long currentMillis = millis();

if (currentMillis - secMillis > interval)
{
  tone1.play(NOTE_G5, 200);
  secMillis = currentMillis;
  Scount --; // add 1 to Scount
  digitalWrite(ledPin2, HIGH); // sets the LED on
  delay(10); // waits for a second
  digitalWrite(ledPin2, LOW); // sets the LED off
  delay(10); // waits for a second
  //lcd.clear();
}

}
}

Que jogo e esse ?
Estou desenvolviendo alvos para Airsoft para um cliente.

O jogo consiste em tentar desarmar uma bomba relógio , com uma senha é um tempo de explosão determinado. (sirene). figura abaixo

ola estou com uma bomba assim ki montei mas estou com problema de alimentação de energia, uso bateria 9v mas nao dura mas que 1:30H, como vc alimenta a sua?

9v tem. Que ser Duracell ou panasonic , as marcas de recargavel são Porcaria.

Gostaria de montar uma bomba destas para jogarmos, quanto a alimentação da para usar baterias lipi ou litio, para modelismo aero/ auto, tem de varias potencias.

Esta dando ero é código, quando compilo no programa do arduino.

Arduino: 1.8.12 (Windows Store 1.8.33.0) (Windows 10), Placa:“Arduino Uno”

The sketch name had to be modified.
Sketch names must start with a letter or number, followed by letters,
numbers, dashes, dots and underscores. Maximum length is 63 characters.

bomba_airsoft_3:1:10: fatal error: Keypad.h: No such file or directory

#include <Keypad.h>

      ^~~~~~~~~~

compilation terminated.

exit status 1
Keypad.h: No such file or directory

Este relatório teria mais informações com
“Mostrar a saida detalhada durante a compilação”
opção pode ser ativada em “Arquivo -> Preferências”