Skip to content

Instantly share code, notes, and snippets.

@moomdate
Created July 13, 2026 05:53
Show Gist options
  • Select an option

  • Save moomdate/d37b7a83c2f621242ce66788428e0598 to your computer and use it in GitHub Desktop.

Select an option

Save moomdate/d37b7a83c2f621242ce66788428e0598 to your computer and use it in GitHub Desktop.
example oled
/*
ESP32 + OLED 1.3" (SH1106) I2C Example
----------------------------------------
Wiring:
SDA → GPIO 21
SCL → GPIO 22
VCC → 3.3V
GND → GND
Library ที่ต้องลง (Arduino Library Manager):
- "U8g2" by olikraus
*/
#include <Wire.h>
#include <U8g2lib.h>
// SH1106 128x64 I2C — ใช้ HW I2C (SDA=21, SCL=22 เป็น default ของ ESP32)
U8G2_SH1106_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE);
void setup() {
Serial.begin(115200);
u8g2.begin();
Serial.println("OLED 1.3\" SH1106 Ready!");
}
void loop() {
// === หน้า 1: ข้อความต้อนรับ ===
u8g2.clearBuffer();
// หัวข้อ
u8g2.setFont(u8g2_font_ncenB14_tr); // ฟอนต์ใหญ่
u8g2.drawStr(10, 20, "ESP32");
// ข้อความรอง
u8g2.setFont(u8g2_font_ncenB10_tr); // ฟอนต์กลาง
u8g2.drawStr(10, 40, "OLED 1.3\"");
// ข้อความเล็ก
u8g2.setFont(u8g2_font_6x10_tr); // ฟอนต์เล็ก
u8g2.drawStr(10, 58, "SH1106 128x64 I2C");
u8g2.sendBuffer();
delay(3000);
// === หน้า 2: วาดรูปทรง ===
u8g2.clearBuffer();
u8g2.setFont(u8g2_font_6x10_tr);
u8g2.drawStr(0, 10, "Shapes Demo");
// สี่เหลี่ยม
u8g2.drawFrame(10, 18, 30, 20); // กรอบ
u8g2.drawBox(50, 18, 30, 20); // ทึบ
// วงกลม
u8g2.drawCircle(110, 28, 10); // กรอบ
u8g2.drawDisc(110, 50, 8); // ทึบ
// เส้น
u8g2.drawLine(10, 50, 80, 60);
u8g2.sendBuffer();
delay(3000);
// === หน้า 3: ค่า sensor จำลอง ===
u8g2.clearBuffer();
u8g2.setFont(u8g2_font_6x10_tr);
u8g2.drawStr(0, 10, "Sensor Data");
u8g2.drawHLine(0, 12, 128);
// จำลองค่า
float temp = 28.5 + random(-10, 10) / 10.0;
float humi = 65.0 + random(-50, 50) / 10.0;
unsigned long uptime = millis() / 1000;
char buf[32];
snprintf(buf, sizeof(buf), "Temp: %.1f C", temp);
u8g2.drawStr(0, 28, buf);
snprintf(buf, sizeof(buf), "Humi: %.1f %%", humi);
u8g2.drawStr(0, 42, buf);
snprintf(buf, sizeof(buf), "Uptime: %lus", uptime);
u8g2.drawStr(0, 56, buf);
u8g2.sendBuffer();
delay(3000);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment