CÓDIGO DE PROGRAMA
int p [6]; // Array para almacenar la contraseña int c [6]; // Array para almacenar el código de entrada int n; int a = 0; int i = 0; int bloqueo = 3; int r1 = 6; int r2 = 7; int r3 = 8; int R4 = 9; int c1 = 10; c2 int = 11; int c3 = 12; c4 int = 13; int colm1; int colm2; int colm3; int colm4;
void setup () { pinMode (R1, salida); pinMode (R2, salida); pinMode (R3, salida); pinMode (R4, salida); pinMode (c1, INPUT); pinMode (c2, INPUT); pinMode (c3, INPUT); pinMode (c4, INPUT); pinMode (bloqueo, OUTPUT); Serial.begin (9600); // Establece la velocidad de transmisión a 9600 digitalWrite (c1, HIGH); digitalWrite (c2, HIGH); digitalWrite (c3, HIGH); digitalWrite (c4, HIGH); digitalWrite (bloqueo, LOW); p [0] = 1; // Establece 1er dígito de la contraseña p [1] = 2; // Establece segundo dígito de la contraseña p [2] = 3; // Establece 3er dígito de la contraseña p [3] = 4; // Establece cuarto dígito de la contraseña p [4] = 5; // Establece quinto dígito de la contraseña p [5] = 6; // Establece sexto dígito de la contraseña } void loop () { digitalWrite (R1, LOW); digitalWrite (r2, HIGH); digitalWrite (R3, HIGH); digitalWrite (R4, HIGH); colm1 = digitalRead (C1); colm2 = digitalRead (c2); colm3 = digitalRead (c3); colm4 = digitalRead (c4); si (colm1 == LOW) {N = 1; a = 1; Serial.println ( "1"); de retardo (200);} más { si (colm2 == LOW) {N = 2; a = 1; Serial.println ( "2"); de retardo (200);} más { si (colm3 == LOW) {Serial.println ( "3"); n = 3; a = 1; de retardo (200);} más { si (colm4 == LOW) {Serial.println ( "bloqueado"); digitalWrite (bloqueo, LOW); //cabellos i = 0; de retardo (200);} }}}
digitalWrite (R1, HIGH); digitalWrite (r2, LOW); digitalWrite (R3, HIGH); digitalWrite (R4, HIGH); colm1 = digitalRead (C1); colm2 = digitalRead (c2); colm3 = digitalRead (c3); colm4 = digitalRead (c4); si (colm1 == LOW) {Serial.println ( "4"); n = 4; a = 1; de retardo (200);} más { si (colm2 == LOW) {Serial.println ( "5"); n = 5; a = 1; de retardo (200);} más { si (colm3 == LOW) {Serial.println ( "6"); n = 6; a = 1; de retardo (200);} más { si (colm4 == LOW) { si (c [0] == p [0] & c [1] == p [1] & c [2] == p [2] & c [3] == p [3] & c [4] == p [ 4] & c [5] == p [5]) {DigitalWrite (bloqueo, HIGH); // desbloqueos Serial.println ( "ABIERTO"); c [5] = 9;} // corrompe el código en serie c más {Serial.println ( "Contraseña no válida");} de retardo (200);} }}} si (a == 1) // comprobar si se pulsa una tecla numérica { c [i] = n; // Guarda el dígito actual presiona a la matriz c i = i + 1; a = 0;} }DESCARGA EL CÓDIGO DÁNDOME CLICEl sistema se puede conectar a la PC a través del USB y las teclas pulsadas se pueden ver a través de la ventana del monitor de serie del Arduino. La captura de pantalla de la ventana del monitor de serie de este proyecto se muestra en la figura siguiente.Cuando se presiona el botón de bloqueo (Una de las claves en el teclado hexadecimal) la ventana de monitor serie mostrará el mensaje "BLOQUEADO". El código introducido se visualiza también en la ventana. Cuando se pulsa el botón de desbloqueo (b clave en el teclado hexadecimal) la ventana de monitor serie mostrará "ABIERTO". Si el código introducido es erróneo la ventana de monitor serie mostrará el mensaje "Contraseña no válida".