Bloquear acesso ao Key Pad com sensor fim de curso


#1

Olá, gostaria de saber se é possível bloquear acesso do KEYPAD ao digitar no teclado usando um Sensor fim de Curso?
Seria um caso parecido com duas portas>>>
quando a 1° porta estiver aberta, o acesso ao teclado teria que estar bloqueado impedindo que se digite no teclado para a abertura da 2° porta…
se a porta 1° porta estiver fechada o acesso ao KEYPAD deverá estar acessível para se digitar no teclado e assim abrir a 2° porta.

gostaria de obter uma ajuda.
grato pela atenção…

segue código parcial para melhor análise.

#include <Keypad.h> // Biblioteca para controle do teclado de matrizes.
#include <Servo.h>
const int pino_buzzer = 1;
//int led_vermelho = 0;
Servo servo_Motor; //OBJETO DO TIPO SERVO
// Senha utilizada para acionamento do SERVO_MOTOR.
Password password = Password( “2580” ); // senha de acesso condômino
Password password2 = Password( “3690” ); // senha de emergência

const byte ROWS = 4; // Quatro linhas por…
const byte COLS = 4; // Quatro colunas.

// Define o Keypad (mapa do circuito do teclado).
char keys[ROWS][COLS] = {
{‘1’, ‘2’, ‘3’, ‘A’},
{‘4’, ‘5’, ‘6’, ‘B’},
{‘7’, ‘8’, ‘9’, ‘C’},
{’*’, ‘0’, ‘#’, ‘D’}
};

// Conecta o teclado matricial em linha 0, linha 1, linha 2, linha 3 e linha 4…
//dos pinos do arduino.
byte rowPins[ROWS] = {9,8,7,6};
//byte rowPins[ROWS] = {4, 5, 6, 7};

// Conecta o teclado matricial em coluna 0, coluna 1, coluna 2, coluna 3 e…
//coluna 4 do arduino.
byte colPins[COLS] = {12,11,10,5};
//byte colPins[COLS] = {12, 11, 10, 9};

// Cria um objeto Keypad.
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);
//------------------------------------------
void setup()
{
//pinMode(pino_buzzer, OUTPUT);
//pinMode(led_vermelho, OUTPUT);
Serial.begin(9600); // Inicializa Serial Monitor.
keypad.addEventListener(keypadEvent);
keypad.setDebounceTime(250);
servo_Motor.attach(3); //PINO DE CONTROLE DO SERVO MOTOR
Serial.println("Inicializado: ");
}
//------------------------------------------
void loop()
{
keypad.getKey();
}
//------------------------------------------
void keypadEvent(KeypadEvent eKey)
{
switch (keypad.getState()) // Condição switch…
{
case PRESSED: // Se precionado algum botão…
Serial.print("Digitado: "); // Aparecera no Serial Monitor, Digitado: “X”.
Serial.println(eKey); // Armazena numero digitado na variável eKey.
switch (eKey)
{
case ‘C’: guessPassword(); // Pressionando “C” confirma se a senha foi digitado corretamente.
break;
default:
password.append(eKey);
password2.append(eKey);
}
}
}
//------------------------------------------
void guessPassword()
{
Serial.print("Verificando, aguarde… "); // Informa no Serial Monitor “Verificando, aguarde…”.
if (password.evaluate())
{
Serial.println("Acesso Permitido… "); // Informa no Serial Monitor “Acesso Permitido…”.
servo_Motor.write(90); // SERVO Gº (ABRANCELA)
delay(5000); // Motor fica aberto por 5 segundos…
servo_Motor.write(-90); // SERVO GIRA A 90º (FECHAR CANCELA)
password.reset(); // Apaga a senha.
}
else
{
//Serial.println(“Senha Invalida !”);
password.reset(); // Apaga a senha.
}
if (password2.evaluate()) //SENHA DE SEGURANÇA ou EMERGÊNCIA
{
{ tone(pino_buzzer,300);
delay(1500);
noTone(pino_buzzer);

}
Serial.println("Senha Seguranca OK... ");       // Informa no Serial Monitor "Senha Segurança...".
//digitalWrite(led_vermelho, HIGH);
//delay(1500);
//digitalWrite(led_vermelho, LOW);
servo_Motor.write(90);                          // SERVO GIRA A 90º (ABRIR CANCELA)
delay(5000);                                    // Motor fica aberto por 5 segundos...
servo_Motor.write(-90);                         // SERVO GIRA A 90º (FECHAR CANCELA)
password2.reset();                              // Apaga a senha.

}
else
{
Serial.println(“Senha Invalida !”);
password2.reset(); // Apaga a senha.
}
}