Sorry, I tried to attach it. Should I just copy/paste?
See below:
float faucet, soap, soap1 = 0, occupant, occupant1;
double t;
int i, j, k, pumps, trials = 0;
void setup() {
Serial.begin(9600);
Serial.println("--------------------");
Serial.println("Turbine Code v5");
Serial.println("Program records faucet and dispenser activity 30sec after soap is dispensed");
Serial.println("--------------------");
Serial.println("");
delay(2000);
}
void loop() {
soap = (analogRead(0)*5)/1023.0; //measures soap dispenser voltage from pin A0
faucet = (analogRead(1)*5)/1023.0; //measures turbine voltage from pin A1
occupant = (analogRead(2)*5)/1023.0; //measures occupant sensor voltage from pin A2
//-----------for test only---------//
// Serial.print("soap: ");
// Serial.print(soap);
// Serial.print(" faucet: ");
// Serial.print(faucet);
// Serial.print(" occupant: ");
// Serial.println(occupant);
//---------------------------------//
//---------------main algorithm---------------//
if(occupant > 0.45 & occupant1 > 0.45) { //senses that someone is there
soap1 = soap; //updates values of soap1 and occupant1, they aren't needed before
occupant1 = occupant;
while(1) { //endless loop while someone is using the sink
soap = (analogRead(0)*5)/1023.0;
faucet = (analogRead(1)*5)/1023.0;
occupant = (analogRead(2)*5)/1023.0;
if(occupant < 0.40) { //if person leaves, check everything and print if needed
if(pumps == 0) { //won't print if there was no soap usage
t = 0;
pumps = 0;
break;
}
trials++; //increments trial number and prints out all data
Serial.print(trials);
Serial.print(" ");
Serial.print(t/100);
Serial.print(" ");
Serial.println(pumps);
pumps = 0; //sets values back to 0 for next measurement
t = 0;
break;
}
if(faucet > 1.45) { //turbine will output voltage > 1.45V if water is running
t++; //measures time water was on
}
if(soap > .10 && soap1 < .10 ) { //soap dispenser voltage is active low, measures falling edge
pumps++;
}
soap1 = soap; //soap1 and occupant1 hold pervious values to look for changes
occupant1 = occupant;
delay(10);
}
}
occupant1 = occupant;
delay(10);
}