You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
64 lines
1.1 KiB
64 lines
1.1 KiB
#define ADC_PIN A0 |
|
#define RELAY_PIN 13 |
|
#define RELAY_OFF LOW |
|
#define RELAY_ON HIGH |
|
|
|
#define NUM_SAMPLES 20 |
|
#define SAMPLE_TIME 100 |
|
#define WATER_THRESHOLD 750 |
|
|
|
bool leakDetected = false; |
|
|
|
void relayOn() { |
|
Serial.println("Setting relay ON"); |
|
digitalWrite(RELAY_PIN, RELAY_ON); |
|
} |
|
|
|
void relayOff() { |
|
Serial.println("Setting relay OFF"); |
|
digitalWrite(RELAY_PIN, RELAY_OFF); |
|
} |
|
|
|
bool sampleWater() { |
|
bool waterDetected = true; |
|
|
|
Serial.print("Samples: "); |
|
|
|
for (int i = 0; i < NUM_SAMPLES; i++) { |
|
int sample = analogRead(ADC_PIN); |
|
Serial.print(sample); |
|
Serial.print(",\t"); |
|
|
|
if (sample < WATER_THRESHOLD) { |
|
waterDetected = false; |
|
} |
|
|
|
delay(SAMPLE_TIME); |
|
} |
|
|
|
Serial.println(waterDetected ? "POS" : "NEG"); |
|
|
|
return waterDetected; |
|
} |
|
|
|
void setup() { |
|
Serial.begin(115200); |
|
//Serial.setDebugOutput(true); |
|
|
|
Serial.println(); |
|
Serial.println(); |
|
Serial.println(); |
|
Serial.println("===== BOOT UP ====="); |
|
|
|
pinMode(RELAY_PIN, OUTPUT); |
|
relayOn(); |
|
} |
|
|
|
void loop() { |
|
if (sampleWater()) { |
|
Serial.println("Water detected"); |
|
relayOff(); |
|
} else { |
|
Serial.println("No water"); |
|
} |
|
}
|
|
|