בניית שעון עם ארדואינו, תצוגת OLED ומודול DS1307 בזמן אמת (RTC) הוא פרויקט מהנה ומעשי. מודול ה- RTC DS1307 שומר על זמן מדויק גם כאשר הארדואינו מכבה, ואילו ה- OLED מספק ממשק מלוטש להצגת השעה הנוכחית. מדריך זה ינחה אותך בתהליך שלב אחר שלב.
מה תצטרך
- מועצת ארדואינו (למשל, אונו, מגה, ננו)
- תצוגת OLED 0.91 " (ממשק i2c)
- מודול RTC DS1307
- חוטי לחם וגשר
- מחשב עם Arduino IDE המותקן
- ספריות: Adafruit SSD1306, Adafruit GFX ו- RTClib
שלב 1: חיווט הרכיבים
חיווט תצוגת OLED (I2C)
סיכת אולד | סיכת ארדואינו |
---|---|
VCC | 5V |
GND | GND |
SDA | A4 |
SCL | A5 |
DS1307 חיווט מודול RTC (I2C)
סיכת RTC | סיכת ארדואינו |
---|---|
VCC | 5V |
GND | GND |
SDA | A4 |
SCL | A5 |
פֶּתֶק: אם משתמשים בלוח ארדואינו עם סיכות SDA ו- SCL ייעודיות (למשל, מגה), חבר את סיכות ה- OLED ו- RTC SDA/SCL לאלה במקום.
שלב 2: התקנת הספריות הנדרשות
כדי לעבוד עם תצוגת OLED ו- DS1307 RTC, אתה זקוק לספריות הבאות:
- Adafruit SSD1306 (עבור OLED)
- Adafruit gfx (ספריית גרפיקה ל- OLED)
- Rtclib (לפונקציונליות RTC)
התקנת ספריות
- פתח את IDE Arduino.
- לך אל סקיצה> כלול ספרייה> ניהול ספריות.
- חפש והתקן:
- "Adafruit SSD1306"
- "ספריית adafruit gfx"
- "Rtclib"
שלב 3: העלאת הקוד
להלן הקוד להצגת השעה הנוכחית ב- OLED באמצעות מודול RTC DS1307:
קוד דוגמה
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <RTClib.h>
// OLED display width and height
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 32
// Create an instance of the display
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
// Create an instance of the RTC
RTC_DS1307 rtc;
void setup() {
Serial.begin(9600);
// Initialize the OLED display
if (!display.begin(SSD1306_I2C_ADDRESS, 0x3C)) {
Serial.println(F("SSD1306 allocation failed"));
for (;;);
}
display.clearDisplay();
// Initialize the RTC
if (!rtc.begin()) {
Serial.println("Couldn't find RTC");
while (1);
}
// Check if the RTC is running
if (!rtc.isrunning()) {
Serial.println("RTC is NOT running! Setting the time...");
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
}
}
void loop() {
DateTime now = rtc.now(); // Get the current time
// Clear the display
display.clearDisplay();
// Display the time
display.setTextSize(2);
display.setTextColor(SSD1306_WHITE);
display.setCursor(0, 0);
display.print(now.hour(), DEC);
display.print(":");
if (now.minute() < 10) {
display.print("0");
}
display.print(now.minute(), DEC);
// Display the date
display.setTextSize(1);
display.setCursor(0, 20);
display.print(now.day(), DEC);
display.print("/");
display.print(now.month(), DEC);
display.print("/");
display.print(now.year(), DEC);
// Show the display buffer
display.display();
delay(1000); // Update every second
}
שלב 4: התאמת הזמן
אם ה- RTC אינו פועל או שצריך לעדכן את הזמן, את השורה הבאה ב setup()
הפונקציה מגדירה את ה- RTC לשעה הנוכחית:
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
-
F(__DATE__)
וכןF(__TIME__)
הם פקודות מאקרו שמגדירות אוטומטית את התאריך והשעה מהמחשב שלך בעת העלאת הקוד.
כדי לקבוע זמן ספציפי באופן ידני, השתמש:
rtc.adjust(DateTime(2025, 1, 1, 12, 0, 0)); // YYYY, MM, DD, HH, MM, SS
שלב 5: התאמה אישית של התצוגה
אתה יכול להתאים אישית את תצוגת השעון על ידי:
-
שינוי גודל הטקסט: לְהִשְׁתַמֵשׁ
display.setTextSize()
כדי להתאים את גודל הגופן. - הוספת גרפיקה: השתמש בספריית adafruit GFX כדי לצייר צורות כמו קווים או מלבנים.
- זמן עיצוב: הוסף פורמט AM/PM או 24 שעות לפי הצורך.
דוגמה: הוספת AM/PM
int hour = now.hour();
String period = "AM";
if (hour >= 12) {
period = "PM";
if (hour > 12) hour -= 12;
}
if (hour == 0) hour = 12;
display.print(hour);
display.print(":");
if (now.minute() < 10) {
display.print("0");
}
display.print(now.minute());
display.print(" ");
display.print(period);
פתרון בעיות
-
OLED לא מציג:
- להבטיח את התאמות כתובת i2c (בדרך כלל
0x3C
אוֹ0x3D
). - בדוק חיבורי חיווט.
- להבטיח את התאמות כתובת i2c (בדרך כלל
-
RTC לא נמצא:
- אמת חיבורי SDA ו- SCL.
- ודא שסוללת RTC מוכנסת כראוי.
-
זמן שגוי:
- לְהִשְׁתַמֵשׁ
rtc.adjust()
כדי לקבוע את הזמן הנכון.
- לְהִשְׁתַמֵשׁ
יישומים
- שעון שולחן כתיבה
- טיימרים ואזעקות
- שעון מופעל על ידי IoT עם חיישנים נוספים
- פרויקטים חינוכיים
מַסְקָנָה
על ידי שילוב של Arduino, OLED בגודל 0.91 אינץ 'ו- DS1307 RTC, אתה יכול ליצור שעון מדויק ומושך חזותית. עם כמה ציוצים, אתה יכול להתאים את השעון כך שיתאים לצרכים שלך או לשלב אותו בפרויקטים גדולים יותר. ניסו תכונות נוספות כמו אזעקות או סנכרון אינטרנט כדי לקחת את הפרויקט שלך לשלב הבא!