Arduino के साथ एक घड़ी बनाना, एक 0.91 "OLED, और DS1307 RTC

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

एक Arduino, एक OLED डिस्प्ले और DS1307 रियल-टाइम क्लॉक (RTC) मॉड्यूल के साथ एक घड़ी का निर्माण एक मजेदार और व्यावहारिक परियोजना है। DS1307 RTC मॉड्यूल तब भी सटीक समय रखता है जब Arduino को संचालित किया जाता है, जबकि OLED वर्तमान समय को प्रदर्शित करने के लिए एक चिकना इंटरफ़ेस प्रदान करता है। यह ट्यूटोरियल आपको चरण दर चरण के माध्यम से मार्गदर्शन करेगा।


आपको क्या चाहिए

  1. अर्डुइनो बोर्ड (जैसे, UNO, मेगा, नैनो)
  2. 0.91 "OLED प्रदर्शन (I2C इंटरफ़ेस)
  3. DS1307 RTC मॉड्यूल
  4. ब्रेडबोर्ड और जम्पर तार
  5. Arduino IDE के साथ एक कंप्यूटर स्थापित
  6. पुस्तकालय: Adafruit SSD1306, Adafruit GFX, और RTCLIB

चरण 1: घटकों को वायरिंग

OLED डिस्प्ले वायरिंग (I2C)

ओलड पिन अर्डुइनो पिन
वीसीसी 5V
Gnd Gnd
एसएडीए ए 4
आयोग ए 5

DS1307 RTC मॉड्यूल वायरिंग (I2C)

आरटीसी पिन अर्डुइनो पिन
वीसीसी 5V
Gnd Gnd
एसएडीए ए 4
आयोग ए 5

टिप्पणी: यदि समर्पित एसडीए और एससीएल पिन (जैसे, मेगा) के साथ एक Arduino बोर्ड का उपयोग किया जाता है, तो OLED और RTC SDA/SCL पिन को इसके बजाय कनेक्ट करें।


चरण 2: आवश्यक पुस्तकालयों को स्थापित करना

OLED डिस्प्ले और DS1307 RTC के साथ काम करने के लिए, आपको निम्नलिखित पुस्तकालयों की आवश्यकता है:

  1. Adafruit SSD1306 (OLED के लिए)
  2. Adafruit gfx (OLED के लिए ग्राफिक्स लाइब्रेरी)
  3. RTCLIB (आरटीसी कार्यक्षमता के लिए)

पुस्तकालयों को स्थापित करना

  1. Arduino ide खोलें।
  2. जाओ स्केच> लाइब्रेरी शामिल हैं> पुस्तकालयों का प्रबंधन करें.
  3. खोजें और स्थापित करें:
    • "Adafruit SSD1306"
    • "Adafruit GFX लाइब्रेरी"
    • "Rtclib"

चरण 3: कोड अपलोड करना

यहाँ DS1307 RTC मॉड्यूल का उपयोग करके OLED पर वर्तमान समय प्रदर्शित करने के लिए कोड है:

उदाहरण कोड

#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.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. आरटीसी नहीं मिला:

    • SDA और SCL कनेक्शन को सत्यापित करें।
    • सुनिश्चित करें कि RTC बैटरी सही ढंग से डाली गई है।
  3. गलत समय:

    • उपयोग rtc.adjust() सही समय निर्धारित करने के लिए।

अनुप्रयोग

  1. DIY डेस्क घड़ी
  2. टाइमर और अलार्म
  3. अतिरिक्त सेंसर के साथ IoT- सक्षम घड़ी
  4. शैक्षिक परियोजनाएं

निष्कर्ष

Arduino, एक 0.91 "OLED, और 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.