Arduino Water Level Indicator with LCD & Alarm – Easy Build!

In this project, we will learn how to make a water level monitoring system using an Arduino Nano board. For that, I used a water sensor to detect the water level. Also, I have added an LCD screen and LEDs to indicate the water levels. When the water level is low, the LEDs will show the minimum level. As the water level increases, more LEDs will turn on step by step. At the same time, the LCD screen will display the exact level status. I have also added a buzzer for warning when the water level reaches the maximum limit. If you want to know how the water sensor works, please use this link.
Especially, I designed a custom PCB for this project. Therefore, we don’t need any additional wires, breadboards, or other materials. Also, this is a low-cost project, and anyone can build this at home using simple components.
Ok, let’s do this project step by step. The required components are given below.
- Arduino Nano board x 1 — Our Store / Amazon
- Water level sensor x 1 — Our Store / Amazon
- 103 Preset x 1 — Our store / Amazon
- LCD screen x 1 — Our store / Amazon
- 5V Active buzzer x 1 — Our store / Amazon
- 3mm LED x 6 — Our store / Amazon
- 100 ohm Resistor x 6 — Our store / Amazon
- Two-pin terminal x 1 — Our store / Amazon
- Female header x 2 — Our store / Amazon
- Jumper wires — Our store / Amazon
Disclosure: These Amazon links are Affiliate links. As an Amazon Associate, I earn from qualifying purchases.
Step 1
Firstly, let’s identify the components used in this project.









Step 2
Secondly, let’s order the PCB for this project.




- Click the “Instant Quote” button and upload the Gerber file, which you can download from the link below.
- Gerber file – Download
- For this project, I ordered five Red PCBs. Next, select the build time and shipping method. Finally, click “Save to Cart” and complete the payment.






Step 3
Thirdly, let’s unbox the PCB package.




Step 4
Next, solder the female headers, LEDs, resistors, and other components onto the PCB.





Step 5
Afterward, connect the water sensor, Arduino Nano board, and LCD screen to the PCB.




Step 6
Next, connect the Arduino Nano board to your computer. Then, copy and paste the following program into the Arduino IDE.
- Program — Download
#include <LiquidCrystal.h>
#define sensor A6
#define Buzzer 10
#define Level1 A5
#define Level2 A4
#define Level3 A3
#define Level4 A2
#define Level5 A1
#define Level6 A0
LiquidCrystal lcd(9, 8, 4, 5, 6, 7);
void setup() {
lcd.begin(16, 2);
pinMode(Buzzer, OUTPUT);
pinMode(Level1, OUTPUT);
pinMode(Level2, OUTPUT);
pinMode(Level3, OUTPUT);
pinMode(Level4, OUTPUT);
pinMode(Level5, OUTPUT);
pinMode(Level6, OUTPUT);
startupScreen(); // 👈 add this line
}
void loop() {
int value = analogRead(sensor); // 0 - ~520
lcd.setCursor(0, 0);
lcd.print("Value: ");
lcd.print(value);
lcd.print(" ");
// OFF everything first
digitalWrite(Level1, LOW);
digitalWrite(Level2, LOW);
digitalWrite(Level3, LOW);
digitalWrite(Level4, LOW);
digitalWrite(Level5, LOW);
digitalWrite(Level6, LOW);
digitalWrite(Buzzer, LOW);
// New calibrated levels
if (value > 100) digitalWrite(Level1, HIGH);
if (value > 250) digitalWrite(Level2, HIGH);
if (value > 350) digitalWrite(Level3, HIGH);
if (value > 450) digitalWrite(Level4, HIGH);
if (value > 550) digitalWrite(Level5, HIGH);
if (value > 650) {
digitalWrite(Level6, HIGH);
digitalWrite(Buzzer, HIGH);
}
// LCD Text
lcd.setCursor(0, 1);
if (value < 50) lcd.print("Empty ");
else if (value < 250) lcd.print("Low ");
else if (value < 450) lcd.print("Medium ");
else if (value < 650) lcd.print("High ");
else lcd.print("FULL ");
delay(300);
}
void startupScreen() {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Water Level Sys");
lcd.setCursor(0, 1);
lcd.print("Initializing...");
delay(1500);
// Loading bar
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Loading:");
lcd.setCursor(0, 1);
lcd.print("[");
for (int i = 0; i < 10; i++) {
lcd.print("#");
delay(200);
}
lcd.print("]");
delay(500);
// Ready message
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Sensor Ready!");
lcd.setCursor(0, 1);
lcd.print("Starting...");
delay(1500);
lcd.clear();
}- Now, select the board and port, then click the upload button. If you do not have an Arduino Nano R4 board, you can also use a standard Arduino Nano board instead.



Step 7
Next, remove the USB cable and provide an external power supply to ensure smooth operation of the system. You can use a 9V battery or any other suitable power source.



Step 8
Finally, you can test this project using a cup of water. Now enjoy this project! The full video guide is provided below. We hope to see you in the next project. Have a great day.



Arduino Water Level Indicator with LCD & Alarm – Easy Build!