Water Level Sensor - always > 40%

Hey hey,

by now I have two Grove Water Level Sensors, both showing the same behaviour. Whenever I turn them on, they start of with a base level of 40% - when I put them in water the level rises, but it never goes lower than 40%.

The code is exactly the code from the linked example page. However, it still does not go lower.

When looking at the logs for the high and the low values, there is a peculiarity … the low value never changes.

[18:48:43][D][custom:033]: low 8 sections value =
[18:48:43][D][custom:035]: high 12 sections value =

Does anyone have a clue when this will happen? If the cable would be wrong, the I2C bus protocol would probably show no data at all, correct?
I also tried with both 3V and 5V, just no changes. It is also not the sensor, as I now tried two of them.

Anyone having an idea?


I know this is an old thread but, how did you get two of these communicating. Did you use these with a multiplexer, i’m struggling with my code to have them reading from the multiplexer.

i assume he is saying he has two and switched ine for the other and gets the same results… that sounds like a code problem to me

interesting device, i didnt know it was so complicated

Hi klassm, it sounds like something went wrong with the program. You are right, if there is an error in the I2C protocol, the sensor cannot read the data, 3.3V/5V are his standard working input voltage, so the reasons for the error may be due to two reasons:

  1. Program errors, the problem is simple, you can view the wiki Seeed, in this you can see the detailed wiring and various parameters of the module description: Grove - Water Level Sensor | Seeed Studio Wiki

  2. The sensor itself may be damaged, if the above can not solve your problem, you can try to send back, we will repair your sensor!


This is likely not a software problem. I bought a water level sensor myself and after one day using it, it shows the same behavior. What I verified is that once the water level goes down, the sensor is still wet and the values for the different sections stay high, as if the water level was still high.

To get it to 0, one should dry it manually. I would say that rather than a water level sensor it is a humidity sensor. it sucks…

by the way, you can get two i2c devices working simultaneously if you use a multiplexer

The sensor worked during one day.

Hi there and welcome,
I’m not a fan of the Horizontal Ideology of this one either. I do like the vertical type
Did you Do any kind of calibration of it in your code or prior to it?
LIKE this? that way if it’s a little sloppy (your still in a known range)

Finding the threshold values

To estimate the water level, record the values of your sensor output when the sensor is completely dry, partially immersed, and fully immersed in water.

Simply run the sketch and take your readings.

Keep in mind that your sensor may be more or less sensitive depending on the type of water you use. As you may know, pure water is not conductive; it is the minerals and impurities in water that make it conductive.

When you run the sketch, you should see readings similar to the ones below:

  • when the sensor is dry (0)
  • when the sensor is partially immersed in water (~420)
  • when the sensor is fully immersed in water (~520)

water level sensor calibration

This test may require some trial and error. Once you have the readings, you can use them as a threshold to trigger an action.

from this article

8 minute read…
GL :slight_smile: PJ

May try with different types of water… distilled vs tap… cs coke a cola… I had a thought that you
May spray some type of hydrophobic on it to help move the water away faster… but that may also block the electrical signal… just some ideas