# Bloquear acesso ao Key Pad com sensor fim de curso

**URL:** <https://forum.fazedores.com/t/bloquear-acesso-ao-key-pad-com-sensor-fim-de-curso/5170>\
**Category:** Arduino\
**Created:** [Fevereiro 14, 2018, 6:53pm UTC](https://forum.fazedores.com/t/bloquear-acesso-ao-key-pad-com-sensor-fim-de-curso/5170 "2018-02-14T18:53:57Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![HelioTakeo\_Aisawa](https://sea2.discourse-cdn.com/flex016/user_avatar/forum.fazedores.com/heliotakeo_aisawa/32/2242_2.png) [@HelioTakeo\_Aisawa](https://forum.fazedores.com/u/HelioTakeo_Aisawa)\
**Post date:** [Fevereiro 14, 2018, 6:53pm UTC](https://forum.fazedores.com/t/bloquear-acesso-ao-key-pad-com-sensor-fim-de-curso/5170/1 "2018-02-14T18:53:57Z")

</div>

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](https://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.  
}  
}

---

<div class="post-metadata">

**Author:** ![StramCast](https://avatars.discourse-cdn.com/v4/letter/s/a698b9/32.png) [@StramCast](https://forum.fazedores.com/u/StramCast)\
**Post date:** [Fevereiro 3, 2019, 4:04am UTC](https://forum.fazedores.com/t/bloquear-acesso-ao-key-pad-com-sensor-fim-de-curso/5170/2 "2019-02-03T04:04:21Z")

</div>

Para que serve o servo motor na sua aplicação? Provavelmente o procedimento keypadEvent, é chamado em algum momento dentro do método getKey(), se for isso mesmo, é só você colocá-lo dentro de uma estrutura condicional:

if(portaAberta())  
{  
Serial.println(“Teclado bloqueado”);  
}  
else  
{  
Serial.println(“Teclado liberado”);  
keypad.getKey();  
}
