Ano dificil, cheio de lutas, mas com vitorias de certa forma, porque vi que tudo nessa vida e um aprendizado e percebi que souvfirte e se outra tempestade vier, sei que sou capaz de suportar. Acreditar, crer sempre!Fim de ano costumo fazer presentinhos...pra nao dizer que nao fiz nada, fiz 2 bate mao pra uma colega trabalho e outro pra minha casa. Nesse exemplo o primeiro cartao e lido e seu numero de serie e armazenado em uma variavel.Depois ao aproximar um cartao, este e lido e seu numero e comparado com o numero armazenado. Se forem iguais mostra a mensagem " ACESSO LIBERADO" caso contrario mostra "ACESSO NEGADO".Como e um programa teste nao me preocupei em armazenamento nao volatil do numero de serie do cartao valido. Para uso real sera necessario, pro exemplo, alterar o codigo para armazenar o numero de serie do cartao "valido" na memoria eprom do arduino.Material utilizado:Modulo RFID MFRC522 (datasheet)Arduino UNO (foi usado um similar)Display LCD 16x2 com modulo I2C.JumpersLigacao:Codigo:/* adaptado do codigo que acompanha a biblioteca MFRC522:https://github.com/ljos/MFRC522Este exemplo armazena o numero primeiro cartao lido em uma variavelA partir ao aproximar um catao e feita a comparacao entre o valor lido do cartao e o valor armazenado.As informacoes sao mostrada em um display 16x2 via comunicacao I2C.*/// bibliotecas#include <SPI.h> // padrao do arduino#include <MFRC522.h> // necessario adicionar na pasta libraries do arduino#include <Wire.h> // padrao do arduino#include <LiquidCrystal_I2C.h> // necessario adicionar na pasta libraries do arduinoLiquidCrystal_I2C lcd(0x27,16,2);#define SS_PIN 10#define RST_PIN 9MFRC522 mfrc522(SS_PIN, RST_PIN); // cria uma intancia MFRC522 com o nome mfrc522int *aux;int card1[4];int flag = 0;int led = 13;int cnt =0;void setup() { pinMode(led, OUTPUT); lcd.init(); lcd.backlight(); SPI.begin(); // Init SPI bus mfrc522.PCD_Init(); // Init MFRC522 card lcd.print(" Aproxime o card"); lcd.setCursor(0,1); lcd.print(" Para registro ");}void loop() { // Look for new cards if ( ! mfrc522.PICC_IsNewCardPresent()) { return; } // Select one of the cards if ( ! mfrc522.PICC_ReadCardSerial()) { return; } // Now a card is selected. The UID and SAK is in mfrc522.uid. // Dump UID for (byte i = 0; i < mfrc522.uid.size; i++) { aux[i]= mfrc522.uid.uidByte[i]; } if(flag == 0) { lcd.clear(); lcd.print(" Card UID: "); lcd.setCursor(0,1); for (byte i = 0; i < mfrc522.uid.size; i++) { card1[i] = aux[i]; lcd.print( card1[i], DEC); lcd.print( " "); flag =1; } delay(3000); lcd.clear(); lcd.print(" Aproxime o card"); lcd.setCursor(0,1); lcd.print(" Para Acesso "); } else{ for (byte i = 0; i < mfrc522.uid.size; i++) { if(aux[i] == card1[i]) cnt++; } if(cnt == mfrc522.uid.size-1) { lcd.clear(); lcd.print(" ACESSO "); lcd.setCursor(0,1); lcd.print(" PERMITIDO "); delay(2000); } else { lcd.clear(); lcd.print(" ACESSO "); lcd.setCursor(0,1); lcd.print(" NEGADO "); delay(2000); } } lcd.clear(); lcd.print(" Aproxime o card"); lcd.setCursor(0,1); lcd.print(" Para Acesso "); cnt=0;} Esse sensor e bastante simples. Consiste basicamente de dois contatos proximos, um fixo e outro ligado a uma mola. Havendo vibracao suficiente para fazer a mola tocar o contato fixo, causada por uma batida no sensor ou na superficie em que ele esteja fixado, por exemplo, a saida, normalmente em nivel alto (vcc), vai momentaneamente ao nivel baixo (GND).O sensor:Abaixo o diagrama do sensor:Em seguida a