const int numSensors = 5;
int salinitySensors[numSensors];
const int saltyPumpPin = 3;
const int freshPumpPin = 4;
const int ledPin = 5;
bool ledState = LOW;
void setup() {
Serial.begin(9600);
pinMode(saltyPumpPin, OUTPUT);
pinMode(freshPumpPin, OUTPUT);
pinMode(ledPin, OUTPUT);
randomSeed(analogRead(0));
}
void loop() {
for (int i = 0; i < numSensors; i++) {
salinitySensors[i] = random(10, 41); // generate random salinity values between 10-40 ppt
}
int minSalinity = salinitySensors[0];
int maxSalinity = salinitySensors[0];
float sumSalinity = 0;
for (int i = 0; i < numSensors; i++) {
if (salinitySensors[i] < minSalinity) {
minSalinity = salinitySensors[i];
}
if (salinitySensors[i] > maxSalinity) {
maxSalinity = salinitySensors[i];
}
sumSalinity += salinitySensors[i];
}
float avgSalinity = sumSalinity / numSensors;
Serial.print("Minimum Salinity: ");
Serial.print(minSalinity);
Serial.println(" ppt");
Serial.print("Maximum Salinity: ");
Serial.print(maxSalinity);
Serial.println(" ppt");
Serial.print("Average Salinity: ");
Serial.print(avgSalinity);
Serial.println(" ppt");
if (avgSalinity < 15) {
digitalWrite(saltyPumpPin, HIGH);
digitalWrite(freshPumpPin, LOW);
Serial.println("Salty pump ON, Fresh pump OFF");
} else if (avgSalinity > 35) {
digitalWrite(saltyPumpPin, LOW);
digitalWrite(freshPumpPin, HIGH);
Serial.println("Salty pump OFF, Fresh pump ON");
} else {
digitalWrite(saltyPumpPin, LOW);
digitalWrite(freshPumpPin, LOW);
Serial.println("Both pumps OFF");
}
if (avgSalinity < 15 || avgSalinity > 35) {
static unsigned long warningStartTime = millis();
if (millis() - warningStartTime > 600000) { // 10 minutes
ledState = !ledState;
digitalWrite(ledPin, ledState);
delay(1000);
}
} else {
digitalWrite(ledPin, LOW);
}
delay(60000); // wait 1 minute before taking the next reading
}