יצירת שעון עם Arduino, OLED 0.91 "ו- DS1307 RTC

Creating a Clock with the Arduino, a 0.91" OLED, and the DS1307 RTC

בניית שעון עם ארדואינו, תצוגת OLED ומודול DS1307 בזמן אמת (RTC) הוא פרויקט מהנה ומעשי. מודול ה- RTC DS1307 שומר על זמן מדויק גם כאשר הארדואינו מכבה, ואילו ה- OLED מספק ממשק מלוטש להצגת השעה הנוכחית. מדריך זה ינחה אותך בתהליך שלב אחר שלב.


מה תצטרך

  1. מועצת ארדואינו (למשל, אונו, מגה, ננו)
  2. תצוגת OLED 0.91 " (ממשק i2c)
  3. מודול RTC DS1307
  4. חוטי לחם וגשר
  5. מחשב עם Arduino IDE המותקן
  6. ספריות: 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, אתה זקוק לספריות הבאות:

  1. Adafruit SSD1306 (עבור OLED)
  2. Adafruit gfx (ספריית גרפיקה ל- OLED)
  3. Rtclib (לפונקציונליות RTC)

התקנת ספריות

  1. פתח את IDE Arduino.
  2. לך אל סקיצה> כלול ספרייה> ניהול ספריות.
  3. חפש והתקן:
    • "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: התאמה אישית של התצוגה

אתה יכול להתאים אישית את תצוגת השעון על ידי:

  1. שינוי גודל הטקסט: לְהִשְׁתַמֵשׁ display.setTextSize() כדי להתאים את גודל הגופן.
  2. הוספת גרפיקה: השתמש בספריית adafruit GFX כדי לצייר צורות כמו קווים או מלבנים.
  3. זמן עיצוב: הוסף פורמט 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);

פתרון בעיות

  1. OLED לא מציג:

    • להבטיח את התאמות כתובת i2c (בדרך כלל 0x3C אוֹ 0x3D).
    • בדוק חיבורי חיווט.
  2. RTC לא נמצא:

    • אמת חיבורי SDA ו- SCL.
    • ודא שסוללת RTC מוכנסת כראוי.
  3. זמן שגוי:

    • לְהִשְׁתַמֵשׁ rtc.adjust() כדי לקבוע את הזמן הנכון.

יישומים

  1. שעון שולחן כתיבה
  2. טיימרים ואזעקות
  3. שעון מופעל על ידי IoT עם חיישנים נוספים
  4. פרויקטים חינוכיים

מַסְקָנָה

על ידי שילוב של Arduino, OLED בגודל 0.91 אינץ 'ו- DS1307 RTC, אתה יכול ליצור שעון מדויק ומושך חזותית. עם כמה ציוצים, אתה יכול להתאים את השעון כך שיתאים לצרכים שלך או לשלב אותו בפרויקטים גדולים יותר. ניסו תכונות נוספות כמו אזעקות או סנכרון אינטרנט כדי לקחת את הפרויקט שלך לשלב הבא!

השאירו תגובה

Notice an Issue? Have a Suggestion?
If you encounter a problem or have an idea for a new feature, let us know! Report a problem or request a feature here.