Advertisement
RuiViana

SmartBike_V04

Aug 21st, 2018
309
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.87 KB | None | 0 0
  1. //Nomear pinos
  2.  
  3. #define SS_PIN 10
  4. #define RST_PIN 9
  5. #define led01 2                                                     //Led de teste que simula o relê do motor
  6. #define led02T 3                                                    //Led q simula a trava
  7. const int botaom = 4;
  8. //                                                                  // Incluir bibliotecas
  9. #include <SPI.h>
  10. #include <MFRC522.h>
  11. #include <LiquidCrystal_I2C.h>
  12. #include <SoftwareSerial.h>
  13. //                                                                  // Váriaveis e tabelas
  14. MFRC522 mfrc522(SS_PIN, RST_PIN);                                   // Cria uma instância para o MFRC522 (RFID).
  15. LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);      //Nomeia os pinos do LCD.
  16. char st[20];
  17. byte batend[8] = {0xe, 0x1b, 0x11, 0x11, 0x11, 0x11, 0x1f};         //Simbolo da bateria vazia
  18. bool estadobotao = LOW;
  19. bool flag = LOW;
  20. int cardOk = 0;
  21. //Sub-Rotinas
  22. //-----------------------------------------
  23. void mensageminicial()
  24. {
  25.     lcd.clear();
  26.     lcd.print("   Smart Bike   ");
  27.     lcd.setCursor(0, 1);
  28.     lcd.print("Aproxime o card.");
  29. }
  30. //-----------------------------------------//Setup
  31. void setup()
  32. {
  33.   Serial.begin(9600);
  34.   pinMode(led01, OUTPUT);                               //Define led de teste como saída
  35.   pinMode(led02T, OUTPUT);
  36.   pinMode(botaom, INPUT);
  37.   SPI.begin();                                          // Inicia  SPI bus
  38.     mfrc522.PCD_Init();                                   // Inicia MFRC522
  39.   lcd.begin(16, 2);                                     //Define o número de colunas e linhas do LCD
  40.   lcd.createChar(0, batend);
  41.   mensageminicial();
  42. }
  43. //-----------------------------------------//Tarefas em loop infinito
  44. void loop()
  45. {
  46.     if ( ! mfrc522.PICC_IsNewCardPresent())               // Procura por novos cartões (linha obrigatoria)
  47.     {
  48.       return;
  49.     }
  50.     if ( ! mfrc522.PICC_ReadCardSerial())                 // Seleciona um dos cartões (linha obrigatoria)
  51.     {
  52.       return;
  53.     }
  54.  
  55.   String conteudo = "";                                 // Sring para guardar o codigo do cartão lido
  56.  
  57.     for (byte i = 0; i < mfrc522.uid.size; i++)           // Traduz o codigo do cartão para leitura posterior
  58.     {
  59.       conteudo.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " "));
  60.       conteudo.concat(String(mfrc522.uid.uidByte[i], HEX));
  61.     }
  62.     conteudo.toUpperCase();                                       // Passa o codigo do cartão contido na variavel 'conteudo' para maiusculo
  63.   if (conteudo.substring(1) == "CE 51 D7 73")  // Autenticação inicial
  64.   {
  65.     cardOk++;
  66.   }
  67.   else
  68.   {
  69.     lcd.print("Acesso negado");
  70.     delay(3000);
  71.     mensageminicial();
  72.   }
  73.  
  74.   conteudo = "";
  75.   Serial.print( " cardOk : " );
  76.   Serial.println(cardOk);
  77.   if (cardOk == 1)
  78.   {
  79.     cardOk++;
  80.     delay(300);
  81.     lcd.clear();
  82.     lcd.setCursor(0, 0);
  83.     lcd.print("Ola Wesley !");
  84.     lcd.setCursor(0, 1);
  85.     lcd.print("Acesso liberado!");
  86.     delay(3000);
  87.     lcd.clear();
  88.     lcd.setCursor(14, 0);
  89.     lcd.print((char)0);
  90.     lcd.setCursor(7, 1);
  91.     lcd.print("Motor:OFF");
  92.     digitalWrite(led02T, HIGH);
  93.   }
  94.   Serial.print( " cardOk : " );
  95.   Serial.println(cardOk);
  96.   if (cardOk == 2)
  97.   {
  98.     Serial.println(digitalRead(botaom))
  99.     if (flag == LOW)
  100.     {
  101.       Serial.println(digitalRead(botaom))
  102.       if (digitalRead(botaom) == HIGH)                      // Se botao foi pressionado
  103.       {
  104.         Serial.println(digitalRead(botaom))
  105.         delay(30);                                          // Debouncing
  106.         if (digitalRead(botaom) == HIGH)                    // Se botao continua pressionado
  107.         {
  108.           flag = HIGH;
  109.           estadobotao = !estadobotao;                       // Inverte condicao do botao
  110.           Serial.println(estadobotao);
  111.         }
  112.       }
  113.     }
  114.  
  115.     if (digitalRead(botaom) == LOW)                      // Se botao foi pressionado
  116.     {
  117.       delay(30);                                          // Debouncing
  118.       if (digitalRead(botaom) == LOW)                    // Se botao continua pressionado
  119.       {
  120.         flag = LOW;
  121.       }
  122.     }
  123.     if (estadobotao == LOW)          //Se o botão for pressionado enquanto for autenticado
  124.     {
  125.       digitalWrite(led01, LOW);      //Acender led
  126.       lcd.setCursor(13, 1);
  127.       lcd.print("OFF");               //Mostrar Motor:On no display
  128.     }                                 //fecha if botao
  129.     else                              //Se não,
  130.     {
  131.       digitalWrite(led01, HIGH);       //Desligar LED
  132.       lcd.setCursor(13, 1);
  133.       lcd.print(" ON");               //Mostrar Motor:OFF
  134.     }                                 //fecha else
  135.   }
  136.  
  137.   if (cardOk == 3)
  138.   {
  139.     cardOk = 0;
  140.     mensageminicial();
  141.   }
  142.   Serial.print( " cardOk : " );
  143.   Serial.println(cardOk);
  144. }                                       //fecha loop
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement