#include #include "SdFat.h" #include LiquidCrystal_I2C lcd(0x27,20,4); const uint8_t chipSelect = SS; String b=""; int counter=0; int usedcounter=1; int wrtcounter=0; int coincounter=0; int coinwrtcounter=0; int coinusedcounter=0; String inString; String b2=""; int counter2=0; //int usedcounter2=usedcounter; //int wrtcounter2=0; String inString2; SdFat SD; File myFile; ArduinoOutStream cout(Serial); int a =0; int c =0; int e = 6; int r = 8; int i = 7; int o =0; int o1=0; int led1hr = 1; int led2hr = 2; int led3hr = 3; int led5hr = 4; int led1d = 5; int led1m = 6; int buttoncounter=0; #define error(s) SD.errorHalt(F(s)) void r1hr_get_code() { char line[25]; int n; SdFile rdfile("code1hr.txt", O_READ); if (!rdfile.isOpen()) { error("error reading code1hr.txt file");} Serial.println(F("Selecting Specific Voucher For 1hr")); while ((n = rdfile.fgets(line, sizeof(line))) > 0) { if (line[n - 1] == '\n') { counter++; if (counter == usedcounter){ b=line;} }} counter = 0; Serial.println(b); rdfile.close(); } void r1hr_get_counter() { char line[25]; int n; Serial.println(F("Getting Counter For 1hr")); SdFile rdfile("ctr1hr.txt", O_READ); if (!rdfile.isOpen()) { error("error reading ctr1hr.txt");} while ((n = rdfile.fgets(line, sizeof(line))) > 0) { if (line[n - 1] == '\n') { usedcounter=0; inString = line; usedcounter = (inString.toInt()); } } counter = 0; rdfile.close(); } void r1hr_write_counter(){ Serial.println(F("Writing Counter For 1hr")); myFile = SD.open("ctr1hr.txt", FILE_WRITE); if (myFile) { wrtcounter = usedcounter+5; myFile.println(wrtcounter); myFile.close(); } } void r3hr_get_code() { char line[25]; int n; SdFile rdfile("code2hr.txt", O_READ); if (!rdfile.isOpen()) { error("error reading code2hr.txt file");} Serial.println(F("Selecting Specific Voucher For 2hr")); while ((n = rdfile.fgets(line, sizeof(line))) > 0) { if (line[n - 1] == '\n') { counter++; if (counter == usedcounter){ b=line; } }} counter = 0; Serial.println(b); rdfile.close(); } void r3hr_get_counter() { char line[25]; int n; Serial.println(F("Getting Counter For 2hr")); SdFile rdfile("ctr2hr.txt", O_READ); if (!rdfile.isOpen()) { error("error reading ctr2hr.txt"); } while ((n = rdfile.fgets(line, sizeof(line))) > 0) { if (line[n - 1] == '\n') { usedcounter=0; inString = line; usedcounter = (inString.toInt()); } } counter = 0; Serial.println(usedcounter); rdfile.close(); } void r3hr_write_counter(){ Serial.println(F("Writing Counter For 2hr")); myFile = SD.open("ctr2hr.txt", FILE_WRITE); if (myFile) { wrtcounter = usedcounter+1; myFile.println(wrtcounter); myFile.close();} Serial.println(wrtcounter);} void r12hr_get_code() { char line[25]; int n; SdFile rdfile("code5hr.txt", O_READ); if (!rdfile.isOpen()) { error("error reading code5hr.txt file"); } Serial.println(F("Selecting Specific Voucher For 5hr")); while ((n = rdfile.fgets(line, sizeof(line))) > 0) { if (line[n - 1] == '\n') { counter++; if (counter == usedcounter){ b=line; } } } counter = 0; Serial.println(b); rdfile.close(); } void r12hr_get_counter() { char line[25]; int n; Serial.println(F("Getting Counter For 5hr")); SdFile rdfile("ctr5hr.txt", O_READ); if (!rdfile.isOpen()) { error("error reading ctr5hr.txt"); } while ((n = rdfile.fgets(line, sizeof(line))) > 0) { if (line[n - 1] == '\n') { usedcounter=0; inString = line; usedcounter = (inString.toInt()); } } counter = 0; Serial.println(usedcounter); rdfile.close(); } void r12hr_write_counter(){ Serial.println(F("Writing Counter For 5hr")); myFile = SD.open("ctr5hr.txt", FILE_WRITE); if (myFile) { wrtcounter = usedcounter+1; myFile.println(wrtcounter); myFile.close();} Serial.println(wrtcounter);} void r1day_get_code() { char line[25]; int n; SdFile rdfile("code1d.txt", O_READ); if (!rdfile.isOpen()) { error("error reading code1d.txt file");} Serial.println(F("Selecting Specific Voucher For 1day")); while ((n = rdfile.fgets(line, sizeof(line))) > 0) { if (line[n - 1] == '\n') { counter++; if (counter == usedcounter){ b=line;} }} counter = 0; Serial.println(b); rdfile.close(); } void r1day_get_counter() { char line[25]; int n; Serial.println(F("Getting Counter For 1day")); SdFile rdfile("ctr1d.txt", O_READ); if (!rdfile.isOpen()) { error("error reading ctr1d.txt"); } while ((n = rdfile.fgets(line, sizeof(line))) > 0) { if (line[n - 1] == '\n') { usedcounter=0; inString = line; usedcounter = (inString.toInt()); } } counter = 0; Serial.println(usedcounter); rdfile.close(); } void r1day_write_counter(){ Serial.println(F("Writing Counter For 1day")); myFile = SD.open("ctr1d.txt", FILE_WRITE); if (myFile) { wrtcounter = usedcounter+1; myFile.println(wrtcounter); myFile.close();} Serial.println(wrtcounter);} void coin_get_counter() { char line[25]; int n; Serial.println(F("Getting Counter for insertedcoin.txt")); SdFile rdfile("insertedcoin.txt", O_READ); if (!rdfile.isOpen()) { error("error reading insertedcoin.txt");} while ((n = rdfile.fgets(line, sizeof(line))) > 0) { if (line[n - 1] == '\n') { coinusedcounter=0; inString = line; coinusedcounter = (inString.toInt()); } } coincounter = 0; Serial.println(usedcounter); rdfile.close(); } void coin_write_counter(){ Serial.println(F("Writing Counter For insertedcoin.txt")); myFile = SD.open("insertedcoin.txt", FILE_WRITE); if (myFile) { coinwrtcounter = coinusedcounter+1; Serial.println(F("TOTAL COIN")); Serial.println(coinwrtcounter); myFile.println(coinwrtcounter); myFile.close(); } } void setup(void) { Serial.begin(9600); pinMode(r, INPUT_PULLUP); pinMode(i, INPUT_PULLUP); pinMode(led1hr, OUTPUT); while (!Serial) { SysCall::yield();} if (!SD.begin(chipSelect, SD_SCK_MHZ(50))) { SD.initErrorHalt();} lcd.init(); lcd.backlight(); lcd.begin(20, 4); lcd.setCursor(0,0); lcd.print(F(" Welcome to ")); lcd.setCursor(0, 1); lcd.print(F("<<>>")); delay (5000); lcd.clear(); lcd.setCursor(1,0); lcd.print(F("Insert Coin")); lcd.setCursor(3,1); lcd.print(F("2 Get Code")); } void loop() { int button = digitalRead(r); int button3 = digitalRead(i); if (button == LOW) { coin_get_counter(); coin_write_counter(); Serial.println(F("5 peso detected")); a = a +1; lcd.clear(); lcd.setCursor(0, 0); lcd.print(F("CODE FOR 1hr")); lcd.setCursor(0, 1); lcd.print(F("Coin = Php")); lcd.setCursor(12, 1); lcd.print(a); if (a >= 10){ lcd.setCursor(0, 0); lcd.print(F("CODE FOR 2hrs")); lcd.setCursor(0, 1); lcd.print(F("Coins = Php")); lcd.setCursor(12, 1); lcd.print(a); } if (a >= 20){ lcd.setCursor(0, 0); lcd.print(F("CODE FOR 5hrs")); lcd.setCursor(0, 1); lcd.print(F("Coins = Php")); lcd.setCursor(12, 1); lcd.print(a); } if (a >= 35){ lcd.setCursor(0, 0); lcd.print(F("CODE FOR 1day")); lcd.setCursor(0, 1); lcd.print(F("Coins = Php")); lcd.setCursor(12, 1); lcd.print(a); } } if (buttoncounter == 0){ if (button3 == LOW) { Serial.println(F("show code button pressed")); lcd.clear(); if (a==0){ lcd.setCursor(0, 0); lcd.print(F(" Please Insert ")); lcd.setCursor(0, 1); lcd.print(F("1,5,10 Ph Coins")); } if(a >=5 and a <=9){ r1hr_get_counter(); r1hr_write_counter(); r1hr_get_code(); c= a - 5; lcd.setCursor(0, 0); lcd.print(F("CODE :")); lcd.setCursor(10, 0); lcd.print(b); lcd.setCursor(0, 1); lcd.print(F("Copy and Sign-in")); delay(5000); buttoncounter=2; lcd.setCursor(0, 1); lcd.print(F("Press CLR Button")); } if(a >=10 and a <=19){ r3hr_get_counter(); r3hr_write_counter(); r3hr_get_code(); c= a - 10; lcd.setCursor(0, 0); lcd.print(F("CODE :")); lcd.setCursor(10, 0); lcd.print(b); lcd.setCursor(0, 1); lcd.print(F("Copy and Sign-in")); delay(5000); buttoncounter=2; lcd.setCursor(0, 1); lcd.print(F("Press CLR Button"));} if(a >=20 and a <=34 ){ r12hr_get_counter(); r12hr_write_counter(); r12hr_get_code(); c= a - 20; lcd.setCursor(0, 0); lcd.print(F("CODE :")); lcd.setCursor(10, 0); lcd.print(b); lcd.setCursor(0, 1); lcd.print(F("Copy and Sign-in")); delay(5000); buttoncounter=2; lcd.setCursor(0, 1); lcd.print(F("Press CLR Button"));} if(a >=35 and a <=200 ){ r1day_get_counter(); r1day_write_counter(); r1day_get_code(); c= a - 35; lcd.setCursor(0, 0); lcd.print(F("Code :")); lcd.setCursor(10, 0); lcd.print(b); lcd.setCursor(0, 1); lcd.print(F("Copy and Sign-in")); delay(5000); buttoncounter=2; lcd.setCursor(0, 1); lcd.print(F("Press CLR Button"));} a=c; b=""; }} else if(buttoncounter ==2){ if (button3 == LOW) { buttoncounter= 0; lcd.setCursor(0, 1); lcd.print(F(" CODE CLEARED")); Serial.println(F("clear button pressed")); delay(1000); lcd.clear(); lcd.setCursor(0,0); lcd.print(F(" Please Wait...")); lcd.setCursor(0,1); lcd.print(F("<<>>")); delay(700); if(c >=5 ){; lcd.clear(); lcd.setCursor(0, 0); lcd.print(F("You Have")); lcd.setCursor(0, 1); lcd.print(F("Coin = Php")); lcd.setCursor(12, 1); lcd.print(a); delay(3000);}; lcd.clear(); lcd.setCursor(0,0); lcd.print(F("Pls Insert Coin")); lcd.setCursor(0,1); lcd.print(F("1,5,10 Php Coin")); delay(2000); lcd.clear(); lcd.print(F(" P5=1hr P10=1hr")); lcd.setCursor(0, 1); lcd.print(F(" P20=5hr P35=1D"));} } else{ } if (button == HIGH) { delay(5); if (o1 >= 5){ lcd.clear(); lcd.setCursor(0, 0); lcd.print(F("1,5,10 Php Coin")); lcd.setCursor(0, 1); lcd.print(F(" Select 1hr/1day")); o=0;} if (o1 >= 10){ lcd.clear(); lcd.setCursor(0, 0); lcd.print(F(" Copy Voucher ")); lcd.setCursor(0, 1); lcd.print(F(" FOR 15 SECONDS ")); o=0;} if(o1>= 20){ lcd.clear(); lcd.setCursor(0, 0); lcd.print(F(" SIGN IN")); lcd.setCursor(0, 1); lcd.print(F(" DONE ")); o=0;} }}