Advertisement
M0n5t3r

ArduinoCode_Proftaak_CardScanner

Jan 11th, 2018
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 7.42 KB | None | 0 0
  1. #include <Arduino.h>
  2. #include <U8x8lib.h>
  3. #include <SPI.h>
  4. #include <MFRC522.h>
  5.  
  6. constexpr uint8_t RST_PIN = 9;     // Configurable, see typical pin layout above
  7. constexpr uint8_t SS_PIN = 10;     // Configurable, see typical pin layout above
  8.  
  9. MFRC522 mfrc522(SS_PIN, RST_PIN);   // Create MFRC522 instance.
  10.  
  11. MFRC522::MIFARE_Key key;
  12. U8X8_SSD1306_128X64_NONAME_SW_I2C u8x8(A5, A4, U8X8_PIN_NONE);
  13.  
  14. int buttonState = 0;
  15. int buttonPin = 7;
  16. bool conn = false;
  17. bool stopClear = false;
  18.  
  19. void setup() {
  20.   // put your setup code here, to run once:
  21.   //OLED
  22.   u8x8.begin();
  23.   u8x8.setPowerSave(0);
  24.   u8x8.setFlipMode(0);
  25.   u8x8.setFont(u8x8_font_pxplusibmcgathin_f);
  26.  
  27.   delay(500);
  28.   //Deel 2
  29.   Serial.begin(9600);
  30.   SPI.begin();        // Init SPI bus
  31.   mfrc522.PCD_Init(); // Init MFRC522 card
  32.  
  33.   u8x8.clear();
  34.   u8x8.drawString(0, 0, "Klaar om een");
  35.   u8x8.drawString(0, 1, "Kaart te scannen");
  36. }
  37.  
  38. void loop() {
  39.   buttonState = digitalRead(buttonPin);
  40.   if (buttonState == HIGH) {
  41.     Serial.println("&ButtonHIGH");
  42.   }
  43.  
  44.   if (conn == false) {
  45.     u8x8.drawString(0, 4, "Geen connectie");
  46.   }
  47.  
  48.   if (Serial.available()) {
  49.     digitalWrite(4, HIGH);
  50.     String reader =  Serial.readString();
  51.  
  52.     if (reader.indexOf("STARTEDUP") > 0) {
  53.       u8x8.clear();
  54.       u8x8.drawString(0, 0, "Connectie");
  55.       u8x8.drawString(0, 1, "gemaakt");
  56.       conn = true;
  57.       delay(4000);
  58.       u8x8.clear();
  59.       u8x8.drawString(0, 0, "Klaar om een");
  60.       u8x8.drawString(0, 1, "Kaart te scannen");
  61.     }
  62.     if (reader.indexOf("PARKING") > 0) {
  63.       u8x8.drawString(0, 0, "Auto wordt");
  64.       u8x8.drawString(0, 1, "geparkeerd");
  65.       delay(4000);
  66.       u8x8.drawString(0, 0, "Klaar om een");
  67.       u8x8.drawString(0, 1, "Kaart te scannen");
  68.     }
  69.     if (reader.indexOf("ERROR") > 0) {
  70.       u8x8.drawString(0, 0, "Er was een");
  71.       u8x8.drawString(0, 1, "Error opeens..");
  72.       delay(4000);
  73.       u8x8.clear();
  74.       u8x8.drawString(0, 0, "Klaar om een");
  75.       u8x8.drawString(0, 1, "Kaart te scannen");
  76.     }
  77.     if (reader.indexOf("UNKNOWNUSER") > 0) {
  78.       u8x8.clear();
  79.       u8x8.drawString(0, 0, "Kaart niet");
  80.       u8x8.drawString(0, 1, "herkent");
  81.       delay(4000);
  82.       u8x8.clear();
  83.       u8x8.drawString(0, 0, "Klaar om een");
  84.       u8x8.drawString(0, 1, "Kaart te scannen");
  85.     }
  86.     if (reader.indexOf("NOMONEY") > 0) {
  87.       u8x8.clear();
  88.       u8x8.drawString(0, 0, "Niet genoeg geld");
  89.       delay(4000);
  90.       u8x8.clear();
  91.       u8x8.drawString(0, 0, "Klaar om een");
  92.       u8x8.drawString(0, 1, "Kaart te scannen");
  93.     }
  94.     if (reader.indexOf("UNPARK") > 0) {
  95.       u8x8.clear();
  96.       u8x8.drawString(0, 0, "Auto wordt");
  97.       u8x8.drawString(0, 1, "gehaald");
  98.       Serial.println("@refresh");
  99.       delay(4000);
  100.       u8x8.clear();
  101.       u8x8.drawString(0, 0, "Klaar om een");
  102.       u8x8.drawString(0, 1, "Kaart te scannen");
  103.     }
  104.     if (reader.indexOf("UNPARKED") > 0) {
  105.       u8x8.clear();
  106.       float money = reader.indexOf('|');
  107.       u8x8.drawString(0, 0, "Auto gehaald");
  108.       u8x8.drawString(0, 1, "balans: ");
  109.       u8x8.setCursor(9, 1);
  110.       u8x8.print(String(money));
  111.       delay(2000);
  112.       u8x8.clear();
  113.       u8x8.drawString(0, 0, "Klaar om een");
  114.       u8x8.drawString(0, 1, "Kaart te scannen");
  115.     }
  116.     if (reader.indexOf("SCAN") > 0) {
  117.       u8x8.clear();
  118.       int moneyIndex = reader.indexOf('|');
  119.       int  moneyIndex2 = reader.indexOf('|', moneyIndex + 1);
  120.       String money = reader.substring(moneyIndex , moneyIndex2);
  121.       u8x8.drawString(0, 0, "Kaart gescanned");
  122.       u8x8.drawString(0, 2, "balans: ");
  123.       u8x8.setCursor(8, 2);
  124.       u8x8.print(String(money));
  125.  
  126.       bool parked;
  127.       if (reader.indexOf(" USERPARKED") > 0) {
  128.         u8x8.drawString(0, 3, "Klik op de knop ");
  129.         u8x8.drawString(0, 4, "om uw auto ");
  130.         u8x8.drawString(0, 5, "op te halen");
  131.         parked = true;
  132.         Serial.println("&parked = true");
  133.       } else if (reader.indexOf(" USERNOTPARKED") > 0) {
  134.         u8x8.drawString(0, 3, "Klik op de knop ");
  135.         u8x8.drawString(0, 4, "om uw auto ");
  136.         u8x8.drawString(0, 5, "te parkeren");
  137.         parked = false;
  138.         Serial.println("&parked = false");
  139.       }
  140.  
  141.       //wachten voor pushbutton om te parkeren
  142.       bool timeOut = false;
  143.       int counter;
  144.       while (timeOut == false) {
  145.         buttonState = digitalRead(buttonPin);
  146.         if (buttonState == HIGH) {
  147.           timeOut = true;
  148.           Serial.println("&Ding is ook klaar");
  149.           delay(200);
  150.           if (parked == false) {
  151.             Serial.println("@parkeren ");
  152.           } else if (parked == true) {
  153.             Serial.println("@unparken ");
  154.           }
  155.           u8x8.clear();
  156.           delay(500);
  157.         }
  158.         counter++;
  159.         delay(10);
  160.         if (counter == 700) {
  161.           Serial.println("&Counter is ook klaar");
  162.           timeOut = true;
  163.           u8x8.clear();
  164.           u8x8.drawString(0, 0, "Klaar om een");
  165.           u8x8.drawString(0, 1, "Kaart te scannen");
  166.         }
  167.       }
  168.     }
  169.  
  170.  
  171.     if (reader.indexOf("ABO") > 0) {
  172.       Serial.println("&User scanned");
  173.       u8x8.drawString(0, 0, "Kaart gescanned");
  174.       u8x8.drawString(0, 1, "Type: Abonnement. ");
  175.  
  176.       bool parked;
  177.       if (reader.indexOf(" USERPARKED") > 0) {
  178.         u8x8.drawString(0, 3, "Klik op de knop om");
  179.         u8x8.drawString(0, 4, "Auto op te halen");
  180.         parked = true;
  181.         Serial.println("&parked = true");
  182.       } else if (reader.indexOf(" USERNOTPARKED") > 0) {
  183.         u8x8.drawString(0, 3, "Klik op de knop om");
  184.         u8x8.drawString(0, 4, "Auto te parkeren");
  185.         parked = false;
  186.         Serial.println("&parked = false");
  187.       }
  188.  
  189.       //wachten voor pushbutton om te parkeren
  190.       bool timeOut = false;
  191.       int counter;
  192.       while (timeOut == false) {
  193.         buttonState = digitalRead(buttonPin);
  194.         if (buttonState == HIGH) {
  195.           timeOut = true;
  196.           Serial.println("&Ding is ook klaar");
  197.           delay(200);
  198.           if (parked == false) {
  199.             Serial.println("@parkeren ");
  200.           } else if (parked == true) {
  201.             Serial.println("@unparken ");
  202.           }
  203.           u8x8.clear();
  204.           delay(500);
  205.         }
  206.         counter++;
  207.         delay(10);
  208.         if (counter == 700) {
  209.           Serial.println("&Counter is ook klaar");
  210.           timeOut = true;
  211.           u8x8.clear();
  212.           u8x8.drawString(0, 0, "Klaar om een");
  213.           u8x8.drawString(0, 1, "Kaart te scannen");
  214.         }
  215.       }
  216.     }
  217.     delay(100);
  218.     digitalWrite(4, LOW);
  219.   } else {
  220.     // put your main code here, to run repeatedly:
  221.     if ( ! mfrc522.PICC_IsNewCardPresent())
  222.       return;
  223.     if ( ! mfrc522.PICC_ReadCardSerial()) {
  224.       return;
  225.     } else {
  226.       MFRC522::StatusCode status;
  227.  
  228.       byte buffer[16];
  229.       byte block;
  230.       byte size = sizeof(buffer);
  231.       byte len;
  232.  
  233.       String content = "";
  234.       for (byte i = 0; i < mfrc522.uid.size; i++)
  235.       {
  236.         content.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " "));
  237.         content.concat(String(mfrc522.uid.uidByte[i], HEX));
  238.       }
  239.       content.toUpperCase();
  240.       Serial.println("#" + content);
  241.       delay(1000);
  242.     }
  243.   }
  244. }
  245.  
  246. void dump_byte_array(byte *buffer, byte bufferSize) {
  247.   for (byte i = 0; i < bufferSize; i++) {
  248.     Serial.print(buffer[i] < 0x10 ? " 0" : " ");
  249.     Serial.print(buffer[i], HEX);
  250.   }
  251. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement