//เรียกใช้ Libaries ที่เกี่ยวข้อง
#include <SPI.h>
#include <Wire.h>               //ไลบารี่ใช้งานในการสื่อสารแบบ Two Wire Interface หรือ I2C - Inter Intregate Circuit
#include <Adafruit_GFX.h>       //ไลบารี่ใช้เพื่อวาดภาพบนจอ
#include <Adafruit_SSD1306.h>   //ไลบารี่ใช้เพื่อเป็นไดรเวอร์ทำงานกับจอ OLED I2C (Inter-Integrated Circuit)
/*
Adafruit_SSD1306 display = Adafruit_SSD1306(128, 64, &Wire);
คำสั่งนี้ใช้สำหรับการกำหนดค่าและสร้างวัตถุ (object) ชื่อ display ที่เป็นอินสแตนซ์ของคลาส Adafruit_SSD1306 จากไลบรารีของ Adafruit ซึ่งใช้สำหรับควบคุมจอแสดงผล OLED ที่ใช้ไดร์เวอร์ SSD1306 โดยมีการตั้งค่าพื้นฐานสำหรับจอแสดงผลนั้น ๆ ตามพารามิเตอร์ที่กำหนด:
คำอธิบายพารามิเตอร์
128: กำหนดความกว้างของจอแสดงผล OLED เป็น 128 พิกเซล
64: กำหนดความสูงของจอแสดงผล OLED เป็น 64 พิกเซล
&Wire: เป็นการกำหนดว่าจะใช้การสื่อสารผ่านโปรโตคอล I²C (Inter-Integrated Circuit) ซึ่ง Wire เป็นตัวจัดการการสื่อสาร I²C ใน Arduino
*/ 
Adafruit_SSD1306 display = Adafruit_SSD1306(128, 64, &Wire);
#define PIN_TRIG 19             //ประกาศตัวแปรชื่อ PIN_TRIG มีค่าเท่ากับ ขา 19 
#define PIN_ECHO 18             //ประกาศตัวแปรชื่อ PIN_ECHO มีค่าเท่ากับ ขา 18
void setup()
{
  Serial.begin(115200);         //เริ่มต้นการสื่อสาร ด้วยความเร็ว 115200
  pinMode(PIN_TRIG, OUTPUT);    //กำหนดให้ PIN_TRIG(19) เป็น Output
  pinMode(PIN_ECHO, INPUT);     //กำหนดให้ PIN_ECHO(18) เป็น Input
}
void loop()
{
  // Start a new measurement:
  digitalWrite(PIN_TRIG, HIGH);
  delayMicroseconds(10);
  digitalWrite(PIN_TRIG, LOW);
  // Read the result:
  int duration = pulseIn(PIN_ECHO, HIGH);
//Serial.println("Hello, ESP32!");
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
  display.clearDisplay();
  display.setTextColor(WHITE, BLACK);
  display.setCursor(45, 3);
  display.setTextSize(1);
  display.println("Distance");
  display.setCursor(43, 22);
  display.setTextSize(3);
  display.println(duration/58);
  display.setCursor(62,53);
  display.setTextSize(1);
  display.print("CM");
  display.display();
delay(1000);                  // หน่วงเวลา 1 วินาที
}