Connecting a water sensor to an Arduino is a great way to detect a leak, spill, flood, rain etc. It can be used to detect the presence, level, volume and/or the absence of water. While this could be used to remind you to water your plants, there is a better Grove sensor for that. The sensor has an array of exposed traces which will read LOW when water is detected. In this tutorial, we will connect the Water Sensor to Digital Pin 8 on the Arduino, and will enlist the very handy Grove Piezo buzzer and an LED to help identify when the Water sensor comes into contact with a source of water.

Parts Required:

Putting it together

If you have a Grove Base Shield, you just have to connect the Grove Water Sensor to D8 on the shield, and the Buzzer to D12 on the Shield. My Grove base shield obstructs the onboard LED, so I will attach an LED to Digital pin 13. If you do not have a Grove base shield, then you should connect the Sensors as described in the tables below:

Arduino Sketch

/* Grove Water Sensor sketch Written by ScottC 5th August 2014 Arduino IDE version 1.0.5 Website: http://arduinobasics.blogspot.com Description: Use Grove Water Sensor to detect leaks, floods, spills, rain etc. Credits: This sketch was inspired by this website: http://www.seeedstudio.com/wiki/Grove_-_Water_Sensor ------------------------------------------------------------- */#define Grove_Water_Sensor 8 //Attach Water sensor to Arduino Digital Pin 8#define Grove_Piezo_Buzzer 12 //Attach Piezo Buzzer to Arduino Digital Pin 12#define LED 13 //Attach an LED to Digital Pin 13 (or use onboard LED)voidsetup(){pinMode(Grove_Water_Sensor, INPUT); //The Water Sensor is an InputpinMode(Grove_Piezo_Buzzer, OUTPUT); //The Piezo Buzzer is an OutputpinMode(LED, OUTPUT); //The LED is an Output}

voidloop(){/* The water sensor will switch LOW when water is detected. Get the Arduino to illuminate the LED and activate the buzzer when water is detected, and switch both off when no water is present */if(digitalRead(Grove_Water_Sensor) == LOW){digitalWrite(LED,HIGH);digitalWrite(Grove_Piezo_Buzzer, HIGH);delay(2);digitalWrite(Grove_Piezo_Buzzer, LOW);delay(40); }else{digitalWrite(Grove_Piezo_Buzzer, LOW);digitalWrite(LED,LOW); }}