/* Con questo sketch è possibile fare accendere un led verde che indica il riconoscimento della tessera e commuta per 2 secondi il relè sul pin 2 led blu nel secondo passaggio accende il led verde che indica il riconoscimento della tessera e commuta per 2 secondi il relè sul pin 5 led giallo al passaggio di una tessera magnetica sul lettore RFID se la tessera non viene riconosciuta si accende un led rosso per indicarci l`inaccessibilità . e non commuta alcun relè, PINOUT: RC522 MODULO Uno/Nano SDA D10 SCK D13 MOSI D11 MISO D12 IRQ N/A GND GND RST D9 3.3V 3.3V led verde al Pin 3 Led rosso al Pin 4 Led giallo al Pin 5 Led blu al Pin 2 */ #include #include /* Vengono definiti PIN del RFID reader*/ #define SDA_DIO 10 #define RESET_DIO 9 #define delayRead 1000 // Tempo #define delayLed 1000 #define ledVerde 3 #define ledRosso 4 #define ledGiallo 5 #define ledBlu 2 /* Viene creata una istanza della RFID libreria */ RFID RC522(SDA_DIO, RESET_DIO); // inserire tutti i codici esadecimali delle schede magnetiche riconosciute String codiceAutorizzato1 = "2ABE459140"; String codiceAutorizzato2 = "EB9F68C8D4"; String codiceAutorizzato3 = "C0FF1C1A39"; String codiceAutorizzato4 = "4236E61082"; String codiceAutorizzato5 = "3DA7904248"; String codiceAutorizzato6 = "35C1F4C2C2"; void setup() { Serial.begin(9600); /* Abilita SPI*/ SPI.begin(); /* Viene inizilizzato RFID reader */ RC522.init(); Serial.println("Setup"); pinMode(ledVerde,OUTPUT); pinMode(ledRosso,OUTPUT); pinMode(ledGiallo,OUTPUT); pinMode(ledBlu,OUTPUT); } void loop() { /* Temporary loop counter */ byte i; // Se viene letta una tessera if (RC522.isCard()) { // Viene letto il suo codice RC522.readCardSerial(); String codiceLetto =""; Serial.println("Codice delle tessera letto:"); // Viene caricato il codice della tessera, all'interno di una Stringa for(i = 0; i <= 4; i++) { codiceLetto+= String (RC522.serNum[i],HEX); codiceLetto.toUpperCase(); } Serial.println(codiceLetto); if(verificaCodice(codiceLetto,codiceAutorizzato1)||verificaCodice(codiceLetto,codiceAutorizzato2) ||verificaCodice(codiceLetto,codiceAutorizzato3)||verificaCodice(codiceLetto,codiceAutorizzato4) ||verificaCodice(codiceLetto,codiceAutorizzato5)||verificaCodice(codiceLetto,codiceAutorizzato6)){ Serial.println("Tessera autorizzata")||verificaCodice(codiceLetto,codiceAutorizzato4); accendiLed(ledVerde); digitalWrite (ledBlu, HIGH); delay (2000); // Tempo relè in stato ON digitalWrite (ledBlu, LOW); }else{ Serial.println("Tessera non autorizzata"); accendiLed(ledRosso); } delay(delayRead); } /* Temporary loop counter */ // Se viene letta una tessera if (RC522.isCard()) { // Viene letto il suo codice RC522.readCardSerial(); String codiceLetto =""; Serial.println("Codice delle tessera letto:"); // Viene caricato il codice della tessera, all'interno di una Stringa for(i = 0; i <= 4; i++) { codiceLetto+= String (RC522.serNum[i],HEX); codiceLetto.toUpperCase(); } Serial.println(codiceLetto); if(verificaCodice(codiceLetto,codiceAutorizzato1)||verificaCodice(codiceLetto,codiceAutorizzato2) ||verificaCodice(codiceLetto,codiceAutorizzato3)||verificaCodice(codiceLetto,codiceAutorizzato4) ||verificaCodice(codiceLetto,codiceAutorizzato5)||verificaCodice(codiceLetto,codiceAutorizzato6)){ Serial.println("Tessera autorizzata")||verificaCodice(codiceLetto,codiceAutorizzato4); accendiLed(ledVerde); digitalWrite (ledGiallo, HIGH); delay (2000); // Tempo relè in stato ON digitalWrite (ledGiallo, LOW); }else{ Serial.println("Tessera non autorizzata"); accendiLed(ledRosso); } delay(delayRead); } } // Questa funzione verifica se il codice Letto è autorizzato boolean verificaCodice(String codiceLetto, String codiceAutorizzato){ if(codiceLetto.equals(codiceAutorizzato)){ return true; }else{ return false; } } // Questa funzione permette di accendere un LED per un determinato periodo void accendiLed(int ledPin){ digitalWrite(ledPin,HIGH); delay(delayLed); digitalWrite(ledPin,LOW); }