Rodrigo_Moraes

acesso_teclado_lcd

Oct 16th, 2018
227
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.88 KB | None | 0 0
  1. // Visual Micro is in vMicro>General>Tutorial Mode
  2. //
  3. /*
  4.     Name:       teclado_senha_display.ino
  5.     Created:    03/10/2018 08:44:53
  6.     Author:     SKYNET\rodri
  7. */
  8.  
  9. #include <Wire.h>
  10. #include <LiquidCrystal_I2C.h>
  11. LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);  // Endereço I2C do display LCD
  12.  
  13. String LINHA1;
  14. char linha1[18];
  15. String LINHA2;
  16. char linha2[18];
  17.  
  18.  
  19. #define LG 2
  20. #define LR 12
  21.  
  22. String senha;
  23. int caracteres = 0;
  24. int tempo = 0;
  25.  
  26. void setup()
  27. {
  28.     //Pinos ligados aos pinos 1, 2, 3 e 4 do teclado - Linhas
  29.     pinMode(3, 1); //1 é saida, 0 é entrada
  30.     pinMode(4, 1);
  31.     pinMode(5, 1);
  32.     pinMode(6, 1);
  33.  
  34.     //Pinos ligados aos pinos 5, 6, 7 e 8 do teclado - Colunas
  35.     pinMode(8, 0);
  36.     pinMode(9, 0);
  37.     pinMode(10, 0);
  38.     pinMode(11, 0);
  39.  
  40.     //LED Vermelho
  41.     pinMode(LR, 1);
  42.  
  43.     //LED Verde
  44.     pinMode(LG, 1);
  45.  
  46.  
  47.     Serial.begin(115200);
  48.  
  49.     lcd.begin(16, 2);
  50.     for (int i = 0; i < 3; i++)
  51.     {
  52.         lcd.backlight();
  53.         delay(250);
  54.         lcd.noBacklight();
  55.         delay(250);
  56.     }
  57.     lcd.backlight();
  58.  
  59.     Serial.println("Aguardando acionamento das teclas...");
  60.     Serial.println();
  61. }
  62.  
  63. void loop()
  64. {
  65.     if (caracteres == 0) {
  66.         lcd.setCursor(0, 1);
  67.         lcd.write("SENHA:          ");
  68.     }
  69.     //Serial.println(tempo);
  70.     if (caracteres > 0) {
  71.         tempo++;
  72.         if (tempo > 1000) {
  73.             Serial.println("Tempo esgotado, apagando senha digitada...");
  74.             senha = "";
  75.             caracteres = 0;
  76.             tempo = 0;
  77.             digitalWrite(LR, 1);
  78.             digitalWrite(LG, 1);
  79.             delay(300);
  80.             digitalWrite(LR, 0);
  81.             digitalWrite(LG, 0);
  82.             delay(300);
  83.             digitalWrite(LR, 1);
  84.             digitalWrite(LG, 1);
  85.             delay(300);
  86.             digitalWrite(LR, 0);
  87.             digitalWrite(LG, 0);
  88.             delay(300);
  89.             digitalWrite(LR, 1);
  90.             digitalWrite(LG, 1);
  91.             delay(300);
  92.             digitalWrite(LR, 0);
  93.             digitalWrite(LG, 0);
  94.             delay(300);
  95.             Serial.println(senha);
  96.         }
  97.     }
  98.     digitalWrite(LR, 1);
  99.     digitalWrite(LG, 0);
  100.     for (int ti = 3; ti < 7; ti++)
  101.     {
  102.         //Alterna o estado dos pinos das linhas
  103.         digitalWrite(3, 0);
  104.         digitalWrite(4, 0);
  105.         digitalWrite(5, 0);
  106.         digitalWrite(6, 0);
  107.         digitalWrite(ti, 1);
  108.         //Verifica se alguma tecla da coluna 1 foi pressionada
  109.         if (digitalRead(8) == 1)
  110.         {
  111.             imprime_linha_coluna(ti - 2, 1);
  112.             while (digitalRead(8) == 1) {}
  113.         }
  114.  
  115.         //Verifica se alguma tecla da coluna 2 foi pressionada    
  116.         if (digitalRead(9) == 1)
  117.         {
  118.             imprime_linha_coluna(ti - 2, 2);
  119.             while (digitalRead(9) == 1) {};
  120.         }
  121.  
  122.         //Verifica se alguma tecla da coluna 3 foi pressionada
  123.         if (digitalRead(10) == 1)
  124.         {
  125.             imprime_linha_coluna(ti - 2, 3);
  126.             while (digitalRead(10) == 1) {}
  127.         }
  128.  
  129.         //Verifica se alguma tecla da coluna 4 foi pressionada
  130.         if (digitalRead(11) == 1)
  131.         {
  132.             imprime_linha_coluna(ti - 2, 4);
  133.             while (digitalRead(11) == 1) {}
  134.         }
  135.     }
  136.     delay(10);
  137.     lcd.setCursor(0, 0);
  138.     lcd.write("STATUS: ");
  139.     lcd.setCursor(7, 0);
  140.     lcd.write("TRANCADO ");
  141. }
  142.  
  143. void imprime_linha_coluna(int x, int y)
  144. {
  145.     tempo = 0;
  146.     Serial.print("Linha : ");
  147.     Serial.print(x);
  148.     Serial.print(" x Coluna : ");
  149.     Serial.print(y);
  150.     delay(10);
  151.     Serial.println();
  152.     if (x == 1) {
  153.         if (y == 1) {
  154.             senha = senha + '1';
  155.         }
  156.         else if (y == 2) {
  157.             senha = senha + '2';
  158.         }
  159.         else if (y == 3) {
  160.             senha = senha + '3';
  161.         }
  162.         else if (y == 4) {
  163.             senha = senha + 'A';
  164.         }
  165.     }
  166.     else if (x == 2) {
  167.         if (y == 1) {
  168.             senha = senha + '4';
  169.         }
  170.         else if (y == 2) {
  171.             senha = senha + '5';
  172.         }
  173.         else if (y == 3) {
  174.             senha = senha + '6';
  175.         }
  176.         else if (y == 4) {
  177.             senha = senha + 'B';
  178.         }
  179.     }
  180.     else if (x == 3) {
  181.         if (y == 1) {
  182.             senha = senha + '7';
  183.         }
  184.         else if (y == 2) {
  185.             senha = senha + '8';
  186.         }
  187.         else if (y == 3) {
  188.             senha = senha + '9';
  189.         }
  190.         else if (y == 4) {
  191.             senha = senha + 'C';
  192.         }
  193.     }
  194.     else if (x == 4) {
  195.         if (y == 1) {
  196.             senha = senha + 'X';
  197.         }
  198.         else if (y == 2) {
  199.             senha = senha + '0';
  200.         }
  201.         else if (y == 3) {
  202.             senha = senha + 'H';
  203.         }
  204.         else if (y == 4) {
  205.             senha = senha + 'D';
  206.         }
  207.     }
  208.  
  209.     Serial.println(senha); 
  210.     lcd.setCursor(0, 1);
  211.     lcd.write("SENHA:");
  212.     lcd.setCursor(6, 1);
  213.     LINHA2 = senha;
  214.     LINHA2.toCharArray(linha2, 5);
  215.     lcd.write(linha2);
  216.  
  217.     caracteres++;
  218.  
  219.     if (caracteres == 4) {
  220.         digitalWrite(LR, 1);
  221.         digitalWrite(LG, 1);
  222.         delay(300);
  223.         digitalWrite(LR, 0);
  224.         digitalWrite(LG, 0);
  225.         delay(300);
  226.         lcd.setCursor(0, 1);
  227.         lcd.write("SENHA:          ");
  228.         digitalWrite(LR, 1);
  229.         digitalWrite(LG, 1);
  230.         delay(300);
  231.         digitalWrite(LR, 0);
  232.         digitalWrite(LG, 0);
  233.         delay(300);
  234.         digitalWrite(LR, 1);
  235.         digitalWrite(LG, 1);
  236.         delay(300);
  237.         digitalWrite(LR, 0);
  238.         digitalWrite(LG, 0);
  239.         delay(300);
  240.         verifica_senha();
  241.     }
  242.     return;
  243. }
  244.  
  245. void verifica_senha() {
  246.     if (senha == "5A2B") {
  247.         lcd.setCursor(7,0);
  248.         lcd.write("LIBERADO!");
  249.         digitalWrite(LR, 0);
  250.         digitalWrite(LG, 1);
  251.         delay(2000);
  252.     }
  253.     else {
  254.         lcd.setCursor(0, 1);
  255.         lcd.write("SENHA INVALIDA  ");
  256.         delay(2000);
  257.     }
  258.     caracteres = 0;
  259.     senha = "";
  260.     return;
  261. }
Advertisement
Add Comment
Please, Sign In to add comment