#include <Wire.h>
#include "LiquidCrystal_I2C.h"
#include <EEPROM.h>
double money_in;
double money;
double sumMoney;
double id;
double balance;
LiquidCrystal_I2C lcd_1(0x27,16,2);
void fnc_EEPROM_writeDouble(int ee, double value)
{
byte* p = (byte*)(void*)&value;
for (int i = 0; i < sizeof(value); i++)
EEPROM.write(ee++, *p++);
}
double fnc_EEPROM_readDouble(int ee)
{
double value = 0.0;
byte* p = (byte*)(void*)&value;
for (int i = 0; i < sizeof(value); i++)
*p++ = EEPROM.read(ee++);
return value;
}
void do_something() {
lcd_1.clear();
delay(1000);
while ((digitalRead(3) == true)) {
lcd_1.setCursor(0, 0);
lcd_1.print(String("select id"));
lcd_1.setCursor(0, 1);
lcd_1.print(analogRead(A0));
lcd_1.setCursor(8, 1);
lcd_1.print(String("press2Next"));
}
id = analogRead(A0);
balance = fnc_EEPROM_readDouble((int)(id*4));
lcd_1.clear();
delay(1000);
while ((digitalRead(3) == true)) {
lcd_1.setCursor(0, 0);
lcd_1.print(String("ID"));
lcd_1.setCursor(8, 0);
lcd_1.print(id);
lcd_1.setCursor(0, 1);
lcd_1.print(String("Balance"));
lcd_1.setCursor(8, 1);
lcd_1.print(balance);
}
lcd_1.clear();
delay(1000);
money = 0;
while ((digitalRead(3) == true)) {
lcd_1.setCursor(0, 0);
lcd_1.print(String("insert coin"));
if ((digitalRead(11) == true)) {
money_in = 5;
delay(500);
}
else {
money_in = 0;
}
money = (money + money_in);
lcd_1.setCursor(0, 1);
lcd_1.print(money);
}
balance = (balance + money_in);
delay(1000);
sumMoney = (money + balance);
delay(1000);
lcd_1.clear();
delay(1000);
while ((digitalRead(3) == true)) {
lcd_1.setCursor(0, 0);
lcd_1.print(String("Confirm"));
lcd_1.setCursor(8, 0);
lcd_1.print(id);
lcd_1.setCursor(0, 1);
lcd_1.print(String("Balance"));
lcd_1.setCursor(8, 1);
lcd_1.print(sumMoney);
}
lcd_1.clear();
lcd_1.setCursor(0, 0);
lcd_1.print(String("saving"));
delay(1000);
fnc_EEPROM_writeDouble((int)(id*4),sumMoney);
lcd_1.clear();
lcd_1.setCursor(0, 0);
lcd_1.print(String("saved"));
delay(1000);
lcd_1.clear();
}
void setup()
{
pinMode(2, INPUT);
pinMode(3, INPUT);
pinMode(11, INPUT);
pinMode(A0, INPUT);
lcd_1.begin(16,2);
lcd_1.noCursor();
lcd_1.backlight();
lcd_1.setCursor(0, 0);
lcd_1.print(String("Clear EEPROM"));
id = 0;
while ((id < 1024)) {
fnc_EEPROM_writeDouble((int)(id*4),0);
id = (id + 1);
}
pinMode(2, INPUT_PULLUP);
pinMode(3, INPUT_PULLUP);
pinMode(3, INPUT_PULLUP);
lcd_1.clear();
}
void loop()
{
while ((digitalRead(2) == true)) {
lcd_1.setCursor(0, 0);
lcd_1.print(String("press 1"));
}
for (int count = 0; count < 1; count++) {
lcd_1.setCursor(0, 0);
lcd_1.print(String("initiallizing. "));
delay(1000);
lcd_1.setCursor(0, 0);
lcd_1.print(String("initiallizing.. "));
delay(1000);
lcd_1.setCursor(0, 0);
lcd_1.print(String("initiallizing..."));
delay(1000);
}
do_something();
lcd_1.clear();
}