Advertisement
Villalba2006

POST_29

Nov 25th, 2016
3,038
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 5.42 KB | None | 0 0
  1. /*  TITULO: Descifrar código secreto con teclado matricial 4x3.
  2.  
  3.     AUTOR:
  4.    
  5.     MARIANO DEL CAMPO GARCÍA (@2016) --> INGENIERO TÉCNICO INDUSTRIAL ESPECIALIDAD ELECTRÓNICA
  6.     - FACEBOOK: https://www.facebook.com/mariano.delcampogarcia
  7.     - TWITTER: https://twitter.com/MarianoCampoGa
  8.     - CORREO: marianodc83@gmail.com
  9.    
  10.    
  11.     DESCRIPCIÓN DEL PROGRAMA
  12.    
  13.     Con este programa seremos capaces o no de descifrar un código secreto introduciendo códigos de 4 digitos
  14.     a través de un teclado matricial 4x3.
  15.     - Si el código introducido coincide con la clave secreta, se enciende el LED Verde.
  16.     - Si el código introducido no coincide con la clave secreta, se enciende o mantiene encendido el LED Rojo.
  17.     Para resetear o bloquear el sistema tenemos que pulsar "*" o "#". A través del monitor serie podemos ir
  18.     observando los códigos introducidos así como el mensaje de "sistema desbloqueado" cuando esto sucede.
  19.    
  20.    
  21.     ESQUEMA DE CONEXION
  22.    
  23.                                       +-----+
  24.          +----[PWR]-------------------| USB |--+
  25.          |                            +-----+  |
  26.          |         GND/RST2  [ ][ ]            |
  27.          |       MOSI2/SCK2  [ ][ ]  A5/SCL[ ] |    
  28.          |          5V/MISO2 [ ][ ]  A4/SDA[ ] |    
  29.          |                             AREF[ ] |
  30.          |                              GND[ ] |
  31.          | [ ]N/C                    SCK/13[ ] |   LED_Rojo(+)
  32.          | [ ]IOREF                 MISO/12[ ] |   LED_Verde(+)
  33.          | [ ]RST                   MOSI/11[ ]~|  
  34.          | [ ]3V3    +---+               10[ ]~|  
  35.          | [ ]5v    -| A |-               9[ ]~|  
  36.          | [ ]GND   -| R |-               8[ ] |   Pin 7 del teclado matricial 4x3
  37.          | [ ]GND   -| D |-                    |
  38.          | [ ]Vin   -| U |-               7[ ] |   Pin 6 del teclado matricial 4x3
  39.          |          -| I |-               6[ ]~|   Pin 5 del teclado matricial 4x3
  40.          | [ ]A0    -| N |-               5[ ]~|   Pin 4 del teclado matricial 4x3
  41.          | [ ]A1    -| O |-               4[ ] |   Pin 3 del teclado matricial 4x3
  42.          | [ ]A2     +---+           INT1/3[ ]~|   Pin 2 del teclado matricial 4x3
  43.          | [ ]A3                     INT0/2[ ] |   Pin 1 del teclado matricial 4x3
  44.          | [ ]A4/SDA  RST SCK MISO     TX>1[ ] |  
  45.          | [ ]A5/SCL  [ ] [ ] [ ]      RX<0[ ] |  
  46.          |            [ ] [ ] [ ]              |
  47.          |  UNO_R3    GND MOSI 5V  ____________/
  48.           \_______________________/
  49.  
  50.   NOTAS:
  51.  
  52.    - Cátodo del LED_Rojo(-) y LED_Verde(-) a GND a través de una R=220 omhs (cada uno una diferente).
  53.  
  54. */
  55.  
  56.  
  57.   // Añadimos la librería keypad  
  58.   #include <Keypad.h>
  59.  
  60.   char* codigoSecreto = "1234"; // Código secreto
  61.   int posicion = 0; // Posición inicial del Código secreto
  62.  
  63.   // Creamos una constante para definir que nuestro teclado tiene 4 filas  
  64.   const byte filas = 4;
  65.   // Creamos una constante para definir que nuestro teclado tiene 3 columnas  
  66.   const byte columnas = 3;
  67.   // Creamos una matriz con los caracteres del teclado
  68.   char teclas[filas][columnas] =
  69.   {
  70.     {'1','2','3'},
  71.     {'4','5','6'},
  72.     {'7','8','9'},
  73.     {'*','0','#'}
  74.   };
  75.  
  76.   // Indicamos a que pines de Arduino están conectadas las filas del teclado  
  77.   byte pinFilas[filas] = {3, 8, 7, 5};
  78.   // Indicamos a que pines de Arduino están conectadas las columnas
  79.   byte pinColumnas[columnas] = {4, 2, 6};  
  80.   // Creamos un objeto de la librería keypad para usar sus funciones
  81.   Keypad keypad = Keypad(makeKeymap(teclas), pinFilas, pinColumnas, filas, columnas);
  82.  
  83.   int LED_Rojo = 13; // Pin digital para el LED Rojo
  84.   int LED_Verde = 12; // Pin digital para el LED Verde
  85.  
  86.   void setup()                    
  87.   {
  88.     Serial.begin(9600);  // Iniciamos la conexión por el puerto serie a 9600 baudios
  89.     pinMode(LED_Rojo, OUTPUT); // Pin digital 13 como salida
  90.     pinMode(LED_Verde, OUTPUT); // Pin digital 12 como salida
  91.     bloqueoActivo(true);  // Sistema bloqueado
  92.   }
  93.  
  94.   void loop()                    
  95.   {
  96.     // Cuando se pulse una tecla, se guardará en la variable "tecla"
  97.     char tecla = keypad.getKey();
  98.    
  99.     // Si se ha pulsado una tecla, se envía por el puerto serie
  100.     if (tecla != NO_KEY)
  101.     {  
  102.       Serial.print(tecla);  // Mostramos la tecla pulsada
  103.     }
  104.    
  105.     // Si se ha pulsado '*' o '#'
  106.     if (tecla == '*' || tecla == '#')
  107.     {
  108.       Serial.print("\n");  
  109.       posicion = 0; // Posición inicial del Código secreto
  110.       bloqueoActivo(true); // Sistema bloqueado
  111.     }
  112.    
  113.     // Si el carácter leído coincide con el del código secreto
  114.     if (tecla == codigoSecreto[posicion])
  115.     {
  116.       posicion ++; //Incrementa en 1 la posición del código secreto
  117.     }
  118.     //Si hemos llegado a la posición 4 del código secreto
  119.     if (posicion == 4)
  120.     {
  121.       bloqueoActivo(false); // Sistema desbloqueado
  122.       Serial.print(" >>> Sistema desbloqueado!!!");  
  123.     }
  124.     delay(100); // Retardo de 100ms
  125.   }
  126.  
  127.   void bloqueoActivo(int bloqueo)
  128.   {
  129.     // Si el sistema está bloqueado
  130.     if (bloqueo)
  131.     {
  132.       digitalWrite(LED_Rojo, HIGH); // LED Rojo activado
  133.       digitalWrite(LED_Verde, LOW); // LED Verde desactivado
  134.     }
  135.      // Si el sistema está desbloqueado
  136.     else
  137.     {
  138.       digitalWrite(LED_Rojo, LOW); // LED Rojo desactivado
  139.       digitalWrite(LED_Verde, HIGH); // LED Verde activado    
  140.     }
  141.   }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement