21ani

menu3

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