RuiViana

SenhaV03.ino

Dec 11th, 2018
195
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <SPI.h>
  2. #include <SD.h>
  3. #include <Wire.h>
  4. #include <LiquidCrystal_I2C.h>
  5. #include <EEPROM.h>
  6. #include <SoftwareSerial.h>
  7. #define botao 9
  8. bool flag = LOW;
  9.  
  10. File myFile;
  11. File myFile2;
  12. int acao = 0;
  13. int del = 1;
  14. int cont = 0;
  15. int regresso = 0;
  16. int gravar = 0;
  17.  
  18. int istatus = 0;
  19. int config = 0;
  20.  
  21. int contador = EEPROM.read(1);
  22. int contrast = EEPROM.read(10);
  23.  
  24. ///Portas do Diplay
  25. LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); //modelo para display 16x2 LiquidCrystal_I2C lcd(0x3F,2,1,0,4,5,6,7,3, POSITIVE); 20x4
  26.  
  27. //Portas do Bluetoosh
  28. SoftwareSerial portOne(A0, A1);
  29.  
  30. void setup()
  31. {
  32.   Serial.begin(9600);
  33.   portOne.begin(9600);
  34.  
  35.   if (contrast == 0) {
  36.     EEPROM.write(10, 85 );
  37.     contrast = EEPROM.read(10);
  38.   }
  39.   lcd.setBacklight(HIGH);///Brilho da Visor
  40.  
  41.   lcd.begin(16, 2);
  42.   lcd.print("Iniciando...");
  43.   if (!SD.begin(4)) { ////PINO SDCS do Leitor SD
  44.     lcd.clear();
  45.     lcd.setCursor(0, 0);
  46.     lcd.print("Falha ao Iniciar");
  47.     lcd.setCursor(0, 1);
  48.     lcd.print("Cartao Ausente!");
  49.     delay(999999999);
  50.     return;
  51.   }
  52.  
  53.   pinMode(13, OUTPUT);
  54.   pinMode(10, OUTPUT);
  55.   pinMode(botao, INPUT_PULLUP);
  56.   pinMode(3, OUTPUT); //Pino do buzzer
  57.  
  58.   pinMode(A2, INPUT);
  59.   pinMode(A3, INPUT);
  60.  
  61.   digitalWrite(A2, HIGH);
  62.   digitalWrite(A3, HIGH);
  63.  
  64.   delay(1000);
  65.   lcd.clear();
  66.  
  67. }
  68.  
  69. void loop()
  70. {
  71.   if (!digitalRead(botao)) {
  72.     digitalWrite (10, LOW); // Significa que o LED será ligado.
  73.     for (int i = 0 ; i < EEPROM.length() ; i++) {
  74.       EEPROM.write(i, 0);
  75.     }
  76.     lcd.clear();
  77.     lcd.setCursor(3, 0);
  78.     lcd.print("RESET TOTAL!");
  79.     lcd.setCursor(5, 1);
  80.     lcd.print("Aguarde....");
  81.     delay(5000);
  82.     asm volatile ("  jmp 0");
  83.   }
  84.  
  85.   if (digitalRead(A2) == LOW) {
  86.         flag = HIGH;
  87.     EEPROM.write(1, (contador + 1) );
  88.     contador = EEPROM.read(1);
  89.     istatus = 1;
  90.     lcd.clear();
  91.     lcd.setCursor(0, 0);
  92.     lcd.print("PRONTO OBRIGADO!");
  93.     lcd.setCursor(5, 1);
  94.     lcd.print("Aguarde....");
  95.  
  96.     tone(3, 262, 200); //DO
  97.     delay(200);
  98.     tone(3, 294, 300); //RE
  99.     delay(200);
  100.     tone(10, 330, 300); //MI
  101.     delay(200);
  102.     tone(3, 349, 300); //FA
  103.     delay(300);
  104.     tone(3, 349, 300); //FA
  105.     delay(300);
  106.     tone(3, 349, 300); //FA
  107.     delay(300);
  108.     tone(3, 262, 100); //DO
  109.     delay(200);
  110.     tone(3, 294, 300); //RE
  111.     delay(200);
  112.     tone(3, 262, 100); //DO
  113.     delay(200);
  114.     tone(3, 294, 300); //RE
  115.     delay(300);
  116.     tone(3, 294, 300); //RE
  117.     delay(300);
  118.     tone(3, 294, 300); //RE
  119.     delay(300);
  120.     tone(310, 262, 200); //DO
  121.     delay(200);
  122.     tone(3, 392, 200); //SOL
  123.     delay(200);
  124.     tone(3, 349, 200); //FA
  125.     delay(200);
  126.     tone(3, 330, 300); //MI
  127.     delay(300);
  128.     tone(3, 330, 300); //MI
  129.     delay(300);
  130.     tone(3, 330, 300); //MI
  131.     delay(300);
  132.     tone(3, 262, 200); //DO
  133.     delay(200);
  134.     tone(3, 294, 300); //RE
  135.     delay(200);
  136.     tone(30, 330, 300); //MI
  137.     delay(200);
  138.     tone(3, 349, 300); //FA
  139.     delay(300);
  140.     tone(3, 349, 300); //FA
  141.     delay(300);
  142.     tone(3, 349, 300); //FA
  143.     delay(300);
  144.   }
  145.  
  146.   if (digitalRead(A3) == LOW) {
  147.     if (flag == HIGH)
  148.     {
  149.       lcd.clear();
  150.       lcd.setCursor(0, 0);
  151.       lcd.print("..ULTIMA SENHA!.");
  152.       delay(3000);
  153.       istatus = 1;
  154.       flag = LOW;
  155.     }
  156.   }
  157.  
  158.   if (istatus == 0) {
  159.  
  160.     if (cont == 1) {
  161.       digitalWrite (10, HIGH); // Significa que o LED será ligado.
  162.       lcd.clear();
  163.       lcd.setCursor(0, 0);
  164.       lcd.print(">ACESSE O WIFI<"); // Tela de Menu Inicial
  165.       lcd.setCursor(0, 1);
  166.       lcd.print("PRESSIONE BOTAO!");
  167.     }
  168.     if (cont == 500) {
  169.       lcd.setCursor(0, 3);
  170.       lcd.print("                ");
  171.  
  172.     }
  173.  
  174.   }
  175.   if (istatus == 1) {
  176.     if (cont == 1) {
  177.       digitalWrite (10, LOW); // Significa que o LED será Apagado.
  178.       lcd.clear();
  179.       lcd.setCursor(0, 0);
  180.       lcd.print("DIGITE A SENHA:");
  181.       lcd.setCursor(0, 1);
  182.       lcd.print(codigos(contador));
  183.       lcd.print(" /TEMPO:");
  184.       lcd.print(30 - regresso);
  185.     }
  186.     if (cont == 350) {
  187.       //lcd.setCursor(0, 0);
  188.  
  189.  
  190.     }
  191.  
  192.     if (regresso == 30) {
  193.       istatus = 0;
  194.       regresso = 0;
  195.       lcd.clear();
  196.       lcd.setCursor(1, 0);
  197.       lcd.print("AGRADECEMOS A");
  198.       lcd.setCursor(1, 1);
  199.       lcd.print("PREFERENCIAS!");
  200.       delay(3000);
  201.       istatus = 0;
  202.     }
  203.  
  204.  
  205.     if (cont == 999) {
  206.       regresso = regresso + 1;
  207.     }
  208.  
  209.   }
  210.  
  211.  
  212.   delay(1);
  213.   cont++;
  214.   if (cont >= 1000) {
  215.     cont = 0;
  216.   }
  217.  
  218.  
  219.   if (portOne.available()) {
  220.     char r = portOne.read();
  221.  
  222.     if (r == 'c') {
  223.       EEPROM.write(1, (contador + 1) );
  224.       contador = EEPROM.read(1);
  225.       istatus = 1;
  226.       lcd.clear();
  227.       lcd.setCursor(0, 0);
  228.       lcd.print("SENHA BLUETOOTH");
  229.       lcd.setCursor(0, 1);
  230.       lcd.print("Aguarde.........");
  231.       delay(200);
  232.       tone(3, 262, 200); //DO
  233.       delay(200);
  234.       tone(3, 294, 300); //RE
  235.       delay(200);
  236.       tone(10, 330, 300); //MI
  237.       delay(200);
  238.       tone(3, 349, 300); //FA
  239.       delay(300);
  240.       tone(3, 349, 300); //FA
  241.       delay(300);
  242.       tone(3, 349, 300); //FA
  243.       delay(300);
  244.       tone(3, 262, 100); //DO
  245.       delay(200);
  246.       tone(3, 294, 300); //RE
  247.       delay(200);
  248.       tone(3, 262, 100); //DO
  249.       delay(200);
  250.       tone(3, 294, 300); //RE
  251.       delay(300);
  252.       tone(3, 294, 300); //RE
  253.       delay(300);
  254.       tone(3, 294, 300); //RE
  255.       delay(300);
  256.       tone(310, 262, 200); //DO
  257.       delay(200);
  258.       tone(3, 392, 200); //SOL
  259.       delay(200);
  260.       tone(3, 349, 200); //FA
  261.       delay(200);
  262.       tone(3, 330, 300); //MI
  263.       delay(300);
  264.       tone(3, 330, 300); //MI
  265.       delay(300);
  266.       tone(3, 330, 300); //MI
  267.       delay(300);
  268.       tone(3, 262, 200); //DO
  269.       delay(200);
  270.       tone(3, 294, 300); //RE
  271.       delay(200);
  272.       tone(30, 330, 300); //MI
  273.       delay(200);
  274.       tone(3, 349, 300); //FA
  275.       delay(300);
  276.       tone(3, 349, 300); //FA
  277.       delay(300);
  278.       tone(3, 349, 300); //FA
  279.       delay(300);
  280.  
  281.     }
  282.  
  283.  
  284.     if (r == '(') {
  285.       gravar = 1;
  286.     }
  287.     if (r == ')') {
  288.       gravar = 0;
  289.     }
  290.  
  291.     if (gravar == 1) {
  292.  
  293.       if (del == 1) {
  294.         myFile.close();
  295.         delay(10);
  296.         SD.remove("CODIGOS.TXT");
  297.         delay(10);
  298.  
  299.         EEPROM.write(1, 0);
  300.         contador = EEPROM.read(1);
  301.  
  302.         del = 0;
  303.       }
  304.  
  305.       myFile = SD.open("CODIGOS.TXT", FILE_WRITE);
  306.       if (myFile) {
  307.         myFile.print(r);
  308.         myFile.close();
  309.       }
  310.     }
  311.  
  312.     if (config == 1) {
  313.  
  314.       if (del == 1) {
  315.         myFile.close();
  316.         delay(10);
  317.         SD.remove("CODIGOS.TXT");
  318.         delay(10);
  319.  
  320.         EEPROM.write(1, 0);
  321.         contador = EEPROM.read(1);
  322.  
  323.         del = 0;
  324.       }
  325.  
  326.       myFile = SD.open("CODIGOS.TXT", FILE_WRITE);
  327.       if (myFile) {
  328.         myFile.print(r);
  329.         myFile.close();
  330.       }
  331.     }
  332.  
  333.     acao = 1;
  334.   } else {
  335.     //lcd.clear();
  336.     acao = 0;
  337.     del  = 1;
  338.   }
  339.  
  340. }
  341.  
  342.  
  343. String codigos(int num) {
  344.  
  345.   myFile = SD.open("CODIGOS.TXT");
  346.   if (myFile) {
  347.  
  348.     String conteudo;
  349.     int x = 0;
  350.     while (myFile.available()) {
  351.  
  352.       char caractere = myFile.read();
  353.       if (caractere != ',') {
  354.         conteudo.concat(caractere);
  355.       } else {
  356.  
  357.         x++;
  358.         if (num == x) {
  359.           myFile.close();
  360.           return conteudo;
  361.         }
  362.         conteudo = "";
  363.  
  364.       }
  365.  
  366.     }
  367.  
  368.     lcd.clear();
  369.     lcd.setCursor(0, 0);
  370.     lcd.print("MAQUINA OFF-LINE");
  371.     lcd.setCursor(1, 1);
  372.     lcd.print("Proibido Usar!");
  373.     delay(999999999);
  374.   }
  375.  
  376. }
RAW Paste Data