Advertisement
muezza29

beli token v10

Jul 12th, 2019
119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 7.13 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.  
  55. void loop(void)
  56. {
  57.   uint8_t success;
  58.   uint8_t uid[] = { 0, 0, 0, 0, 0, 0, 0 };  // Buffer to store the returned UID
  59.   uint8_t uidLength;                          // Length of the UID (4 or 7 bytes depending on ISO14443A card type)
  60.  
  61.   success = nfc.readPassiveTargetID(PN532_MIFARE_ISO14443A, uid, &uidLength);
  62.  
  63.   if (success)
  64.   {
  65.     String str22 = hexify(uid, uidLength);
  66.     results(str22);
  67.   }
  68. }
  69.  
  70. String hexify(uint8_t u[], byte len)
  71. {
  72.   String out = "";
  73.   for (byte i = 0; i < len; i++)
  74.   {
  75.     String a = String(u[i], HEX);
  76.     a.toUpperCase();
  77.     if (a.length() == 1) a = "0" + a;
  78.     out += "0x" + a + " ";
  79.   }
  80.   out.trim();
  81.   return out;
  82. }
  83.  
  84. void results(String str)
  85. {
  86.   if (str == str2)
  87.   {
  88.     display.clearDisplay();
  89.     display.setTextSize(1);
  90.     display.setTextColor(WHITE);
  91.  
  92.     display.setCursor(0, 0);
  93.     display.print("Pelanggan dikenali");
  94.  
  95.     display.setCursor(0, 8);
  96.     display.print("sebagai :");
  97.  
  98.     display.setCursor(0, 16);
  99.     display.print(" > 1303167045");
  100.     display.display();
  101.     Serial.println("Pelanggan dikenali sebagai:");
  102.     Serial.println("  1303167045");
  103.     beli();
  104.   }
  105.   else
  106.   {
  107.     display.clearDisplay();
  108.     display.setTextSize(1);
  109.     display.setTextColor(WHITE);
  110.  
  111.     display.setCursor(0, 0);
  112.     display.print("Tag NFC tidak");
  113.  
  114.     display.setCursor(0, 8);
  115.     display.print("dikenali");
  116.  
  117.     display.setCursor(0, 16);
  118.     display.print(" > Bukan pelanggan");
  119.     display.display();
  120.     Serial.println("Tag NFC tidak dikenali");
  121.     Serial.println("  Bukan pelanggan");
  122.   }
  123.   Serial.println("");
  124. }
  125.  
  126. void beli()
  127. {
  128.   delay(2000);
  129.   byte pilihan = 1;
  130.   byte jumlah_pilihan = 4;
  131.   refresh_pilihan_token(pilihan);
  132.  
  133.   uint16_t interval = 5000;
  134.   uint32_t previousMillis = millis();
  135.   bool sudah_memilih_token = false;
  136.  
  137.   while (!sudah_memilih_token)
  138.   {
  139.     if (check_nfc())
  140.     {
  141.       pilihan++;
  142.       if (pilihan > jumlah_pilihan)
  143.         pilihan = 1;
  144.       refresh_pilihan_token(pilihan);
  145.       previousMillis = millis();
  146.     }
  147.     if (millis() - previousMillis >= interval)
  148.     {
  149.       sudah_memilih_token = true;
  150.     }
  151.   }
  152.   printBeli(pilihan);
  153. }
  154.  
  155. void refresh_pilihan_token(byte pilihan)
  156. {
  157.   display.clearDisplay();
  158.   display.setTextSize(1);
  159.   display.setTextColor(WHITE);
  160.  
  161.   switch (pilihan)
  162.   {
  163.     case 1:
  164.       display.setCursor(0, 0);
  165.       display.print("> 10K");
  166.       display.setCursor(0, 8);
  167.       display.print("  20K");
  168.       display.setCursor(0, 16);
  169.       display.print("  50K");
  170.       display.setCursor(0, 24);
  171.       display.print("  Batal");
  172.       Serial.println("> 10k");
  173.       Serial.println("  20k");
  174.       Serial.println("  50k");
  175.       Serial.println("  Batal");
  176.       Serial.println("");
  177.       break;
  178.  
  179.     case 2:
  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.       Serial.println("  10k");
  189.       Serial.println("> 20k");
  190.       Serial.println("  50k");
  191.       Serial.println("  Batal");
  192.       Serial.println("");
  193.       break;
  194.  
  195.     case 3:
  196.       display.setCursor(0, 0);
  197.       display.print("  10K");
  198.       display.setCursor(0, 8);
  199.       display.print("  20K");
  200.       display.setCursor(0, 16);
  201.       display.print("> 50K");
  202.       display.setCursor(0, 24);
  203.       display.print("  Batal");
  204.       Serial.println("  10k");
  205.       Serial.println("  20k");
  206.       Serial.println("> 50k");
  207.       Serial.println("  Batal");
  208.       Serial.println("");
  209.       break;
  210.  
  211.     case 4:
  212.       display.setCursor(0, 0);
  213.       display.print("  10K");
  214.       display.setCursor(0, 8);
  215.       display.print("  20K");
  216.       display.setCursor(0, 16);
  217.       display.print("  50K");
  218.       display.setCursor(0, 24);
  219.       display.print("> Batal");
  220.       Serial.println("  10k");
  221.       Serial.println("  20k");
  222.       Serial.println("  50k");
  223.       Serial.println("> Batal");
  224.       Serial.println("");
  225.       break;
  226.   }
  227.   display.display();
  228. }
  229.  
  230. void printBeli(byte pilih)
  231. {
  232.   switch (pilih) {
  233.     case 1:
  234.       token10k();
  235.       break;
  236.  
  237.     case 2:
  238.       token20k();
  239.       break;
  240.  
  241.     case 3:
  242.       token50k();
  243.       break;
  244.  
  245.     case 4:
  246.       batal();
  247.       break;
  248.   }
  249. }
  250.  
  251. void token10k()
  252. {
  253.   display.clearDisplay();
  254.   display.setTextSize(1);
  255.   display.setTextColor(WHITE);
  256.  
  257.   display.setCursor(0, 0);
  258.   display.print("Token telah");
  259.   display.setCursor(0, 8);
  260.   display.print("ditambahkan sebesar  ");
  261.   display.setCursor(0, 16);
  262.   display.print("5,0484 kWh");
  263.   display.display();
  264.   Serial.println("Token telah ditambahkan sebesar 5,048 kWh");
  265.   Serial.println("");
  266. }
  267.  
  268. void token20k()
  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("11,3588 kWh");
  280.   display.display();
  281.   Serial.println("Token telah ditambahkan sebesar 11,3588 kWh");
  282.   Serial.println("");
  283. }
  284.  
  285. void token50k()
  286. {
  287.   display.clearDisplay();
  288.   display.setTextSize(1);
  289.   display.setTextColor(WHITE);
  290.  
  291.   display.setCursor(0, 0);
  292.   display.print("Token telah");
  293.   display.setCursor(0, 8);
  294.   display.print("ditambahkan sebesar  ");
  295.   display.setCursor(0, 16);
  296.   display.print("30,29 kWh");
  297.   display.display();
  298.   Serial.println("Token telah ditambahkan sebesar 30,29 kWh");
  299.   Serial.println("");
  300. }
  301.  
  302. void batal()
  303. {
  304.   display.clearDisplay();
  305.   display.setTextSize(1);
  306.   display.setTextColor(WHITE);
  307.  
  308.   display.setCursor(0, 0);
  309.   display.print("Pembelian dibatalkan");
  310.   display.display();
  311.   Serial.println("Pembelian dibatalkan");
  312.   Serial.println("");
  313. }
  314.  
  315. bool check_nfc()
  316. {
  317.   uint8_t success;
  318.   uint8_t uid[] = { 0, 0, 0, 0, 0, 0, 0 };
  319.   uint8_t uidLength;
  320.   success = nfc.readPassiveTargetID(PN532_MIFARE_ISO14443A, uid, &uidLength,1000);
  321.  
  322.   if (success)
  323.   {
  324.     String str22 = hexify(uid, uidLength);
  325.     if (str22.equals(str2)) return true;
  326.   }
  327.   return false;
  328. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement