Sunteți pe pagina 1din 24

#include <EEPROM.

h>
#include <LiquidCrystal.h>
LiquidCrystal LCD1 (34, 36, 38, 40, 42, 44);
LiquidCrystal LCD2 (35, 37, 39, 41, 43, 45);
#include <Adafruit_Fingerprint.h>
#include <Streaming.h>
#include <SoftwareSerial.h>
SoftwareSerial bio1 (19, 18);
SoftwareSerial bio2 (17, 16);
Adafruit_Fingerprint finger = Adafruit_Fingerprint(&bio1);
Adafruit_Fingerprint finger2 = Adafruit_Fingerprint(&bio2);
#include <Keypad.h>
const byte ROWS = 4;
const byte COLS = 3;
char keys[ROWS][COLS] = {
{
'1','2','3'
,
{
'4','5','6'
,
{
'7','8','9'
,
{
'*','0','#'
};

}
}
}
}

byte rowPins[ROWS] = {
11, 10, 9, 8 };
byte colPins[COLS] = {
7, 6, 5 };
Keypad kpd = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
char inputkey;
char tempkey;
float
float
float
float
float
int
int
int
int
int

totalcredit;
tempcredit;
creditfaucet1;
creditfaucet2;
credit;

programroute;
id;
temparray[5];
faucet1off;
faucet2off;

int relay1open = 3;

int
int
int
int
int
int
int

relay1close = 2;
relay2open = 13;
relay2close = 12;
adminkey = 59;
buzzer = 58;
sensor1 = 61;
sensor2 = 60;

int faucet1 = 0;
int faucet2 = 0;
#define __Debug
#if __Debug
#define DBG(X)
#else
#define DBG(X)
#endif

1
Serial.println(X)

void setup(){
LCD1.begin(20,4);
LCD2.begin(20,4);
pinMode(sensor1,INPUT);
pinMode(sensor2,INPUT);
pinMode(adminkey,INPUT);
pinMode(buzzer,OUTPUT);
pinMode(relay1open,OUTPUT);
pinMode(relay1close,OUTPUT);
pinMode(relay2open,OUTPUT);
pinMode(relay2close,OUTPUT);
Serial.begin(9600);
finger.begin(115200);
if (finger.verifyPassword())
{
LCD1.clear();
LCD2.clear();
LCD1.print("FINGERPRINT SENSOR");
LCD2.print("OKAY");
delay(2000);
LCD1.clear();
LCD2.clear();
LCD1.print("WATER CONSERVATION");
LCD1.setCursor(0,1);
LCD1.print("UTILIZING BIOMETRIC");
LCD1.setCursor(0,2);
LCD1.print("PREPAID SYSTEM");
LCD2.print("initializing . . .");
}
else
{
LCD1.clear();
LCD2.clear();
LCD1.print("FINGERPRINT SENSOR");
LCD2.print("NOT FOUND");
while (1);
}
EEPROM.write (200, 16.507);
}
void loop(){

inputkey = kpd.getKey();
switch (programroute){
case 0:
initial();
break;
case 1:
adminmenu();
break;
case 2:
enrollfinger();
break;
case 3:
addcredit();
break;
case 4:
changerate();
break;
case 5:
readprint();
break;
case 6:
usewater();
break;
case 7:
stopwater();
break;
}
}
void initial(){
if (adminkey == 1){
programroute = 1;
}
else
{
programroute = 5;
}
}
void adminmenu(){
LCD2.clear();
LCD2.home();
LCD2.print("1-REGISTER FINGER");
LCD2.setCursor(0,1);
LCD2.print("2-ADD CREDIT");
LCD2.setCursor(1,1);
LCD2.print("3-CHANGE RATE");
if(inputkey)
{
switch (inputkey)
{
case '1':
programroute = 2;
break;
case '2':
programroute = 3;
break;
case '3':
programroute = 4;

break;
case '*':
adminmenu();
break;
default:
adminmenu();
break;
}
}
}
void enrollfinger(){
inputkey = kpd.getKey();
LCD2.clear();
LCD2.home();
LCD2.print("REGISTER FINGER");
LCD2.setCursor(0,1);
LCD2.print("TYPE USER 1-9");
uint8_t id = 0;
if(inputkey)
{
switch (inputkey)
{
case '1':
tempkey = 1;
break;
case '2':
tempkey = 2;
break;
case '3':
tempkey = 3;
break;
case '4':
tempkey = 4;
break;
case '5':
tempkey = 5;
break;
case '6':
tempkey = 6;
break;
case '7':
tempkey = 7;
break;
case '8':
tempkey = 8;
break;
case '9':
tempkey = 9;
break;
case '0':
enrollfinger();
break;
case '*':
programroute=1;
break;
case '#':
programroute=1;
break;

default:
enrollfinger();
break;
}
}
id = tempkey;
id = id;
tempkey=0;
LCD2.clear();
LCD2.home();
LCD2.print("USER #");
LCD2.setCursor(0,1);
LCD2.print(id);
while (!getFingerprintEnroll(id));
}
uint8_t getFingerprintEnroll(uint8_t id)
{
uint8_t p = -1;
Serial.println("Waiting for valid finger to enroll");
LCD2.clear();
LCD2.home();
LCD2.print("SCAN YOUR FINGER");
while (p != FINGERPRINT_OK) {
p = finger.getImage();
switch (p) {
case FINGERPRINT_OK:
Serial.println("Image taken");
break;
case FINGERPRINT_NOFINGER:
//Serial.println(".");
break;
case FINGERPRINT_PACKETRECIEVEERR:
Serial.println("Communication error");
break;
case FINGERPRINT_IMAGEFAIL:
Serial.println("Imaging error");
break;
default:
Serial.println("Unknown error");
break;
}
}
// OK success!
p = finger.image2Tz(1);
switch (p) {
case FINGERPRINT_OK:
Serial.println("Image converted");
break;
case FINGERPRINT_IMAGEMESS:
Serial.println("Image too messy");
return p;
case FINGERPRINT_PACKETRECIEVEERR:
Serial.println("Communication error");
return p;
case FINGERPRINT_FEATUREFAIL:
Serial.println("Could not find fingerprint features");

return p;
case FINGERPRINT_INVALIDIMAGE:
Serial.println("Could not find fingerprint features");
return p;
default:
Serial.println("Unknown error");
return p;
}
Serial.println("Remove finger");
LCD2.clear();
LCD2.home();
LCD2.print("PLEASE LIFT YOUR FINGER");
delay(2000);
p = 0;
while (p != FINGERPRINT_NOFINGER) {
p = finger.getImage();
}
p = -1;
Serial.println("Place same finger again");
LCD2.clear();
LCD2.home();
LCD2.print("SCAN YOUR FINGER AGAIN");
while (p != FINGERPRINT_OK) {
p = finger.getImage();
switch (p) {
case FINGERPRINT_OK:
Serial.println("Image taken");
break;
case FINGERPRINT_NOFINGER:
//Serial.print(".");
break;
case FINGERPRINT_PACKETRECIEVEERR:
Serial.println("Communication error");
LCD2.clear();
LCD2.home();
LCD2.print("ERROR!!!!");
break;
case FINGERPRINT_IMAGEFAIL:
Serial.println("Imaging error");
LCD2.clear();
LCD2.home();
LCD2.print("ERROR!!!!");
break;
default:
Serial.println("Unknown error");
LCD2.clear();
LCD2.home();
LCD2.print("ERROR!!!!");
break;
}
}
// OK success!
p = finger.image2Tz(2);
switch (p) {
case FINGERPRINT_OK:
Serial.println("Image converted");

break;
case FINGERPRINT_IMAGEMESS:
Serial.println("Image too messy");
LCD2.clear();
LCD2.home();
LCD2.print("ERROR!!!!");
return p;
case FINGERPRINT_PACKETRECIEVEERR:
Serial.println("Communication error");
LCD2.clear();
LCD2.home();
LCD2.print("ERROR!!!!");
return p;
case FINGERPRINT_FEATUREFAIL:
Serial.println("Could not find fingerprint features");
LCD2.clear();
LCD2.home();
LCD2.print("ERROR!!!!");
return p;
case FINGERPRINT_INVALIDIMAGE:
Serial.println("Could not find fingerprint features");
LCD2.clear();
LCD2.home();
LCD2.print("ERROR!!!!");
return p;
default:
Serial.println("Unknown error");
LCD2.clear();
LCD2.home();
LCD2.print("ERROR!!!!");
return p;
}
// OK converted!
p = finger.createModel();
if (p == FINGERPRINT_OK) {
Serial.println("Prints matched!");
}
else if (p == FINGERPRINT_PACKETRECIEVEERR) {
Serial.println("Communication error");
LCD2.clear();
LCD2.home();
LCD2.print("ERROR!!!!");
return p;
}
else if (p == FINGERPRINT_ENROLLMISMATCH) {
Serial.println("Fingerprints did not match");
LCD2.clear();
LCD2.home();
LCD2.print("ERROR!!!!");
return p;
}
else {
Serial.println("Unknown error");
LCD2.clear();
LCD2.home();
LCD2.print("ERROR!!!!");
return p;
}

p = finger.storeModel(id);
if (p == FINGERPRINT_OK) {
Serial.println("Stored!");
LCD2.clear();
LCD2.home();
LCD2.print("FINGER REGISTERED");
}
else if (p == FINGERPRINT_PACKETRECIEVEERR) {
Serial.println("Communication error");
LCD2.clear();
LCD2.home();
LCD2.print("ERROR!!!!");
return p;
}
else if (p == FINGERPRINT_BADLOCATION) {
Serial.println("Could not store in that location");
LCD2.clear();
LCD2.home();
LCD2.print("ERROR!!!!");
return p;
}
else if (p == FINGERPRINT_FLASHERR) {
Serial.println("Error writing to flash");
LCD2.clear();
LCD2.home();
LCD2.print("ERROR!!!!");
return p;
}
else {
Serial.println("Unknown error");
LCD2.clear();
LCD2.home();
LCD2.print("ERROR!!!!");
return p;
}
programroute = 1;
}
void addcredit(){
inputkey = kpd.getKey();
LCD2.home();
LCD2.print("Select User");
if(inputkey) // Check for a valid key.
{
switch (inputkey)
{
case '1':
tempkey = 1;
break;
case '2':
tempkey = 2;
break;
case '3':
tempkey = 3;
break;
case '4':
tempkey = 4;
break;
case '5':

tempkey = 5;
break;
case '6':
tempkey = 6;
break;
case '7':
tempkey = 7;
break;
case '8':
tempkey = 8;
break;
case '9':
tempkey = 9;
break;
case '*':
programroute=1;
break;
case '#':
programroute=1;
break;
default:
programroute=1;
break;
}
}
int user = tempkey;
tempkey = 0;
LCD2.clear();
LCD2.home();
LCD2.print("How MUCH?");
if(inputkey) // Check for a valid key.
{
switch (inputkey)
{
case '1':
tempkey = 1;
break;
case '2':
tempkey = 2;
break;
case '3':
tempkey = 3;
break;
case '4':
tempkey = 4;
break;
case '5':
tempkey = 5;
break;
case '6':
tempkey = 6;
break;
case '7':
tempkey = 7;
break;
case '8':
tempkey = 8;
break;
case '9':
tempkey = 9;

break;
case '0':
tempkey = 0;
break;
case '*':
programroute=1;
break;
case '#':
programroute=1;
break;
default:
programroute=1;
break;
}
}
temparray[0] = tempkey;
tempkey = 0;
LCD2.setCursor(0,1);
LCD2.print(temparray[0]);
if(inputkey) // Check for a valid key.
{
switch (inputkey)
{
case '1':
tempkey = 1;
break;
case '2':
tempkey = 2;
break;
case '3':
tempkey = 3;
break;
case '4':
tempkey = 4;
break;
case '5':
tempkey = 5;
break;
case '6':
tempkey = 6;
break;
case '7':
tempkey = 7;
break;
case '8':
tempkey = 8;
break;
case '9':
tempkey = 9;
break;
case '0':
tempkey = 0;
break;
case '*':
programroute=1;
break;
case '#':
programroute=1;
break;

default:
programroute=1;
break;
}
}
temparray[1] = tempkey;
tempkey = 0;
LCD2.setCursor(1,1);
LCD2.print(temparray[1]);
if(inputkey) // Check for a valid key.
{
switch (inputkey)
{
case '1':
tempkey = 1;
break;
case '2':
tempkey = 2;
break;
case '3':
tempkey = 3;
break;
case '4':
tempkey = 4;
break;
case '5':
tempkey = 5;
break;
case '6':
tempkey = 6;
break;
case '7':
tempkey = 7;
break;
case '8':
tempkey = 8;
break;
case '9':
tempkey = 9;
break;
case '0':
tempkey = 0;
break;
case '*':
programroute=1;
break;
case '#':
programroute=1;
break;
default:
programroute=1;
break;
}
}
temparray[2] = tempkey;
tempkey = 0;
LCD2.setCursor(2,1);
LCD2.print(temparray[2]);
LCD2.setCursor(3,1);

LCD2.print(".");
if(inputkey) // Check for a valid key.
{
switch (inputkey)
{
case '1':
tempkey = 1;
break;
case '2':
tempkey = 2;
break;
case '3':
tempkey = 3;
break;
case '4':
tempkey = 4;
break;
case '5':
tempkey = 5;
break;
case '6':
tempkey = 6;
break;
case '7':
tempkey = 7;
break;
case '8':
tempkey = 8;
break;
case '9':
tempkey = 9;
break;
case '0':
tempkey = 0;
break;
case '*':
programroute=1;
break;
case '#':
programroute=1;
break;
default:
programroute=1;
break;
}
}
temparray[3] = tempkey;
tempkey = 0;
LCD2.setCursor(4,1);
LCD2.print(temparray[3]);
if(inputkey) // Check for a valid key.
{
switch (inputkey)
{
case '1':
tempkey = 1;
break;

case '2':
tempkey = 2;
break;
case '3':
tempkey = 3;
break;
case '4':
tempkey = 4;
break;
case '5':
tempkey = 5;
break;
case '6':
tempkey = 6;
break;
case '7':
tempkey = 7;
break;
case '8':
tempkey = 8;
break;
case '9':
tempkey = 9;
break;
case '0':
tempkey = 0;
break;
case '*':
programroute=1;
break;
case '#':
programroute=1;
break;
default:
programroute=1;
break;
}
}
temparray[4] = tempkey;
tempkey = 0;
LCD2.setCursor(5,1);
LCD2.print(temparray[4]);
if (temparray[0] > 0 && temparray[1] > 0 && temparray[2] > 0 && temparray[3] >
0 && temparray[4] > 0){
tempcredit = (temparray[0]*100) + (temparray[1]*10) + (temparray[2]) + (temp
array[3]*0.1) + (temparray[4]*0.01);
if (user ==1){
EEPROM.write(100, tempcredit);
}
if (user ==2){
EEPROM.write(101, tempcredit);
}
if (user ==3){
EEPROM.write(102, tempcredit);
}
if (user ==4){
EEPROM.write(103, tempcredit);
}
if (user ==5){

EEPROM.write(104,
}
if (user ==6){
EEPROM.write(105,
}
if (user ==7){
EEPROM.write(106,
}
if (user ==8){
EEPROM.write(107,
}
if (user ==9){
EEPROM.write(108,
}

tempcredit);
tempcredit);
tempcredit);
tempcredit);
tempcredit);

}
LCD2.clear();
LCD2.home();
LCD2.print("SUCCESSFUL!");
LCD2.setCursor(0,1);
LCD2.print(temparray[0]);
LCD2.setCursor(1,1);
LCD2.print(temparray[1]);
LCD2.setCursor(2,1);
LCD2.print(temparray[2]);
LCD2.setCursor(3,1);
LCD2.print(".");
LCD2.setCursor(4,1);
LCD2.print(temparray[3]);
LCD2.setCursor(5,1);
LCD2.print(temparray[4]);
delay(2000);
temparray[0]
temparray[1]
temparray[2]
temparray[3]
temparray[4]

=
=
=
=
=

0;
0;
0;
0;
0;

programroute = 1;
}
void changerate(){
LCD2.clear();
LCD2.home();
LCD2.print("Change Rate");
if(inputkey) // Check for a valid key.
{
switch (inputkey)
{
case '1':
tempkey = 1;
break;
case '2':
tempkey = 2;
break;
case '3':
tempkey = 3;
break;

case '4':
tempkey = 4;
break;
case '5':
tempkey = 5;
break;
case '6':
tempkey = 6;
break;
case '7':
tempkey = 7;
break;
case '8':
tempkey = 8;
break;
case '9':
tempkey = 9;
break;
case '0':
tempkey = 0;
break;
case '*':
programroute=1;
break;
case '#':
programroute=1;
break;
default:
programroute=1;
break;
}
}
temparray[0] = tempkey;
tempkey = 0;
LCD2.setCursor(0,1);
LCD2.print(temparray[0]);
if(inputkey) // Check for a valid key.
{
switch (inputkey)
{
case '1':
tempkey = 1;
break;
case '2':
tempkey = 2;
break;
case '3':
tempkey = 3;
break;
case '4':
tempkey = 4;
break;
case '5':
tempkey = 5;
break;
case '6':
tempkey = 6;
break;
case '7':

tempkey = 7;
break;
case '8':
tempkey = 8;
break;
case '9':
tempkey = 9;
break;
case '0':
tempkey = 0;
break;
case '*':
programroute=1;
break;
case '#':
programroute=1;
break;
default:
programroute=1;
break;
}
}
temparray[1] = tempkey;
tempkey = 0;
LCD2.setCursor(1,1);
LCD2.print(temparray[1]);
if(inputkey) // Check for a valid key.
{
switch (inputkey)
{
case '1':
tempkey = 1;
break;
case '2':
tempkey = 2;
break;
case '3':
tempkey = 3;
break;
case '4':
tempkey = 4;
break;
case '5':
tempkey = 5;
break;
case '6':
tempkey = 6;
break;
case '7':
tempkey = 7;
break;
case '8':
tempkey = 8;
break;
case '9':
tempkey = 9;
break;
case '0':
tempkey = 0;

break;
case '*':
programroute=1;
break;
case '#':
programroute=1;
break;
default:
programroute=1;
break;
}
}
temparray[2] = tempkey;
tempkey = 0;
LCD2.setCursor(2,1);
LCD2.print(temparray[2]);
LCD2.setCursor(3,1);
LCD2.print(".");
if(inputkey) // Check for a valid key.
{
switch (inputkey)
{
case '1':
tempkey = 1;
break;
case '2':
tempkey = 2;
break;
case '3':
tempkey = 3;
break;
case '4':
tempkey = 4;
break;
case '5':
tempkey = 5;
break;
case '6':
tempkey = 6;
break;
case '7':
tempkey = 7;
break;
case '8':
tempkey = 8;
break;
case '9':
tempkey = 9;
break;
case '0':
tempkey = 0;
break;
case '*':
programroute=1;
break;
case '#':
programroute=1;
break;

default:
programroute=1;
break;
}
}
temparray[3] = tempkey;
tempkey = 0;
LCD2.setCursor(4,1);
LCD2.print(temparray[3]);
if(inputkey) // Check for a valid key.
{
switch (inputkey)
{
case '1':
tempkey = 1;
break;
case '2':
tempkey = 2;
break;
case '3':
tempkey = 3;
break;
case '4':
tempkey = 4;
break;
case '5':
tempkey = 5;
break;
case '6':
tempkey = 6;
break;
case '7':
tempkey = 7;
break;
case '8':
tempkey = 8;
break;
case '9':
tempkey = 9;
break;
case '0':
tempkey = 0;
break;
case '*':
programroute=1;
break;
case '#':
programroute=1;
break;
default:
programroute=1;
break;
}
}
temparray[4] = tempkey;
tempkey = 0;
LCD2.setCursor(5,1);
LCD2.print(temparray[4]);
if (temparray[0] > 0 && temparray[1] > 0 && temparray[2] > 0 && temparray[3] >

0 && temparray[4] > 0){


float temprate = (temparray[0]*100) + (temparray[1]*10) + (temparray[2]) + (
temparray[3]*0.1) + (temparray[4]*0.01);
EEPROM.write(200, temprate);
}
LCD2.clear();
LCD2.home();
LCD2.print("SUCCESSFUL!");
LCD2.setCursor(0,1);
LCD2.print(temparray[0]);
LCD2.setCursor(1,1);
LCD2.print(temparray[1]);
LCD2.setCursor(2,1);
LCD2.print(temparray[2]);
LCD2.setCursor(3,1);
LCD2.print(".");
LCD2.setCursor(4,1);
LCD2.print(temparray[3]);
LCD2.setCursor(5,1);
LCD2.print(temparray[4]);
delay(2000);
temparray[0]
temparray[1]
temparray[2]
temparray[3]
temparray[4]

=
=
=
=
=

0;
0;
0;
0;
0;

programroute = 1;
}
void readprint(){
LCD1.clear();
LCD2.clear();
LCD1.print("WATER CONSERVATION");
LCD1.setCursor(0,1);
LCD1.print("UTILIZING BIOMETRIC");
LCD1.setCursor(0,2);
LCD1.print("PREPAID SYSTEM");
LCD2.home();
LCD2.print("READ MODE");
if(getFingerprintIDez()>=0)
{
LCD2.clear();
LCD2.home();
LCD2.print("WELCOME USER#");
LCD2.setCursor(0,1);
LCD2.print(id);
programroute=6;
DBG("get right finger, open water now!!");
delay(2000);
}
delay(50);
}
int getFingerprintIDez()
{

if (!finger.verifyPassword())
{
DBG("Did not find fingerprint sensor :(");
return -1;
}
uint8_t p = finger.getImage();
if (p != FINGERPRINT_OK)
{
return -1;
}
p = finger.image2Tz();
if (p != FINGERPRINT_OK)
{
return -1;
}
p = finger.fingerFastSearch();
if (p != FINGERPRINT_OK)
{
return -1;
}
#if __Debug
Serial.print("Found ID #");
Serial.print(finger.fingerID);
Serial.print(" with confidence of ");
DBG(finger.confidence);
#endif
return finger.fingerID;
}

void usewater(){
float rate = EEPROM.read(200);
if (id == 1){
float credit = EEPROM.read(100);
}
if (id == 2){
float credit = EEPROM.read(101);
}
if (id == 3){
float credit = EEPROM.read(102);
}
if (id == 4){
float credit = EEPROM.read(103);
}
if (id == 5){
float credit = EEPROM.read(104);
}
if (id == 6){
float credit = EEPROM.read(105);
}

if (id == 7){
float credit = EEPROM.read(106);
}
if (id == 8){
float credit = EEPROM.read(107);
}
if (id == 9){
float credit = EEPROM.read(108);
}
inputkey = kpd.getKey();
if (faucet1 ==0 && faucet2 == 0){
LCD1.clear();
LCD1.home();
LCD1.print("SELECT FAUCET 1-*");
LCD2.clear();
LCD2.home();
LCD2.print("SELECT FAUCET 2-#");
if(inputkey)
{
switch (inputkey)
{
case '*':
faucet1 = 1;
digitalWrite(relay1open,HIGH);
delay(5000);
digitalWrite(relay1open,LOW);
creditfaucet1 = credit;
credit=0;
monitorwaterfaucet1();
break;
case '#':
faucet2 = 1;
digitalWrite(relay2open,HIGH);
delay(5000);
digitalWrite(relay2open,HIGH);
creditfaucet2 = credit;
credit=0;
monitorwaterfaucet2();
break;
}
}
}
if (faucet1 ==1 && faucet2 == 0){
digitalWrite(relay2open,HIGH);
delay(5000);
digitalWrite(relay2open,LOW);
creditfaucet2 = credit;
credit=0;
monitorwaterfaucetboth();
}
if (faucet1 ==0 && faucet2 == 1){
digitalWrite(relay1open,HIGH);
delay(5000);
digitalWrite(relay1open,HIGH);
creditfaucet1 = credit;
credit=0;
monitorwaterfaucetboth();
}
}

