Arduino ultrasonic range finder, with I²C lcd display!


in this project i want to show and explain you a range sensor with ultrasonic and a 20x04 lcd screen. I wrote the code for this project myself and added lots of comments, so that everybody can understand it and use it for other projects (maybe a light range sensor?!). It is easy to build and much more easier to program, it just requires a few cheap parts and can run on battery, for a portable rangefinder.

The maximum rated range is 500 cm, the range is measured 20 times per seccond. It is Displayed on a lcd screen which is 20x4 chars big, it has a custom start message, and it can have a custom design while measuring. It will have a backlight LED and can run on every arduino, which has I²C communication. That mean you can run it on an Arduino nano, which is very small. It also requires 5V so it has to be a 5V version of an Arduino.

Remove these adsRemove these ads by Signing Up

Step 1: What do you need & Tools

We dont need much things, the parts should be less then 15$ (without arduino, with arduino may 25-35$):


Arduino (5-55$) ,
Ultrasonic sensor (2$),  HC-SR04  ,
A 20x4 Display (6$) ,
A IIC/I2C/TWI/SP​​I Serial Interface Board Module (2$) ,
Some wires
a Breadboard
A USB cable


Arduino ,

wire.h library (should be with the Arduino software)
LiquidCrystal_I2C.h library  for the Display
NewPing.h library for the sensor


what are tools? D:

(no tools needed, yay)


a Case...

Step 2: The Display

Now we need to connect the IIC I2C TWI SPI Serial Interface Board Module to the display, that allows us to easily use the Display with the I²C bus of the Arduino ( nearly every Arduino/Atmel processor can communicate with I²C, it just need a SDA and a SCL pin). Solder the module to the display ( picture 2 ).

Take care of the heat, it can easily destroy the display and the module!!!
minoo.ekrani3 months ago

plz send me ur code

ecozcelik5 months ago

sketch_sep02a.ino:23:53: error: 'POSITIVE' was not declared in this scope,

it gives me this eror how can I fix

Jan_Henrik (author)  ecozcelik5 months ago


my sketch is kind of outdated, I will update it as soon as I can :)

i'm using I2C/TWI 1602 and a 16X2 display , did i wrongly connect the twi interface to the display?

Jan_Henrik (author)  Hariharan. GTH6 months ago

oh, did you change the code for a 16x2 display? I used a 16x4

what is mean by switching sda and scl , is my interface connection is correct.please check it , deadline to submit my project is fast approaching.please reply

Jan_Henrik (author)  Hariharan. GTH6 months ago

thats interresting, has your display the right controller for the i²c interface?

Display showing bars instead of characters .. what's de solution?

Jan_Henrik (author)  Hariharan. GTH6 months ago

switch sda and scl

i 'm getting an error POSITIVE not declared under this scope.Tell me the correct LCD library

Jan_Henrik (author)  Hariharan. GTH6 months ago

Hi, this library is for an I²C Display, but you´re right, it is outdated. I will fix it in the afternoon, Thank you for telling me :)

problem solved i used liquid crystal 1.2.1 downloaded from this site done compling . thanks for ur code.

Jan_Henrik (author)  Hariharan. GTH6 months ago

Awesome! Thanks! :)

Fenex8 months ago

Hey :)

Really cool instructable. I already ordered the parts to build it. Just one question: what's the accuracy of the measurement?

Jan_Henrik (author)  Fenex8 months ago

Hi, the accuracy at 20°C is 3,4% :)