กลับไปหน้ารวมไฟล์
clock-with-sh1106-oled-display-ds1302-rtc-module-d3e7e8.md

ชื่อโปรเจกต์: นาฬิกาพร้อมจอแสดงผล SH1106 OLED และโมดูล DS1302 RTC

ขออภัยในคุณภาพของภาพถ่ายของผมด้วยครับผมแค่ถ่ายได้ไม่ดีเอง :)

ผมใช้อะไรบ้างในการสร้างโปรเจกต์นี้?

  • บอร์ด Arduino UNO clone (คุณสามารถใช้บอร์ดของแท้ได้เลย ผมจนเกินไป).
  • โมดูลนาฬิกา DS1302 RTC (Waveshare 9709)
  • ปุ่มกด (จะเป็นปุ่มกดแบบไหนก็ได้เลยพี่ชาย)
  • จอ OLED ขนาด 1.3" (SH1106 driver)
  • เบรดบอร์ด 830-pin
  • สายเชื่อมต่อ

ผมประกอบมันอย่างไร?

ขั้นตอนที่ศูนย์:

ใช่ครับ

เปิดเพลงดีๆ ฟังสักหน่อย

ขั้นตอนที่หนึ่ง:

ผมใช้คลิปหนีบกระดาษที่งอแล้วยึด Arduino ไว้

วาง Arduino ไว้ใกล้ๆ กับโปรเจกต์เพื่อต่อสาย

จริงๆแล้วการวางไว้อีกห้องหนึ่งมันไม่ใช่ความคิดที่ดีเลย

ขั้นตอนที่สอง:

ใช่ครับ

ติดตั้งปุ่มกดบนบอร์ดแบบนั้นเลย

ขั้นตอนที่สาม:

นาฬิกา

หน้าจอ

ติดตั้ง OLED และ RTC

ขั้นตอนที่สี่:

อุปกรณ์ทั้งหมดถูกประกอบเข้าด้วยกัน

เชื่อมต่อตามภาพนี้โดยประมาณ นี่คือการเชื่อมต่อขา:

OLED:

GND - Arduino GND

VCC - Arduino 5V

SCL - ช่องเชื่อมต่อ Analog ของ Arduino 5 (A5)

SDA - ช่องเชื่อมต่อ Analog ของ Arduino 4 (A4)

Button:

ขาซ้าย - Arduino GND

ขาขวา - ช่องเชื่อมต่อ Digital ของ Arduino 5 (5 หรือ D5)

RTC:

VCC - Arduino 5V

GND - Arduino GND

I/O - ช่องเชื่อมต่อ Digital ของ Arduino 4 (4 หรือ D4)

SCLK - ช่องเชื่อมต่อ Digital ของ Arduino 3 (3 หรือ D3)

CE - ช่องเชื่อมต่อ Digital ของ Arduino 2 (2 หรือ D2)

ขั้นตอนที่ห้า:

ติดตั้งไลบรารีที่จำเป็น:

Wire.h (ควรจะติดตั้ง/พบได้ใน arduino library manager)

https://github.com/chrisfryer78/ArduinoRTClibrary

Adafruit GFX (ควรจะพบได้ใน arduino library manager)

https://github.com/wonho-maker/Adafruit_SH1106

ขั้นตอนที่หก:

เขียนสคริปต์

ตัวอย่างของผม:

