Maker.io main logo

Arduino Water Level Display – Real-Time Level on I2C LCD

2025-11-12 | By Ron Cutts

License: GNU Lesser General Public License Displays LCD / TFT Liquid Level Water Quality Arduino ESP32 ESP8266

 

In this Visuino project, you’ll learn how to easily measure and display water levels using a water level sensor and an I2C LCD—all without writing a single line of code!

📟 The LCD shows the real-time water level value from 0.0 to 1.0 (so you can see any level in between, like 0.3 or 0.7).

💡 On the second row, it also displays a status label—Low, Medium, or High—based on the thresholds you set in Visuino.

Perfect for learning how to:

✅ Read water level using analog or digital sensors

✅ Display live readings and status on an LCD

✅ Build automatic monitoring or control systems

✅ Use Visuino visual programming to design Arduino projects fast and easily

📥 Download the Visuino project file at the bottom

🎥 Watch the full video to see it in action!

Step 1: What You Will Need

What You Will Need

What You Will Need

What You Will Need

What You Will Need

What You Will Need

  1. Arduino UNO (Or any other Arduino-compatible board)

  2. Water Level sensor

  3. LCD I2C Display

  4. Jumper wires

  5. Visuino program: Download Visuino

Step 2: The Circuit

The Circuit

  1. Connect LCD Display pin [SCL] to Arduino pin [SCL]

  2. Connect LCD Display pin [SDA] to Arduino pin [SDA]

  3. Connect LCD Display pin [VCC] to Arduino pin [5V]

  4. Connect LCD Display pin [GND] to Arduino pin [GND]

  5. Connect the water level sensor pin[S] to Arduino analog pin [A0].

  6. Connect the water level sensor pin [-] to the Arduino ground pin [GND].

  7. Connect the water level sensor pin [+] to the Arduino positive pin [5V].

Step 3: Start Visuino, and Select the Arduino UNO Board Type

Start Visuino, and Select the Arduino UNO Board Type

Start Visuino, and Select the Arduino UNO Board Type

Start Visuino as shown in the first picture. Click on the "Tools" button on the Arduino component (Picture 1) in Visuino. When the dialog appears, select "Arduino UNO" as shown in Picture 2

Step 4: In Visuino Add Components

In Visuino Add Components

In Visuino Add Components

In Visuino Add Components

In Visuino Add Components

  1. Add "Analog Multi Source" component

  2. Add 2X "Compare Analog Value" component

  3. Add "Compare Analog Range" component

  4. Add "Text Value" component

  5. Add "Liquid Crystal Display (LCD) - I2C" component

Step 5: In Visuino Set Components

In Visuino Set Components

In Visuino Set Components

In Visuino Set Components

In Visuino Set Components

In Visuino Set Components

In Visuino Set Components

In Visuino Set Components

In Visuino Set Components

In Visuino Set Components

In Visuino Set Components

In Visuino Set Components

  1. Select "MultiSource1" and in the properties window set "Output Pins" to 4

  2. Select "Compare1" and in the properties window set "Compare Type" to ctSmallerOrEqual and "Value" to 0.3 << this is the value for "LOW" level; adjust it according to your needs

  3. Select "CompareRange1" and in the properties window set "Range">"Max" to 0.4 and "Range">"Min" to 0.3<< this is the value for "MEDIUM" level; adjust it according to your needs

  4. Select "Compare2" and in the properties window set "Compare Type" to ctBiggerOrEqual and "Value" to 0.4 << this is the value for "HIGH" level; adjust it according to your needs

  1. Double-click on the "TextValue1" and in the Elements window drag "Set Value" to the left side and in the properties window set "Value" to LOW

  2. Drag another "Set Value" to the left side, and in the properties window, set "Value" to MEDIUM

  3. Drag another "Set Value" to the left side, and in the properties window, set "Value" to HIGH

  4. Double-click on the "LiquidCrystalDisplay1" and in the Elements window drag "Text Field" to the left side and in the properties window set "Initial Value" to VALUE and "Width" to 6

  5. Drag another "Text Field" to the left side and in the properties window, set "Row" to 1

  6. In the Elements window, drag "Analog Field" to the left side, and in the properties window, set "Column" to 7, "Width" to 10, and "Precision" to 2

Step 6: In Visuino Connect Components

imageimage

  1. Connect Arduino Analog pin [ 0 ] to "MultiSource1" pin [In]

  2. Connect "LiquidCrystalDisplay1" pin [I2C Out] to "Arduino.I2CChannels.I2C" pin [In]

  3. Connect "MultiSource1" Pin [0] to "LiquidCrystalDisplay1" > "AnalogField1" pin [In]

  4. Connect "MultiSource1" Pin [1] to "Compare1" pin [In]

  5. Connect "MultiSource1" Pin [2] to "CompareRange1" pin [In]

  6. Connect "MultiSource1" Pin [3] to "Compare2" pin [In]

  7. Connect "Compare1" pin [Out] to "TextValue1" > "Set Value1" Pin [In]

  8. Connect "CompareRange1" pin [Out] to "TextValue1" > "Set Value2" Pin [In]

  9. Connect "Compare2" pin [Out] to "TextValue1" > "Set Value3" Pin [In]

  10. Connect "TextValue1" pin [Out] to "LiquidCrystalDisplay1" > "TextField2" pin [In]

Step 7: Generate, Compile, and Upload the Arduino Code

Generate, Compile, and Upload the Arduino Code

In Visuino, at the bottom, click on the "Build" tab, make sure the correct port is selected, and then click on the "Compile/Build and Upload" button.

Step 8: Play

Congratulations! You have completed your project with Visuino. Also attached is the Visuino project that I created for this. You can download it here and open it in Visuino: https://www.visuino.eu

Download: Water-level-lcd.visuino

Have questions or comments? Continue the conversation on TechForum, DigiKey's online community and technical resource.