Arduino Ultrasonic Sensor Range Finder with HC-SR04 on OLED Display
In this project, we are going to make Arduino Ultrasonic Sensor Range Finder with HC-SR04 on OLED Display. The ultrasonic sensor is used to measure the distance. It acts as a Sonar. It sends an ultrasonic wave of a certain frequency that comes back after hitting the object and calculates the time traveled by it. So let’s learn about Distance Measurement Using Arduino & HC-SR04 Ultrasonic Sensor.
Check the previous project: Distance Measurement Using Arduino & HC-SR04 Ultrasonic Sensor
Components Required:
- Arduino Uno Board
- Ultrasonic Sensor HC-SR04
- 0.96″ OLED Display
- Breadboard
- Connecting Wires
- 5V Power Supply
Ultrasonic Sensor HC-SR04:
Description:
The HC-SR04 ultrasonic sensor uses sonar to determine the distance to an object like bats do. It offers excellent non-contact range detection with high accuracy and stable readings in an easy-to-use package.
From 2cm to 400 cm or 1” to 13 feet. Its operation is not affected by sunlight or black material like sharp rangefinders are (although acoustically soft materials like cloth can be difficult to detect). It comes complete with the ultrasonic transmitter and a receiver module. A waterproof version of this Ultrasonic Sensor is also available called as JSN-SR04T/AJ-SR04M.
Specifications:
The specifications of the ultrasonic distance sensor HC-SR04 are below:
- Minimum measuring range – 2 cm
- Maximum measuring range: 400 cm or 4 meter
- Accuracy : 3 mm
- Operating Voltage: +5V
- Operating Current: 15mA
- Working Frequency: 40 kHz
- Trigger Input signal: 10us pulse
- Measuring angle : 15 degree
Pins:
- VCC: +5VDC
- Trig: Trigger (INPUT)
- Echo: Echo (OUTPUT)
- GND: GND
How Does it Work?
Ultrasonic sensors emit short, high-frequency sound pulses at regular intervals. These propagate in the air at the velocity of sound. If they strike an object, then they are reflected back as echo signals to the sensor, which itself computes the distance to the target based on the time-span between emitting the signal and receiving the echo.
We will have to convert this time into cm to calculate the distance traveled. We will use the following equation to calculate the distance.
0.96″ I2C OLED Display:
This is a 0.96 inch blue OLED display module. The display module can be interfaced with any microcontroller using SPI/IIC protocols. It is having a resolution of 128×64. The package includes display board, display,4 pin male header pre-soldered to board.
(Organic Light-Emitting Diode) is a self light-emitting technology composed of a thin, multi-layered organic film placed between an anode and cathode. In contrast to LCD technology, OLED does not require a backlight. OLED possesses high application potential for virtually all types of displays and is regarded as the ultimate technology for the next generation of flat-panel displays.
Circuit: Interfacing Ultrasonic Sensor with Arduino & OLED
Source Code/Programs:
For project Range Finder Using Ultrasonic Sensor & Arduino with OLED Display, copy this code then compile and upload to your Arduino board. But before that, you need to add these libraries. So download from below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
#include <SPI.h> #include <Wire.h> #include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h> #define trigPin 9 #define echoPin 8 #define OLED_RESET 4 Adafruit_SSD1306 display(OLED_RESET); void setup() { Serial.begin (9600); pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); display.begin(SSD1306_SWITCHCAPVCC, 0x3C); //initialize with the I2C addr 0x3C (128x64) display.clearDisplay(); } void loop() { float duration; float distance_cm; float distance_in; digitalWrite(trigPin, LOW); //PULSE ___|---|___ delayMicroseconds(2); digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); duration = pulseIn(echoPin, HIGH); distance_cm = (duration/2) / 29.1; distance_in = (duration/2) / 73.914; display.setCursor(30,0); //oled display display.setTextSize(1); display.setTextColor(WHITE); display.println("Range Finder"); display.setCursor(10,20); //oled display display.setTextSize(2); display.setTextColor(WHITE); display.println(distance_cm); display.setCursor(90,20); display.setTextSize(2); display.println("cm"); display.setCursor(10,45); //oled display display.setTextSize(2); display.setTextColor(WHITE); display.println(distance_in); display.setCursor(90,45); display.setTextSize(2); display.println("in"); display.display(); delay(500); display.clearDisplay(); Serial.println(distance_cm); Serial.println(distance_in); } |