serratura con keypad

ho un problema ho reliazzato una serratura comandata da un keypad, lo sketch funziona, pero non avendo un tastierino ne ho costruito uno e funziona egregiamente sapete dirmi come modificare questo scketch per inserire un cicalino che emetta dua suoni diversi a seconda se si inserisce il codice sbagliato, e come allungare il codice, anziche 4 cifre 6 o 7 pero solo adesso mi rendo conto che usandola per una serratura elettromagnetica, quando ho inseritoil codice la bobina della serratura rimane sempre sotto tensione c’è un modo perche si disattivi solo il segnale del pin 10 quello relativo alla bobina dopo 2-3 secondi? Grazie ancora e scusate se vi facciio perdere tempo per queste stupidaggini

questo e lo sketch

#include <EEPROM.h>
#include <Keypad.h>

char* secretCode = “1234”;
int position = 0;
boolean locked = true;

const byte rows = 4;
const byte cols = 3;
char keys[rows][cols] = {
{‘1’,‘2’,‘3’},
{‘4’,‘5’,‘6’},
{‘7’,‘8’,‘9’},
{’*’,‘0’,’#’}
};

byte rowPins[rows] = {4, 9, 8, 6};
byte colPins[cols] = {5, 3, 7};
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, rows, cols);

int redPin = 12;
int greenPin = 11;
int solenoidPin = 10;

void setup()
{
pinMode(redPin, OUTPUT);
pinMode(greenPin, OUTPUT);
loadCode();
flash();
updateOutputs();
}

void loop()
{
char key = keypad.getKey();
if (key == ‘*’ && ! locked)
{
// unlocked and * pressed so change code
position = 0;
getNewCode();
updateOutputs();
}
if (key == ‘#’)
{
locked = true;
position = 0;
updateOutputs();
}
if (key == secretCode[position])
{
position ++;
}
if (position == 4)
{
locked = false;
updateOutputs();
}
delay(100);
}

void updateOutputs()
{
if (locked)
{
digitalWrite(redPin, HIGH);
digitalWrite(greenPin, LOW);
digitalWrite(solenoidPin, LOW);
}
else
{
digitalWrite(redPin, LOW);
digitalWrite(greenPin, HIGH);
digitalWrite(solenoidPin, HIGH;
}
}
void getNewCode()
{
flash();
for (int i = 0; i < 4; i++ )
{
char key;
key = keypad.getKey();
while (key == 0)
{
key = keypad.getKey();
}
flash();
secretCode = key;
}
saveCode();
flash();flash();
}
void loadCode()
{
if (EEPROM.read(0) == 1)
{
secretCode[0] = EEPROM.read(1);
secretCode[1] = EEPROM.read(2);
secretCode[2] = EEPROM.read(3);
secretCode[3] = EEPROM.read(4);
}
}
void saveCode()
{
EEPROM.write(1, secretCode[0]);
EEPROM.write(2, secretCode[1]);
EEPROM.write(3, secretCode[2]);
EEPROM.write(4, secretCode[3]);
EEPROM.write(0, 1);
}
void flash()
{
digitalWrite(redPin, HIGH);
digitalWrite(greenPin, HIGH);
delay(500);
digitalWrite(redPin, LOW);
digitalWrite(greenPin, LOW);
}