//เรียกใช้ 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 วินาที
}