Advertisement
Rodrigo_Moraes

acesso_teclado_lcd

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