void monitorwaterfaucet1(){
if (sensor1 ==1){
creditfaucet1 = creditfaucet1 - 0.0046;
LCD1.clear();
LCD1.print("USER #");
LCD1.setCursor(0,1);
LCD1.print(id);
LCD1.setCursor(0,2);
LCD1.print(creditfaucet1);
}
if (inputkey == '*' || creditfaucet1 <1){
faucet1off = 1;
faucet1 = 0;
stopwater();
programroute = 5;
}
if (inputkey == '0'){
programroute = 5;
}
monitorwaterfaucet1();
}
void monitorwaterfaucet2(){
if (sensor2 ==1){
creditfaucet2 = creditfaucet2 - 0.0046;
LCD1.clear();
LCD1.print("USER #");
LCD1.setCursor(0,1);
LCD1.print(id);
LCD1.setCursor(0,2);
LCD1.print(creditfaucet1);
}
if (inputkey == '#' || creditfaucet2 <1){
faucet2off = 1;
faucet2 = 0;
stopwater();
programroute = 5;
}
if (inputkey == '0'){
programroute = 5;
}
monitorwaterfaucet2();
}
void monitorwaterfaucetboth(){
if (sensor1 ==1){
creditfaucet1 = creditfaucet1 - 0.0046;
}
if (sensor2 ==1){
creditfaucet2 = creditfaucet2 - 0.0046;
}
if (sensor1 == 1 && sensor2 == 1){
creditfaucet1 = creditfaucet1 - 0.0046;
creditfaucet2 = creditfaucet2 - 0.0046;
}
if (inputkey == '*' || creditfaucet1 <1){
faucet1off = 1;
faucet1 = 0;
stopwater();
programroute = 5;

}
if (inputkey == '#' || creditfaucet2 <1){
faucet2off = 1;
faucet2 = 0;
stopwater();
programroute = 5;
}
monitorwaterfaucetboth();
}
void stopwater(){
if (faucet1off ==1){
digitalWrite(relay1close,HIGH);
delay(5000);
digitalWrite(relay1close,LOW);
LCD1.clear();
LCD2.clear();
LCD1.print("WATER CONSERVATION");
LCD1.setCursor(0,1);
LCD1.print("UTILIZING BIOMETRIC");
LCD1.setCursor(0,2);
LCD1.print("PREPAID SYSTEM");
if (id == 1){
EEPROM.write(100, creditfaucet1);
}
if (id == 2){
EEPROM.write(101, creditfaucet1);
}
if (id == 3){
EEPROM.write(102, creditfaucet1);
}
if (id == 4){
EEPROM.write(103, creditfaucet1);
}
if (id == 5){
EEPROM.write(104, creditfaucet1);
}
if (id == 6){
EEPROM.write(105, creditfaucet1);
}
if (id == 7){
EEPROM.write(106, creditfaucet1);
}
if (id == 8){
EEPROM.write(107, creditfaucet1);
}
if (id == 9){
EEPROM.write(108, creditfaucet1);
}
}
if (faucet2off ==1){
digitalWrite(relay2close,HIGH);
delay(5000);
digitalWrite(relay2close,LOW);
LCD1.clear();
LCD2.clear();
LCD1.print("WATER CONSERVATION");
LCD1.setCursor(0,1);
LCD1.print("UTILIZING BIOMETRIC");

LCD1.setCursor(0,2);
LCD1.print("PREPAID SYSTEM");
if (id == 1){
EEPROM.write(100, creditfaucet2);
}
if (id == 2){
EEPROM.write(101, creditfaucet2);
}
if (id == 3){
EEPROM.write(102, creditfaucet2);
}
if (id == 4){
EEPROM.write(103, creditfaucet2);
}
if (id == 5){
EEPROM.write(104, creditfaucet2);
}
if (id == 6){
EEPROM.write(105, creditfaucet2);
}
if (id == 7){
EEPROM.write(106, creditfaucet2);
}
if (id == 8){
EEPROM.write(107, creditfaucet2);
}
if (id == 9){
EEPROM.write(108, creditfaucet2);
}
}
return;
}

S-ar putea să vă placă și