In the previous example using an HC-SRO4 ultrasonic sensor – Espruino and an ultrasonic distance sensor, we looked at displaying the distance to an object but just displayed this on the console but with the simple addition of an LCD display of some description we can make a basic ultrasonic tape measure project, in other words we will display the readings on an LCD. In this example I chose an I2C OLED display, these are nice and compact in size and easy to connect and use with our Espruino
Here is a typical oled display

Connections
Wire the OLED up like this
| OLED pin | Espruino Pin | |
|---|---|---|
| GND | GND | |
| 5V | 3.3/vBat | |
| SDA | B7 | |
| SCL | B6 |
For the HC-SR04 you wire it up like this
| HC-SR04 pin | Espruino Pin |
|---|---|
| GND | GND |
| Vcc | VBAT (5v) |
| Trig | A0 |
| Echo | A1 |
Layout
Here is a layout diagram which will hopefully show what you are trying to create

Code
[codesyntax lang=”javascript”]
require("SSD1306");
var TRIG = A0; // ultrasonic trigger
var ECHO = A1; // ultrasonic echo signal
var g = require("SSD1306").connect(I2C1, logger);
// Get the distance from the sensor
setWatch(function(e) { t1=e.time; }, ECHO, { repeat:true, edge:'rising' });
setWatch(function(e) { var dt=e.time-t1; dist = (dt*1000000)/57.0; }, ECHO, { repeat:true, edge:'falling' });
// 20 times a second, trigger the distance sensor
setInterval("digitalPulse(TRIG,1, 10/1000.0)",50);
function onInit() {
logger();
}
function logger() {
// if we detect we're getting too close, turn around
//console.log(dist+" cm away");
g.clear();
dist = Math.round(dist*10)/10;
g.setFontVector(15);
// write some text
g.drawString(dist + " cm away" ,0,0);
// write to the screen
g.flip();
}
// I2C
I2C1.setup({scl:B6,sda:B7});
var g = require("SSD1306").connect(I2C1, logger);
setInterval(logger, 1000);
onInit(); // start going forwards
[/codesyntax]
Testing
Pretty simple put an object at a certain distance from the HC-SR04 and check out the readings on the OLED display

