Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Nomear pinos
- #define SS_PIN 10
- #define RST_PIN 9
- #define led01 2 //Led de teste que simula o relê do motor
- #define led02T 3 //Led q simula a trava
- const int botaom = 4;
- // // Incluir bibliotecas
- #include <SPI.h>
- #include <MFRC522.h>
- #include <LiquidCrystal_I2C.h>
- #include <SoftwareSerial.h>
- // // Váriaveis e tabelas
- MFRC522 mfrc522(SS_PIN, RST_PIN); // Cria uma instância para o MFRC522 (RFID).
- LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); //Nomeia os pinos do LCD.
- char st[20];
- byte batend[8] = {0xe, 0x1b, 0x11, 0x11, 0x11, 0x11, 0x1f}; //Simbolo da bateria vazia
- bool estadobotao = LOW;
- bool flag = LOW;
- int cardOk = 0;
- //Sub-Rotinas
- //-----------------------------------------
- void mensageminicial()
- {
- lcd.clear();
- lcd.print(" Smart Bike ");
- lcd.setCursor(0, 1);
- lcd.print("Aproxime o card.");
- }
- //-----------------------------------------//Setup
- void setup()
- {
- Serial.begin(9600);
- pinMode(led01, OUTPUT); //Define led de teste como saída
- pinMode(led02T, OUTPUT);
- pinMode(botaom, INPUT);
- SPI.begin(); // Inicia SPI bus
- mfrc522.PCD_Init(); // Inicia MFRC522
- lcd.begin(16, 2); //Define o número de colunas e linhas do LCD
- lcd.createChar(0, batend);
- mensageminicial();
- }
- //-----------------------------------------//Tarefas em loop infinito
- void loop()
- {
- if ( ! mfrc522.PICC_IsNewCardPresent()) // Procura por novos cartões (linha obrigatoria)
- {
- return;
- }
- if ( ! mfrc522.PICC_ReadCardSerial()) // Seleciona um dos cartões (linha obrigatoria)
- {
- return;
- }
- String conteudo = ""; // Sring para guardar o codigo do cartão lido
- for (byte i = 0; i < mfrc522.uid.size; i++) // Traduz o codigo do cartão para leitura posterior
- {
- conteudo.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " "));
- conteudo.concat(String(mfrc522.uid.uidByte[i], HEX));
- }
- conteudo.toUpperCase(); // Passa o codigo do cartão contido na variavel 'conteudo' para maiusculo
- if (conteudo.substring(1) == "CE 51 D7 73") // Autenticação inicial
- {
- cardOk++;
- }
- else
- {
- lcd.print("Acesso negado");
- delay(3000);
- mensageminicial();
- }
- conteudo = "";
- Serial.print( " cardOk : " );
- Serial.println(cardOk);
- if (cardOk == 1)
- {
- cardOk++;
- delay(300);
- lcd.clear();
- lcd.setCursor(0, 0);
- lcd.print("Ola Wesley !");
- lcd.setCursor(0, 1);
- lcd.print("Acesso liberado!");
- delay(3000);
- lcd.clear();
- lcd.setCursor(14, 0);
- lcd.print((char)0);
- lcd.setCursor(7, 1);
- lcd.print("Motor:OFF");
- digitalWrite(led02T, HIGH);
- }
- Serial.print( " cardOk : " );
- Serial.println(cardOk);
- if (cardOk == 2)
- {
- Serial.println(digitalRead(botaom))
- if (flag == LOW)
- {
- Serial.println(digitalRead(botaom))
- if (digitalRead(botaom) == HIGH) // Se botao foi pressionado
- {
- Serial.println(digitalRead(botaom))
- delay(30); // Debouncing
- if (digitalRead(botaom) == HIGH) // Se botao continua pressionado
- {
- flag = HIGH;
- estadobotao = !estadobotao; // Inverte condicao do botao
- Serial.println(estadobotao);
- }
- }
- }
- if (digitalRead(botaom) == LOW) // Se botao foi pressionado
- {
- delay(30); // Debouncing
- if (digitalRead(botaom) == LOW) // Se botao continua pressionado
- {
- flag = LOW;
- }
- }
- if (estadobotao == LOW) //Se o botão for pressionado enquanto for autenticado
- {
- digitalWrite(led01, LOW); //Acender led
- lcd.setCursor(13, 1);
- lcd.print("OFF"); //Mostrar Motor:On no display
- } //fecha if botao
- else //Se não,
- {
- digitalWrite(led01, HIGH); //Desligar LED
- lcd.setCursor(13, 1);
- lcd.print(" ON"); //Mostrar Motor:OFF
- } //fecha else
- }
- if (cardOk == 3)
- {
- cardOk = 0;
- mensageminicial();
- }
- Serial.print( " cardOk : " );
- Serial.println(cardOk);
- } //fecha loop
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement