daily pastebin goal
16%
SHARE
TWEET

Untitled

a guest Sep 24th, 2018 69 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <Keypad.h> // BIBLIOTECA DO TECLADO MATRIZ 4X3
  2. #include <Servo.h> // BIBLIOTECA SERVO MOTOR
  3. #include <Wire.h> // BIBLIOTECA PADRÃO
  4. #include <LiquidCrystal_I2C.h>   // BIBLIOTECA DA TELA LCD COM ADAPTADOR I2C
  5. #include <SPI.h> // BIBLIOTECA UTILIZADA PARA RFID
  6. #include <MFRC522.h> // BIBLIOTECA DO LEITOR RFID RC522
  7. LiquidCrystal_I2C lcd(0x3F,2,1,0,4,5,6,7,3, POSITIVE); // PADRÃO DE CONTROLE DA TELA LCD
  8. #define SS_PIN 53 // DEFININDO O PINO SS NA PORTA 53
  9. #define RST_PIN 5 // DEFININDO O PINO RST NA PORTA 5
  10. MFRC522 mfrc522(SS_PIN, RST_PIN);  // DECLARANDO A VARIAVEL DA BIBLIOTECA RFID
  11.  
  12.     Servo servo_Motor; // DECLARANDO VARIAVEL SERVO MOTOR
  13.     String senha = "1408";  // DECLARANDO VARIAVEL SENHA
  14.     int position = 0; //VARIÁVEL PARA LEITURA DE POSIÇÃO DA TECLA PRESSIONADA
  15.     const byte ROWS = 4; //NUMERO DE LINHAS DO TECLADO
  16.     const byte COLS = 3; //NUMERO DE COLUNAS DO TECLADO
  17.     char keys[ROWS][COLS] = { //DECLARAÇÃO DOS NUMEROS, LETRAS E CARACTERES DO TECLADO
  18.     {'1','2','3'},
  19.     {'4','5','6'},
  20.     {'7','8','9'},
  21.     {'*','0','#'}
  22.     };
  23.  
  24.     byte rowPins[ROWS] = { 31, 33, 35, 37 }; // PINOS DE CONEXAO DAS LINHAS DO TECLADO
  25.     byte colPins[COLS] = { 39, 41, 43 }; //PINOS DE CONEXAO DAS COLUNAS DO TECLADO
  26.     Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );//AS VARIAVEIS rowPins E colPins RECEBERÃO O VALOR DE LEITURA DOS PINOS DAS LINHAS E COLUNAS RESPECTIVAMENTE
  27.  
  28.     const int ledVermelho = 7;  // DECLARANDO LED VERMELHO NO PINO 7 DA PLACA
  29.     const int ledAzul = 3; // DECLARANDO LED AZUL NO PINO 3 DA PLACA
  30.     const int speakerPin = 10; // DECLARANDO O SPEAKER NO PINO 10 DA PLACA
  31.  
  32.     void setup(){
  33.  
  34.     lcd.begin (16,2); // INICIANDO O LCD DE 16X2
  35.     Serial.begin(9600);   // INICIA A COMUNICAÇÃO SERIAL EM 9600 BAUD RATE
  36.    
  37.     SPI.begin();          // INICIA A COMUNICAÇÃO SPI
  38.     mfrc522.PCD_Init();   // INICIA MFRC522
  39.          
  40.     pinMode(ledVermelho, OUTPUT); // DECLARANDO LEDVERMELHO COMO OUTPUT
  41.     pinMode(ledAzul, OUTPUT); // DECLARANDO LEDAZUL COMO OUTPUT
  42.     pinMode(speakerPin, OUTPUT); // DECLARANDO SPEAKER COMO OUTPUT
  43.     servo_Motor.attach(2);  // DECLARANDO SERVO MOTOR NO PINO 2
  44.     setLocked(true); // CHAMANDO A FUNÇÃO SETLOCKED COMO TRUE PARA INICIAR O PROGRAMA COM A 'PORTA FECHADA'
  45.    
  46.     }//  FIM SETUP
  47.  
  48.     void loop()
  49.     {
  50.  
  51.      char key = keypad.getKey(); //LEITURA DAS TECLAS PRESSIONADAS
  52.       if (key == '*' || key == '#') { //SE A TECLA PRESSIONADA POR IGUAL A CARACTERE "*" OU "#", FAZ
  53.           position = 0; //POSIÇÃO DE LEITURA DA TECLA PRESSIONADA INICIA EM 0
  54.           setLocked(true); //FECHADURA TRANCADA
  55.            
  56.       } // FIM IF
  57.       if (key == senha[position]){ //SE A TECLA PRESSIONADA CORRESPONDER A SEQUÊNCIA DA SENHA, FAZ
  58.            position ++;//PULA PARA A PRÓXIMA POSIÇÃO
  59.       } // FIM IF
  60.       if (position == 4){ // SE VARIÁVEL FOR IGUAL A 3 FAZ (QUANDO AS TECLAS PRESSIONADAS CHEGAREM A 3 POSIÇÕES, SIGNIFICA QUE A SENHA ESTÁ CORRETA)
  61.             setLocked(false); //FECHADURA DESTRANCADA
  62.             position = 0; // VARIAVEL DE LEITURA DA TECLA RECEBE VALOR 0
  63.       }  // FIM IF
  64.  
  65.    // INICIO DO CÓDIGO RFID  
  66.     if ( ! mfrc522.PICC_IsNewCardPresent()) // FAZENDO A LEITURA DO CARTÃO
  67.       {
  68.     return; // RETORNA
  69.   } // FIM IF
  70.  
  71.     if ( ! mfrc522.PICC_ReadCardSerial())   // SELECIONA UM DOS CARTÕES
  72.       {
  73.     return; // RETORNA
  74.   } //  FIM IF
  75.  
  76.     String conteudo= ""; // DECLARANDO A VARIAVEL CONTEUDO COMO UMA STRING VAZIA
  77.     byte letra; // CRIANDO A VARIAVEL LETRA DO TIPO BYTE
  78.    
  79.   for (byte i = 0; i < mfrc522.uid.size; i++)  // RECUPERANDO O CÓDIGO DA TAG E CARTÃO
  80.   {
  81.      Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ");
  82.      Serial.print(mfrc522.uid.uidByte[i], HEX);
  83.      conteudo.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ")); // ARMAZENANDO NA VARIAVEL CONTEUDO
  84.      conteudo.concat(String(mfrc522.uid.uidByte[i], HEX)); // ARMAZENANDO NA VARIAVEL CONTEUDO
  85.   } // FIM FOR
  86.  
  87.     conteudo.toUpperCase(); // ATRIBUINDO CAIXA ALTA NA VARIAVEL CONTEUDO
  88.  
  89.  
  90.   if (conteudo.substring(1) == "B0 7D E0 87") //UID 1 - CHAVEIRO. SE O VALOR RETORNADO FOR ESSE A FUNÇÃO SETLOCKED SERÁ ACIONADA COMO FALSE QUE INDICA A PORTA ABERTA
  91.   {
  92.         setLocked(false); // CHAMANDO A FUNÇÃO SETLOCKED COMO FALSE
  93.      
  94.   } // FIM IF
  95.  
  96.   if (conteudo.substring(1) == "1B 8D B1 AB") //UID 2 - CARTÃO. SE O VALOR RETORNADO FOR ESSE A FUNÇÃO SETLOCKED SERÁ ACIONADA COMO FALSE QUE INDICA A PORTA ABERTA
  97.   {
  98.         setLocked(false); // CHAMANDO A FUNÇÃO SETLOCKED COMO FALSE
  99.    
  100.   } // FIM IF
  101.  
  102.     } // FIM LOOP
  103.    
  104.    
  105.     void setLocked(int locked){ //INICIO DA FUNÇÃO SETLOCKED QUE TRATA O ESTADO DA FECHADURA
  106.     if (locked){ //SE FECHADURA TRANCADA, FAZ
  107.         lcd.clear(); // LIMPA A TELA DO LCD
  108.         digitalWrite(ledVermelho, HIGH); // LIGA O LED VERMELHO
  109.         digitalWrite(ledAzul, LOW); // APAGA O LED AZUL
  110.         servo_Motor.write(0); //POSIÇÃO DO SERVO FICA EM 0º
  111.        
  112.         lcd.setBacklight(HIGH); // ACENDE O FUNDO DA TELA LCD
  113.         lcd.setCursor(0,0); // ACIONA A PRIMERA LINHA DA TELA LCD
  114.         lcd.print(" PORTA FECHADA!"); // ESCREVE NA PRIMEIRA LINHA A FRASE
  115.  
  116.          tone(speakerPin, 3000); // ACIONA O SPEAKER COM O TOM AGUDO 3000
  117.          delay(500); //ESPERA 0.5 SEC
  118.          tone(speakerPin,1500); // ACIONA O SPEAKER COM O TOM AGUDO 1500
  119.          delay(500); // ESPERA 0.5 SEC
  120.          tone(speakerPin, 1000); // ACIONA O SPEAKER COM O TOM AGUDO 1000
  121.          delay(500); // ESPERA 0.5 SEC
  122.          noTone(speakerPin); // PARA DE APITAR O SPEAKER
  123.     } // FIM IF
  124.     else { // SE NÃO
  125.         lcd.clear(); // LIMPA TELA LCD
  126.         digitalWrite(ledAzul, HIGH); // ACENDE LED AZUL
  127.         digitalWrite(ledVermelho, LOW); // DESLIGA LED VERMELHO
  128.         servo_Motor.write(90);// SERVO GIRA A 90º
  129.        
  130.         lcd.setBacklight(HIGH); // ACENDE O FUNDO DA TELA LCD
  131.         lcd.setCursor(0,0); // CHAMA A PRIMERA LINHA DA TELA LCD
  132.         lcd.print("  PORTA ABERTA      "); // ESCREVE NA PRIMEIRA LINHA A FRASE
  133.         lcd.setCursor(0,1); // CHAMA A SEGUNDA LINHA DA TELA LCD
  134.         lcd.print("WWW.CODFY.COM.BR"); // ESCREVE NA SEGUNDA LINHA A FRASE
  135.        
  136.          tone(speakerPin, 1000); // ACIONA O SPEAKER COM O TOM AGUDO 1000
  137.          delay(500); // ESPERA 0.5 SEC
  138.          tone(speakerPin,1500); // ACIONA O SPEAKER COM O TOM AGUDO 1500
  139.          delay(500); // ESPERA 0.5 SEC
  140.          tone(speakerPin, 3000); // ACIONA O SPEAKER COM O TOM AGUDO 3000
  141.          delay(500); // ESPERA 0.5 SEC
  142.          noTone(speakerPin); // PARA DE APITAR O SPEAKER
  143.          delay(3000); // ESPERA 3SEC
  144.          setLocked(true); // CHAMA A FUNÇÃO COMO TRUE 'FECHANDO A PORTA'
  145.        
  146.        
  147.     } //FIM SENÃO
  148. } // FIM SETLOCKED
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top