#include <U8g2lib.h>
#include <Wire.h>
U8G2_SSD1306_128X64_NONAME_F_SW_I2C u8g2(U8G2_R0, /* clock=*/ 9, /* data=*/ 8, /* reset=*/ U8X8_PIN_NONE);
const int trigPin = 10;
const int echoPin = 11;
void setup()
{
u8g2.begin();
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
}
void loop()
{
u8g2.clearBuffer();
long distanceMM = measureDistance();
float distanceInches = distanceMM / 25.4;
displayMeasurements(distanceMM, distanceInches);
u8g2.sendBuffer();
delay(500);
}
long measureDistance() {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
long duration = pulseIn(echoPin, HIGH);
long distance = (duration * 0.343) / 2;
return distance;
}
void displayMeasurements(long distanceMM, float distanceInches)
{
u8g2.setFont(u8g2_font_ncenB08_tr);
u8g2.setDrawColor(1);
u8g2.drawBox(0, 0, 128, 20);
u8g2.setDrawColor(0);
u8g2.setCursor(10, 13);
u8g2.print("Distance Measuring");
u8g2.setDrawColor(1);
u8g2.setCursor(0, 40);
u8g2.print("Millimeters: ");
u8g2.print(distanceMM);
u8g2.print(" mm");
u8g2.setCursor(0, 60);
u8g2.print("Inches: ");
u8g2.print(distanceInches, 2);
u8g2.print(" in");
}