21ani

tambah2

Jul 21st, 2020
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 12.99 KB | None | 0 0
  1. #include <EEPROM.h>
  2. #include <SPI.h>
  3. #include <Keypad.h>
  4. #include <MFRC522.h>
  5. #include <LiquidCrystal_I2C.h>  //i2C LCD Library
  6. LiquidCrystal_I2C lcd(0x27, 16, 2); //library i2c lcd
  7.  
  8. #define SS_PIN 8
  9. #define RST_PIN 9
  10.  
  11. MFRC522 mfrc522(SS_PIN, RST_PIN);   // Create MFRC522 instance.
  12.  
  13. char customKey;
  14. const byte ROWS = 4;
  15. const byte COLS = 4;
  16. long passwd = 0;
  17. long isiku;
  18. long kartu1;
  19. long kartu2;
  20. long kartu3;
  21. long kartu4;
  22. int id;
  23. long beli;
  24. long dtTombol=0;
  25. int digit;
  26. bool notif = true;
  27. bool mode1=true; //digunakan untuk
  28. bool mode2=false;
  29. byte data;
  30. long saldoSkrg;
  31. long baca;
  32.  
  33. char keys[ROWS][COLS] = {
  34. {'1', '2', '3', 'A'},
  35. {'4', '5', '6', 'B'},
  36. {'7', '8', '9', 'C'},
  37. {'*', '0', '#', 'D'}
  38. };
  39.  
  40.  
  41. byte rowPins [ROWS] = {A0,A1,A2,7};
  42. byte colPins [COLS] = {6,5,4,3};
  43.  
  44. //initialize an instance of class NewKeypad
  45. Keypad customKeypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS);
  46.  
  47.  
  48.  
  49. void setup()
  50. {
  51.   lcd.begin(); //set lcd i2c
  52.   lcd.noCursor(); //biar gak ada cursor di lcd
  53.   lcd.clear(); //clear lcd
  54.   Serial.begin(9600);   // Initiate a serial communication
  55.   SPI.begin();      // Initiate  SPI bus
  56.   mfrc522.PCD_Init();   // Initiate MFRC522
  57. //  Serial.println("Put your card to the reader...");
  58. //  Serial.println();
  59.  
  60.   delay(1000);
  61.  
  62. }
  63.  
  64.  
  65. void loop(){
  66.  
  67.   lcd.setCursor(0,0);
  68.   lcd.print("Pilih Menu");
  69.   lcd.setCursor(0,1);
  70.   lcd.print("A.Tambah    B.Kurangi");
  71.  
  72. customKey = customKeypad.getKey();
  73. if(customKey == 'A'){
  74.   lcd.clear();
  75.   lcd.setCursor(0,0);
  76.       lcd.print("Menu Tambah");
  77.       delay(3000);
  78.       cekTekan();
  79.       cekisi();
  80.      
  81.     /*lcd.clear();
  82.     delay(1000);
  83.     //passwd = 0;
  84.     //isi();
  85.       lcd.setCursor(0,0);
  86.       lcd.print("Dekatkan Kartu");
  87.     delay(3000);
  88.     lcd.clear();
  89.     //isiscan();
  90.     //cekTombol();
  91.     delay(1000);
  92.     isiku = 0;
  93.     scan();
  94.     */
  95.     }
  96.  
  97.     if(customKey == 'B'){
  98.  
  99.    
  100.     lcd.clear();
  101.     lcd.setCursor(0,0);
  102.     lcd.print("Dekatkan Kartu");
  103.     delay(3000);
  104.     lcd.clear();
  105.     //isiscan();
  106.     lcd.clear();
  107.     beli = 0;
  108.     bayar();
  109.    
  110.     //mulaiisi();
  111.     }
  112.  
  113.  
  114.  
  115.  
  116.  
  117. }
  118.  
  119.  
  120.  
  121. void cekTekan(){
  122.  
  123.   lcd.clear();
  124.   dtTombol=0;
  125.   lcd.setCursor(0,0);
  126.   lcd.print("Masukkan Nominal");
  127.   while(mode1){
  128.     char customKey = customKeypad.getKey();
  129.  
  130.     if(customKey >= '0' && customKey <= '9')
  131.     {
  132.       dtTombol = dtTombol * 10 + (customKey - '0');
  133.       lcd.setCursor(0,1);
  134.       lcd.print(dtTombol);  
  135.     }
  136.  
  137.     if(customKey == 'D'){
  138.  
  139.           EEPROM.write(3,dtTombol);
  140.           lcd.clear();
  141.           lcd.setCursor(0,0);
  142.           lcd.print("Tap Kartu ");
  143.  
  144.         //Cek  ada kartu atau tidak
  145.         if ( ! mfrc522.PICC_IsNewCardPresent()){
  146.         return;
  147.           }
  148.  
  149.          if ( ! mfrc522.PICC_ReadCardSerial()){
  150.           return;
  151.           }
  152.          
  153.           lcd.setCursor(0,0);
  154.           lcd.print("Berhasil          ");
  155.           lcd.setCursor(0,1);
  156.           lcd.print("diperbaharui");
  157.           for(int i=1; i<=3; i++){
  158.             lcd.setCursor(i+11,1);
  159.             lcd.print(".");
  160.             delay(700);
  161.  
  162.           baca = EEPROM.read(3);
  163.           Serial.println(baca);      
  164.          
  165.           }
  166.          
  167.           //cekisi();
  168.         //mode1=false;
  169.         /*lcd.clear();
  170.         delay(2000);
  171.         //dtTombol = saldoSkrg;
  172.         lcd.setCursor(0,1);
  173.         lcd.print(saldoSkrg);
  174.          
  175.         //mode1=false;
  176.           */
  177.         return;
  178.      
  179.       }
  180.     if(customKey=='*'){
  181.             dtTombol=(dtTombol-dtTombol%10)/10;
  182.             lcd.setCursor(0,1);
  183.             lcd.print("                 ");
  184.           }
  185.    
  186.  
  187. }
  188. }
  189.  
  190. void cekisi(){
  191.   lcd.clear();
  192.   delay(1000);
  193.   baca = EEPROM.read(3);
  194.   lcd.setCursor(0,1);
  195.   lcd.print(baca);
  196. }
  197.  
  198.  
  199. void cekKartu(){
  200.   if ( ! mfrc522.PICC_IsNewCardPresent()){
  201.       return;
  202.   }
  203.  
  204.   if ( ! mfrc522.PICC_ReadCardSerial()){
  205.       return;
  206.   }
  207.  
  208.   lcd.clear();
  209.   lcd.setCursor(0,1);
  210.   lcd.print("Card uid:");
  211.   dump_byte_array(mfrc522.uid.uidByte, mfrc522.uid.size);
  212.  
  213.  
  214. }
  215.  
  216. void dump_byte_array(byte *buffer, byte bufferSize) {
  217.     for (byte i = 0; i < bufferSize; i++) {
  218.         Serial.print(buffer[i] < 0x10 ? " 0" : " ");
  219.         Serial.print(buffer[i], HEX);
  220.     }
  221. }
  222.  
  223.  
  224. /*
  225. void isi(){
  226.  
  227.   lcd.setCursor(0,0);
  228.   lcd.print("Input Password");
  229.  
  230. customKey = customKeypad.getKey();
  231.  
  232.     /*
  233.     if(customKey >= '0' && customKey <= '9')
  234.     {
  235.       passwd = passwd * 10 + (customKey - '0');
  236.       lcd.setCursor(0,1);
  237.       lcd.print(passwd);
  238.     }
  239.  
  240.    
  241.     if((customKey == 'D')&&(passwd == 112233)){
  242.     lcd.clear();
  243.     delay(1000);
  244.     customKey == ' ';
  245.     return;
  246.     }
  247.  
  248.     if(customKey == 'C'){
  249.     lcd.clear();
  250.     delay(200);
  251.     passwd = 0;
  252.     }
  253.    
  254.  isi();
  255.   }*/
  256.  
  257.  
  258. /*
  259. void isiscan(){
  260.  
  261.   lcd.setCursor(0,0);
  262.   lcd.print("Scan Kartu");
  263.  
  264.   SPI.begin();      // Initiate  SPI bus
  265.   mfrc522.PCD_Init();   // Initiate MFRC522
  266. //  Serial.println("Put your card to the reader...");
  267.  
  268.   // Look for new cards
  269.   if ( ! mfrc522.PICC_IsNewCardPresent())
  270.   {
  271.     //return;
  272.   }
  273.   // Select one of the cards
  274.   if ( ! mfrc522.PICC_ReadCardSerial())
  275.   {
  276.     //return;
  277.   }
  278.   //Show UID on serial monitor
  279.   //lcd.setCursor(0,0);
  280. //  Serial.print("UID tag :");
  281.   String content= "";
  282.   byte letter;
  283.   for (byte i = 0; i < mfrc522.uid.size; i++)
  284.   {
  285.  //    Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ");
  286.  //    Serial.print(mfrc522.uid.uidByte[i], HEX);
  287.      content.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " "));
  288.      content.concat(String(mfrc522.uid.uidByte[i], HEX));
  289.   }
  290.  
  291.   content.toUpperCase();
  292.  
  293.   if (content.substring(1) == "03 3D 9E 02")
  294.   {
  295.        
  296.  
  297.       lcd.setCursor(0,1);
  298.       lcd.print(content.substring(1));
  299.       delay(3000);
  300.       id = 1;
  301.       lcd.clear();
  302.       content.substring(1) = "";
  303.       return;
  304.   }
  305.  
  306.  if (content.substring(1) == "99 AD B5 55")
  307.   {
  308.        
  309.       lcd.setCursor(0,1);
  310.       lcd.print(content.substring(1));
  311.       delay(3000);
  312.       id = 2;
  313.       lcd.clear();
  314.       content.substring(1) = "";
  315.       return;
  316.   }
  317.  
  318.    if (content.substring(1) == "A3 32 48 83")
  319.   {
  320.      
  321.       lcd.setCursor(0,1);
  322.       lcd.print(content.substring(1));
  323.       delay(3000);
  324.       id = 3;
  325.       lcd.clear();
  326.       content.substring(1) = "";
  327.       return;
  328.   }
  329.  
  330.    if (content.substring(1) == "06 5D 01 FA")
  331.   {
  332.        
  333.       lcd.setCursor(0,1);
  334.       lcd.print(content.substring(1));
  335.       delay(3000);
  336.       id = 4;
  337.       lcd.clear();
  338.       content.substring(1) = "";
  339.       return;
  340.   }
  341.  
  342. isiscan();  
  343. }
  344. */
  345.  
  346. void cekTombol(){
  347.  
  348.   lcd.setCursor(0,0);
  349.   lcd.print("Mau isi berapa");
  350.  
  351.  
  352.  
  353.  
  354.   if(customKey!='A' && customKey!='B' && customKey!='C' && customKey!='#'){
  355.           if(customKey=='*'){
  356.             dtTombol=(dtTombol-dtTombol%10)/10;
  357.             lcd.setCursor(0,1);
  358.             lcd.print("                 ");
  359.           }else{
  360.             dtTombol=dtTombol*10+customKey;
  361.           }
  362. //          lcd.setCursor(0,0);
  363. //          lcd.print(str);
  364.           lcd.setCursor(0,1);
  365.           lcd.print(dtTombol);
  366.         }
  367.  
  368.   /*SPI.begin();      // Initiate  SPI bus
  369.   mfrc522.PCD_Init();   // Initiate MFRC522
  370. //  Serial.println("Put your card to the reader...");
  371.  
  372.   // Look for new cards
  373.   if ( ! mfrc522.PICC_IsNewCardPresent())
  374.   {
  375.     return;
  376.   }
  377.   // Select one of the cards
  378.   if ( ! mfrc522.PICC_ReadCardSerial())
  379.   {
  380.     return;
  381.   }
  382.  
  383.  
  384.  
  385.  
  386.  
  387.  
  388.   //Show UID on serial monitor
  389.   //lcd.setCursor(0,0);
  390. //  Serial.print("UID tag :");
  391.   String content= "";
  392.   byte letter;
  393.   for (byte i = 0; i < mfrc522.uid.size; i++)
  394.   {
  395.  //    Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ");
  396.  //    Serial.print(mfrc522.uid.uidByte[i], HEX);
  397.      content.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " "));
  398.      content.concat(String(mfrc522.uid.uidByte[i], HEX));
  399.   }
  400.  
  401.   content.toUpperCase();
  402.  
  403.   if (content.substring(1) == "03 3D 9E 02")
  404.   {
  405.        
  406.  
  407.       lcd.setCursor(0,1);
  408.       lcd.print(content.substring(1));
  409.       delay(3000);
  410.       id = 1;
  411.       lcd.clear();
  412.       content.substring(1) = "";
  413.       return;
  414.   }
  415.  
  416.  if (content.substring(1) == "99 AD B5 55")
  417.   {
  418.        
  419.       lcd.setCursor(0,1);
  420.       lcd.print(content.substring(1));
  421.       delay(3000);
  422.       id = 2;
  423.       lcd.clear();
  424.       content.substring(1) = "";
  425.       return;
  426.   }
  427.  
  428.    if (content.substring(1) == "A3 32 48 83")
  429.   {
  430.      
  431.       lcd.setCursor(0,1);
  432.       lcd.print(content.substring(1));
  433.       delay(3000);
  434.       id = 3;
  435.       lcd.clear();
  436.       content.substring(1) = "";
  437.       return;
  438.   }
  439.  
  440.    if (content.substring(1) == "06 5D 01 FA")
  441.   {
  442.        
  443.       lcd.setCursor(0,1);
  444.       lcd.print(content.substring(1));
  445.       delay(3000);
  446.       id = 4;
  447.       lcd.clear();
  448.       content.substring(1) = "";
  449.       return;
  450.   }
  451. */
  452. cekTombol();  
  453. }
  454.  
  455.  
  456.  
  457. void scan(){
  458.  
  459.   lcd.setCursor(0,0);
  460.   lcd.print("Isi Berapa mL?");
  461.  
  462. customKey = customKeypad.getKey();
  463.  
  464. while(notif){
  465.   if(customKey >= '0' && customKey <= '9')
  466.     {
  467.       isiku = isiku * 10 + (customKey - '0');
  468.       lcd.setCursor(0,1);
  469.       lcd.print(isiku);
  470.     }
  471.  
  472.     digit = isiku;
  473.    
  474.     isiku *= 1000;
  475.     Serial.print("saldo yang di input : ");
  476.     Serial.println(isiku);
  477.     Serial.println("Silahkan tap kartu untuk menambah saldo kartu");
  478.  
  479. }
  480.  
  481.    
  482.    
  483.    
  484.     if(customKey == 'C'){
  485.     lcd.clear();
  486.     delay(200);
  487.     isiku = 0;
  488.     }
  489.  
  490.     if((customKey == 'D')&&(id == 1)){
  491.     lcd.clear();
  492.     delay(2000);
  493.     kartu1 = isiku;
  494.     return;
  495.     }
  496.  
  497.     if((customKey == 'D')&&(id == 2)){
  498.     lcd.clear();
  499.     delay(2000);
  500.     kartu2 = isiku;
  501.     return;
  502.     }
  503.  
  504.     if((customKey == 'D')&&(id == 3)){
  505.     lcd.clear();
  506.     delay(2000);
  507.     kartu3 = isiku;
  508.     return;
  509.     }
  510.  
  511.     if((customKey == 'D')&&(id == 4)){
  512.     lcd.clear();
  513.     delay(2000);
  514.     kartu4 = isiku;
  515.     return;
  516.     }
  517.    
  518.  scan();
  519.   }
  520.  
  521.  
  522.   void bayar(){
  523.  
  524.   lcd.setCursor(0,0);
  525.   lcd.print("Beli Berapa mL ?");
  526.  
  527. customKey = customKeypad.getKey();
  528.  
  529.     if(customKey >= '0' && customKey <= '9')
  530.     {
  531.       beli = beli * 10 + (customKey - '0');
  532.       lcd.setCursor(0,1);
  533.       lcd.print(beli);
  534.     }
  535.    
  536.     if(customKey == 'C'){
  537.     lcd.clear();
  538.     delay(200);
  539.     beli = 0;
  540.     }
  541.  
  542.     if((customKey == 'D')&&(id == 1)){
  543.     lcd.clear();
  544.     delay(2000);
  545.     kartu1 = kartu1 - beli;
  546.  
  547.     if(kartu1 >= 0){
  548.     Serial.println(id);
  549.     Serial.println(beli);
  550.     Serial.println(kartu1);  
  551.     delay(1000);
  552.     lcd.setCursor(0,0);
  553.     lcd.print("BERHASIL");
  554.     lcd.setCursor(0,1);
  555.     lcd.print("SALDO=");
  556.     lcd.print(kartu1);
  557.     delay(5000);
  558.     lcd.clear();
  559.     return;
  560.     }
  561.  
  562.     if(kartu1 < 0){
  563.     kartu1 = kartu1 + beli;  
  564.     lcd.setCursor(0,0);
  565.     lcd.print("SALDO KURANG");
  566.     lcd.setCursor(0,1);
  567.     lcd.print("SALDO=");
  568.     lcd.print(kartu1);
  569.     delay(5000);
  570.     lcd.clear();
  571.     beli = 0;
  572.     }
  573.  
  574.     }
  575.  
  576.     if((customKey == 'D')&&(id == 2)){
  577.     lcd.clear();
  578.     delay(2000);
  579.     kartu2 = kartu2 - beli;
  580.  
  581.     if(kartu2 >= 0){
  582.     Serial.println(id);
  583.     Serial.println(beli);
  584.     Serial.println(kartu2);  
  585.     delay(1000);
  586.     lcd.setCursor(0,0);
  587.     lcd.print("BERHASIL");
  588.     lcd.setCursor(0,1);
  589.     lcd.print("SALDO=");
  590.     lcd.print(kartu2);
  591.     delay(5000);
  592.     lcd.clear();
  593.     return;
  594.     }
  595.  
  596.     if(kartu2 < 0){
  597.     kartu2 = kartu2 + beli;  
  598.     lcd.setCursor(0,0);
  599.     lcd.print("SALDO KURANG");
  600.     lcd.setCursor(0,1);
  601.     lcd.print("SALDO=");
  602.     lcd.print(kartu2);
  603.     delay(5000);
  604.     lcd.clear();
  605.     beli = 0;
  606.     }
  607.  
  608.     }
  609.  
  610.     if((customKey == 'D')&&(id == 3)){
  611.     lcd.clear();
  612.     delay(2000);
  613.     kartu3 = kartu3 - beli;
  614.  
  615.     if(kartu3 >= 0){
  616.     Serial.println(id);
  617.     Serial.println(beli);
  618.     Serial.println(kartu3);
  619.     delay(1000);
  620.     lcd.setCursor(0,0);
  621.     lcd.print("BERHASIL");
  622.     lcd.setCursor(0,1);
  623.     lcd.print("SALDO=");
  624.     lcd.print(kartu3);
  625.     delay(5000);
  626.     lcd.clear();
  627.     return;
  628.     }
  629.  
  630.     if(kartu3 < 0){
  631.     kartu3 = kartu3 + beli;  
  632.     lcd.setCursor(0,0);
  633.     lcd.print("SALDO KURANG");
  634.     lcd.setCursor(0,1);
  635.     lcd.print("SALDO=");
  636.     lcd.print(kartu3);
  637.     delay(5000);
  638.     lcd.clear();
  639.     beli = 0;
  640.     }
  641.  
  642.     }
  643.  
  644.     if((customKey == 'D')&&(id == 4)){
  645.     lcd.clear();
  646.     delay(2000);
  647.     kartu4 = kartu4 - beli;
  648.  
  649.     if(kartu4 >= 0){
  650.     Serial.println(id);
  651.     Serial.println(beli);
  652.     Serial.println(kartu4);
  653.     delay(1000);
  654.     lcd.setCursor(0,0);
  655.     lcd.print("BERHASIL");
  656.     lcd.setCursor(0,1);
  657.     lcd.print("SALDO=");
  658.     lcd.print(kartu4);
  659.     delay(5000);
  660.     lcd.clear();
  661.     return;
  662.     }
  663.  
  664.     if(kartu4 < 0){
  665.     kartu4 = kartu4 + beli;  
  666.     lcd.setCursor(0,0);
  667.     lcd.print("SALDO KURANG");
  668.     lcd.setCursor(0,1);
  669.     lcd.print("SALDO=");
  670.     lcd.print(kartu4);
  671.     delay(5000);
  672.     lcd.clear();
  673.     beli = 0;
  674.     }
  675.     }
  676.    
  677.   bayar();
  678.   }
Add Comment
Please, Sign In to add comment