// รวมไลบรารีที่จำเป็น
#include
#include
#include
#include
// ตั้งค่านาฬิกา - virtuabotixRTC clock(SCLK_PIN, I/O_PIN, CE_PIN)
virtuabotixRTC clock(3, 4, 2);
// ตั้งค่าจอแสดงผล
Adafruit_SH1106 display(-1);
int state = 1;
void setup() {
pinMode(5, INPUT_PULLUP);
display.begin(SH1106_SWITCHCAPVCC, 0x3C);
display.setTextColor(WHITE);
drawUI();
display.display();
}
void loop() {
// โหมดพัก/ปิดนาฬิกา
if (digitalRead(5) == LOW) {
if (state == 0) {
delay(500);
drawUI();
state = 1;
}else{
delay(500);
display.drawRect(4, 7, 120, 50, WHITE);
display.fillRect(5, 8, 118, 48, BLACK);
display.setTextSize(1);
display.setCursor(6, 12);
display.println("นาฬิกาจะปิด");
display.println("ลงในไม่ช้า");
display.println("");
display.println(" หากต้องการเปิด");
display.println(" อีกครั้ง ให้กดปุ่ม");
display.display();
delay(3000);
display.clearDisplay();
display.display();
state = 0;
}
}
if (state == 1) {
// อัปเดตเวลาทุกวินาที
clock.updateTime();
drawUI();
display.setTextColor(WHITE);
display.setTextSize(3);
display.setCursor(1, 19);
if (clock.hours < 10) {
display.print("0");
}
display.print(clock.hours);
display.print(":");
if (clock.minutes < 10) {
display.print("0");
}
display.print(clock.minutes);
display.setTextSize(2);
display.print(":");
if (clock.seconds < 10) {
display.print("0");
}
display.print(clock.seconds);
display.setTextSize(1);
display.setCursor(26, 48);
if (clock.dayofweek == 1) {
display.print("วันจันทร์,");
}
if (clock.dayofweek == 2) {
display.print("วันอังคาร,");
}
if (clock.dayofweek == 3) {
display.print("วันพุธ,");
}
if (clock.dayofweek == 4) {
display.print("วันพฤหัสบดี,");
}
if (clock.dayofweek == 5) {
display.print("วันศุกร์,");
}
if (clock.dayofweek == 6) {
display.print("วันเสาร์,");
}
if (clock.dayofweek == 7) {
display.print("วันอาทิตย์,");
}
display.setCursor(26, 56);
if (clock.dayofmonth < 10) {
display.print("0");
}
display.print(clock.dayofmonth);
display.print(".");
if (clock.month < 10) {
display.print("0");
}
display.print(clock.month);
display.print(".");
display.print(clock.year);
display.display();
delay(999);
}
}
void drawUI() {
// วาด GUI
display.clearDisplay();
display.setTextSize(1);
display.setCursor(2, 2);
display.println(" นาฬิกาของ Adam ส

ข้อมูล Frontmatter ดั้งเดิม

title: "Clock with SH1106 OLED display & DS1302 RTC module"
description: "A short, simple project about a clock made with an Organic LED display and DS1302 RTC clock module, for ex. to use in full-screen game..."
author: "lucasio99"
category: ""
tags:
  - "clocks"
views: 4376
likes: 0
price: 1120
difficulty: "Easy"
components:
  - "1x JustPi - Connection cables 65x"
  - "1x Breadboard (generic)"
  - "1x Arduino UNO"
  - "1x Tact Switch 6x6mm/4,3mm DIP 5x"
  - "1x Waveshare 9709 - DS1302 RTC clock"
  - "1x 128x64 OLED I2C display"
tools: []
apps:
  - "1x Arduino IDE"
downloadableFiles:
  - "https://projects.arduinocontent.cc/d189dc3f-da6d-4035-b042-1ceb2c5258bc.ino"
  - "https://projects.arduinocontent.cc/d189dc3f-da6d-4035-b042-1ceb2c5258bc.ino"
  - "https://projects.arduinocontent.cc/2ba00518-6aac-4ce8-a251-b57c22a3d768.ino"
documentationLinks: []
passwordHash: "08292bd266848dce0c6a22d4a8c2cfefd0b0efdb68f205d497c53c755538c249"
encryptedPayload: "U2FsdGVkX1+a+WxngtphGWfxsdDnjD+beTgYZ0j1fniaHy5Yq7dvTdnaVcFhS/lnrn3AZ6ifsV4KfCLrHdqdEo8diPniTCrJHH2vfR/2VTk="
seoDescription: "DIY Clock project using SH1106 OLED display and DS1302 RTC module. Perfect for full-screen game applications."
videoLinks: []
heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/clock-with-sh1106-oled-display-ds1302-rtc-module-d3e7e8_cover.jpg"
lang: "th"