//LCD #include // libary voor een LCD sherm toevoegen LiquidCrystal lcd(12, 11, 10, 5, 4, 3, 8); // declareren van de pinnen die voor het lcd scherm worden gebruikt #include // libary om virtueel een RX en TX te maken i.p.v pin 0 en 1 #include // libary om strings te kunnen gebruiken voor RFID #include // libary om servo's te kunnen aansturen //RFID variabelen int val = 0; // declareer val en maak hem 0 int bytesread = 0; // declareer bytesread en maak hem 0 int result; // uitkomst van de vergelijking a_alex - a_code int result1; // uitkomst van de vergelijking a_remco - a_code int result2; // uitkomst van de vergelijking a_jorick - a_code int result3; // uitkomst van de vergelijking a_kompanje - a_code char a_code[10]; char a_remco[] = "38002124FA"; // de code van de tag die ontvangen wordt door de RFIDreader char a_alex[] = "17007E7ED1"; // de code van de tag die ontvangen wordt door de RFIDreader char a_jorick[] = "17007E6EF4"; // de code van de tag die ontvangen wordt door de RFIDreader char a_kompanje[] = "38002247C5"; // de code van de tag die ontvangen wordt door de RFIDreader #define rxPin 7 // RFID reader SOUT pin verbonden met Serial RX pin op 2400bps aan pin7 #define txPin 6 // Wordt niet gebruikt maar moet wel gedeclareed worden //SERVO variabelen Servo servo1; // maak een servo object om een servo te kunnen aansturen int waarde; // waarde voor een vergelijking bij de servo loops int graden; // waarde die de graden aangeeft die de servo moet draaien void setup() { Serial.begin(9600); // Hardware serial voor Monitor 9600bps waarde = 0; // zet waarde naar 0; graden = 0; // zet graden naar 0; lcd.setCursor( 0, 0); // zet de cursor naar rij 0 kolom 0 op de het lcd scherm lcd.print("Gebrnm:"); // print op rij 0 Gebrnm: servo1.attach(9); // koppeld de servo op pin 9 aan het servo object } void loop() { SoftwareSerial RFID = SoftwareSerial(rxPin,txPin); // het aanmaken van de variabele RFID (aan de virtuele rx en tx pin) RFID.begin(2400); // begin met het uitlezen van de virtuele rx en tx pin if((val = RFID.read()) == 10) { // zoek naar header bytesread = 0; while(bytesread<10) { // lees de 10 cijferige code val = RFID.read(); if(val == 10) { // als de tag geen 10 cijferige code heeft voer dit uit break; // stop reading } a_code[bytesread] = val; // voeg de cijfer/letter toe aan a_code bytesread++; // klaar om de volgende byte te lezen } if(bytesread == 10) { // als alle 10 bytes zijn gelezen voer dit uit waarde = 0; // maak "waarde" 0 voor het gebruik van de servo's graden = 0; // maak "graden" 0 voor het gebruik van de servo's } result = memcmp(a_alex, a_code, 10); // vergelijk in het geheugen a_alex met a_code alle 10 de bytes if( result == 0 ){ // als de waarde gelijk is dan wordt result 0 Serial.println("alex"); // als result 0 is dan print "alex" naar de pc lcd.setCursor( 7, 0); // zet de cursor op rij 0 kolom 7 lcd.print("Alex"); // print op die positie "Alex" delay(100); // wacht 100ms lcd.setCursor(0,1); // zet de cursor op rij 1 kolom 0 lcd.print("Geen Toegang"); // print op die positie "Geen Toegang" } result1 = memcmp(a_code, a_remco, 10); // vergelijk in het geheugen a_remco met a_code alle 10 de bytes if( result1 == 0){ // als de waarde gelijk is dan wordt result 0 Serial.println("remco"); // als result 0 is dan print "remco" naar de pc lcd.setCursor( 7, 0); // zet de cursor op rij 0 kolom 7 lcd.print("Remco"); // print op die positie "Remco" lcd.setCursor(0,1); // zet de cursor op rij 1 kolom 0 lcd.print("Welkom"); // print op die positie "Welkom" while (waarde <90){ // zolang waard kleiner is dan 90 doe onderstaande if (waarde < 90){ // als waarde kleiner is dan 90 doe onderstaande if(graden >= 0){ // als graden gelijk of groter is dan 0 doe onderstaande graden++; // graden = graden + 1 servo1.write(graden); // schijf naar de servo de "graden" die hij moet draaien delay(50); // wacht 50ms waarde = graden; // waarde is gelijk aan graden } } if(graden == 90){ // als graden gelijk is aan 90 dan doe onderstaande delay(500); // wacht 500ms } if (waarde == 90){ // als waarde gelijk is dan 90 doe onderstaande graden--; // graden = graden - 1 servo1.write(graden); // schijf naar de servo de "graden" die hij moet draaien delay(50); // wacht 50ms } if (graden == 0){ // als graden is gelijk aan 0 dan doe onderstaande waarde = 89; // geef "waarde" de waarde 89 } if (graden == 0){ // als graden gelijk is aan 0 dan doe onderstaande delay(500); // wacht 500ms } } } result2 = memcmp(a_code, a_jorick, 10); // vergelijk in het geheugen a_jorick met a_code alle 10 de bytes if( result2 == 0){ // als de waarde gelijk is dan wordt result 0 Serial.println("Jorick"); // als result 0 is dan print "jorick" naar de pc lcd.setCursor( 7, 0); // zet de cursor op rij 0 kolom 7 lcd.print("Jorick"); // print op die positie "Jorick lcd.setCursor(0,1); // zet de cursor op rij 1 kolom 0 lcd.print("Welkom"); // print op die positie "Welkom" while (waarde <90){ // zolang waard kleiner is dan 90 doe onderstaande if (waarde < 90){ // als waarde kleiner is dan 90 doe onderstaande if(graden >= 0){ // als graden gelijk of groter is dan 0 doe onderstaande graden++; // graden = graden + 1 servo1.write(graden); // schijf naar de servo de "graden" die hij moet draaien delay(50); // wacht 50ms waarde = graden; // waarde is gelijk aan graden } } if(graden == 90){ // als graden gelijk is aan 90 dan doe onderstaande delay(500); // wacht 500ms } if (waarde == 90){ // als waarde gelijk is dan 90 doe onderstaande graden--; // graden = graden - 1 servo1.write(graden); // schijf naar de servo de "graden" die hij moet draaien delay(50); // wacht 50ms } if (graden == 0){ // als graden is gelijk aan 0 dan doe onderstaande waarde = 89; // geef "waarde" de waarde 89 } if (graden == 0){ // als graden gelijk is aan 0 dan doe onderstaande delay(500); // wacht 500ms } } } result3 = memcmp(a_code, a_kompanje, 10); // vergelijk in het geheugen a_kompanje met a_code alle 10 de bytes if( result3 == 0){ // als de waarde gelijk is dan wordt result 0 Serial.println("Kompanje"); // als result 0 is dan print "Kompanje" naar de pc lcd.setCursor( 7, 0); // zet cursor op rij 0 kolom 7 lcd.print("Kompanje"); // print op die positie "Kompanje" Serial.println(101,BYTE); // code voor het aansturen van logoff van de laptop lcd.setCursor(0,1); // zet cursor op rij 1 kolom 0 lcd.print("Geen Toegang tot PC"); // print op die positie "Geen Toegang tot PC" lcd.setCursor(0,1); // zet cursor op rij 1 kolom 0 delay(2500); // wacht 2500ms lcd.print(" "); // maak de 2 karakters breede lcd scherm leeg (rij 1, kolom 0 - 20) lcd.setCursor(0,1); // zet cursor op rij 1 kolom 0 lcd.print("Welkom"); // print op die positie "Welkom" while (waarde <90){ // zolang waard kleiner is dan 90 doe onderstaande if (waarde < 90){ // als waarde kleiner is dan 90 doe onderstaande if(graden >= 0){ // als graden gelijk of groter is dan 0 doe onderstaande graden++; // graden = graden + 1 servo1.write(graden); // schijf naar de servo de "graden" die hij moet draaien delay(50); // wacht 50ms waarde = graden; // waarde is gelijk aan graden } } if(graden == 90){ // als graden gelijk is aan 90 dan doe onderstaande delay(500); // wacht 500ms } if (waarde == 90){ // als waarde gelijk is dan 90 doe onderstaande graden--; // graden = graden - 1 servo1.write(graden); // schijf naar de servo de "graden" die hij moet draaien delay(50); // wacht 50ms } if (graden == 0){ // als graden is gelijk aan 0 dan doe onderstaande waarde = 89; // geef "waarde" de waarde 89 } if (graden == 0){ // als graden gelijk is aan 0 dan doe onderstaande delay(500); // wacht 500ms } } } if ((result != 0) && (result1 != 0) && (result2 != 0) && (result3 != 0)){ // als bij result 0 t/m 3 overal geen 0 uit komt dan doe onderstaande Serial.println("Geen Toegang"); // print "Geen Toegang" naar de pc lcd.setCursor( 7, 0); // zet cursor op rij 0 kolom 7 lcd.print("Ongeldige Pas"); // print op die positie "ongeldige pas" lcd.setCursor(0,1); // zet cursor op rij 1 kolom 0 lcd.print("Geen Toegang"); // print op die positie "Geen Toegang" } bytesread = 0; // maak bytesread 0 delay(2500); // wacht 2500ms lcd.setCursor( 7, 0); // zet cursor op rij 0 kolom 7 lcd.print(" "); // maak rij 0 leeg van de LCD vanaf kolom 7 lcd.setCursor(0,1); // zet cursor op rij 1 kolom 0 lcd.print(" "); // maak rij 1 helemaal leeg } }