Advertisement
muezza29

beli token v4

Jul 11th, 2019
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 6.31 KB | None | 0 0
  1. // Library NFC
  2. #include <Wire.h>
  3. #include <SPI.h>
  4. #include <Adafruit_PN532.h>
  5.  
  6. #define PN532_SCK  (PA5)
  7. #define PN532_MOSI (PA7)
  8. #define PN532_SS   (PA4)
  9. #define PN532_MISO (PA6)
  10. #define PN532_IRQ   (2)
  11. #define PN532_RESET (3)
  12.  
  13.  
  14. // Library OLED
  15. #include "Arduino.h"
  16. #include "Wire.h"
  17. #include "Adafruit_GFX.h"
  18. #include "Adafruit_SSD1306.h"
  19.  
  20. #define OLED_RESET 4
  21. Adafruit_SSD1306 display(OLED_RESET);
  22.  
  23. Adafruit_PN532 nfc(PN532_SCK, PN532_MISO, PN532_MOSI, PN532_SS);
  24.  
  25. #if defined(ARDUINO_ARCH_SAMD)
  26. #define Serial SerialUSB
  27. #endif
  28.  
  29. void setup(void)
  30. {
  31. #ifndef ESP8266
  32. #endif
  33.   Serial.begin(115200);
  34.   Serial.println("Hello Arif!");
  35.  
  36.   nfc.begin();
  37.  
  38.   uint32_t versiondata = nfc.getFirmwareVersion();
  39.   if (! versiondata) {
  40.     Serial.print("Didn't find PN53x board");
  41.     while (1); // halt
  42.   }
  43.  
  44.   nfc.SAMConfig();
  45.  
  46.   Serial.println("Tempelkan kartu pelanggan");
  47.  
  48.   display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
  49.   display.clearDisplay();
  50. }
  51.  
  52. String str1, str3;
  53. String str2 = "0x49 0xB3 0x9E 0x2B";
  54. void loop(void)
  55. {
  56.   uint8_t success;
  57.   uint8_t uid[] = { 0, 0, 0, 0, 0, 0, 0 };  // Buffer to store the returned UID
  58.   uint8_t uidLength;                          // Length of the UID (4 or 7 bytes depending on ISO14443A card type)
  59.  
  60.   success = nfc.readPassiveTargetID(PN532_MIFARE_ISO14443A, uid, &uidLength);
  61.  
  62.   if (success)
  63.   {
  64.     String str22 = hexify(uid, uidLength);
  65.     results(str22);
  66.   }
  67. }
  68.  
  69. String hexify(uint8_t u[], byte len)
  70. {
  71.   String out = "";
  72.   for (byte i = 0; i < len; i++)
  73.   {
  74.     String a = String(u[i], HEX);
  75.     a.toUpperCase();
  76.     if (a.length() == 1) a = "0" + a;
  77.     out += "0x" + a + " ";
  78.   }
  79.   out.trim();
  80.   return out;
  81. }
  82.  
  83. void results(String str)
  84. {
  85.   if (str == str2)
  86.   {
  87.     display.clearDisplay();
  88.     display.setTextSize(1);
  89.     display.setTextColor(WHITE);
  90.  
  91.     display.setCursor(0, 0);
  92.     display.print("Pelanggan dikenali");
  93.  
  94.     display.setCursor(0, 8);
  95.     display.print("sebagai :");
  96.  
  97.     display.setCursor(0, 16);
  98.     display.print(" > 1303167045");
  99.     display.display();
  100.  
  101.     Serial.println("\n  1303167045");
  102.     beli();
  103.   }
  104.   else
  105.   {
  106.     display.clearDisplay();
  107.     display.setTextSize(1);
  108.     display.setTextColor(WHITE);
  109.  
  110.     display.setCursor(0, 0);
  111.     display.print("Tag NFC tidak");
  112.  
  113.     display.setCursor(0, 8);
  114.     display.print("dikenali");
  115.  
  116.     display.setCursor(0, 16);
  117.     display.print(" > Bukan pelanggan");
  118.     display.display();
  119.  
  120.     Serial.println("\n  Bukan pelanggan");
  121.   }
  122.   Serial.print("");
  123. }
  124.  
  125. void beli()
  126. {
  127.   delay(2000);
  128.   byte pilihan = 1;
  129.   byte jumlah_pilihan = 4;
  130.   refresh_pilihan_token(pilihan);
  131.   while (1)
  132.   {
  133.     if (check_nfc())
  134.     {
  135.       pilihan++;
  136.       if (pilihan > jumlah_pilihan)
  137.         pilihan = 1;
  138.       refresh_pilihan_token(pilihan);
  139.     }
  140.  
  141.     unsigned long interval = 3000;
  142.     unsigned long previousMillis = 0;
  143.  
  144.     unsigned long currentMillis = millis();
  145.     if ((currentMillis - previousMillis >= interval) && (check_nfc() != check_nfc()))
  146.     {
  147.       token10k();
  148.       previousMillis = currentMillis;
  149.     }
  150.  
  151.     if ((currentMillis - previousMillis >= interval) && (check_nfc() != check_nfc()))
  152.     {
  153.       token20k();
  154.       previousMillis = currentMillis;
  155.     }
  156.  
  157.     if ((currentMillis - previousMillis >= interval) && (check_nfc() != check_nfc()))
  158.     {
  159.       token50k();
  160.       previousMillis = currentMillis;
  161.     }
  162.  
  163.     if ((currentMillis - previousMillis >= interval) && (check_nfc() != check_nfc()))
  164.     {
  165.       batal();
  166.       previousMillis = currentMillis;
  167.     }
  168.   }
  169. }
  170.  
  171. void refresh_pilihan_token(byte pilihan)
  172. {
  173.   display.clearDisplay();
  174.   display.setTextSize(1);
  175.   display.setTextColor(WHITE);
  176.  
  177.   switch (pilihan)
  178.   {
  179.     case 1:
  180.       display.setCursor(0, 0);
  181.       display.print("> 10K");
  182.       display.setCursor(0, 8);
  183.       display.print("  20K");
  184.       display.setCursor(0, 16);
  185.       display.print("  50K");
  186.       display.setCursor(0, 24);
  187.       display.print("  Batal");
  188.       break;
  189.     case 2:
  190.       display.setCursor(0, 0);
  191.       display.print("  10K");
  192.       display.setCursor(0, 8);
  193.       display.print("> 20K");
  194.       display.setCursor(0, 16);
  195.       display.print("  50K");
  196.       display.setCursor(0, 24);
  197.       display.print("  Batal");
  198.       break;
  199.     case 3:
  200.       display.setCursor(0, 0);
  201.       display.print("  10K");
  202.       display.setCursor(0, 8);
  203.       display.print("  20K");
  204.       display.setCursor(0, 16);
  205.       display.print("> 50K");
  206.       display.setCursor(0, 24);
  207.       display.print("  Batal");
  208.       break;
  209.     case 4:
  210.       display.setCursor(0, 0);
  211.       display.print("  10K");
  212.       display.setCursor(0, 8);
  213.       display.print("  20K");
  214.       display.setCursor(0, 16);
  215.       display.print("  50K");
  216.       display.setCursor(0, 24);
  217.       display.print("> Batal");
  218.       break;
  219.   }
  220.   display.display();
  221. }
  222.  
  223. bool check_nfc()
  224. {
  225.   uint8_t success;
  226.   uint8_t uid[] = { 0, 0, 0, 0, 0, 0, 0 };
  227.   uint8_t uidLength;
  228.   success = nfc.readPassiveTargetID(PN532_MIFARE_ISO14443A, uid, &uidLength);
  229.  
  230.   if (success)
  231.   {
  232.     String str22 = hexify(uid, uidLength);
  233.     if (str22.equals(str2)) return true;
  234.   }
  235.   return false;
  236. }
  237.  
  238. void token10k()
  239. {
  240.   display.clearDisplay();
  241.   display.setTextSize(1);
  242.   display.setTextColor(WHITE);
  243.  
  244.   display.setCursor(0, 0);
  245.   display.print("Token telah");
  246.   display.setCursor(0, 8);
  247.   display.print("ditambahkan sebesar  ");
  248.   display.setCursor(0, 16);
  249.   display.print("5,0484 kWh");
  250.   display.display();
  251. }
  252.  
  253. void token20k()
  254. {
  255.   display.clearDisplay();
  256.   display.setTextSize(1);
  257.   display.setTextColor(WHITE);
  258.  
  259.   display.setCursor(0, 0);
  260.   display.print("Token telah");
  261.   display.setCursor(0, 8);
  262.   display.print("ditambahkan sebesar  ");
  263.   display.setCursor(0, 16);
  264.   display.print("11,3588 kWh");
  265.   display.display();
  266. }
  267.  
  268. void token50k()
  269. {
  270.   display.clearDisplay();
  271.   display.setTextSize(1);
  272.   display.setTextColor(WHITE);
  273.  
  274.   display.setCursor(0, 0);
  275.   display.print("Token telah");
  276.   display.setCursor(0, 8);
  277.   display.print("ditambahkan sebesar  ");
  278.   display.setCursor(0, 16);
  279.   display.print("30,29 kWh");
  280.   display.display();
  281. }
  282.  
  283. void batal()
  284. {
  285.   display.clearDisplay();
  286.   display.setTextSize(1);
  287.   display.setTextColor(WHITE);
  288.  
  289.   display.setCursor(0, 0);
  290.   display.print("Pembelian dibatalkan");
  291.   display.display();
  292. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement