Erstellen einer Uhr mit dem Arduino, einer 0,91 "OLED und dem DS1307 RTC

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

Das Erstellen einer Uhr mit einem Arduino, einem OLED-Display und dem RTC-Modul (DS1307) ist ein lustiges und praktisches Projekt. Das DS1307 RTC -Modul hält eine genaue Zeit, selbst wenn der Arduino ausgeschaltet wird, während die OLED eine schlanke Schnittstelle zum Anzeigen der aktuellen Zeit bietet. Dieses Tutorial führt Sie Schritt für Schritt durch den Prozess.


Was Sie brauchen werden

  1. Arduino Board (z. B. Uno, Mega, Nano)
  2. 0,91 "OLED -Anzeige (I2C -Schnittstelle)
  3. DS1307 RTC -Modul
  4. Breadboard- und Jumper -Drähte
  5. Ein Computer mit der Arduino -IDE installiert
  6. Bibliotheken: Adafruit SSD1306, Adafruit GFX und RTCLIB

Schritt 1: Verkabelung der Komponenten

OLED -Displaykabel (I2C)

OLED -Stift Arduino Pin
VCC 5v
GND GND
SDA A4
Scl A5

DS1307 RTC -Modulverkabelung (I2C)

RTC Pin Arduino Pin
VCC 5v
GND GND
SDA A4
Scl A5

Notiz: Wenn Sie ein Arduino -Board mit dedizierten SDA- und SCL -Stiften (z. B. Mega) verwenden, verbinden Sie stattdessen die OLED- und RTC -SDA/SCL -Stifte.


Schritt 2: Installation der erforderlichen Bibliotheken

Um mit dem OLED -Display und DS1307 RTC zu arbeiten, benötigen Sie die folgenden Bibliotheken:

  1. Adafruit SSD1306 (für OLED)
  2. Adafruit GFX (Grafikbibliothek für OLED)
  3. RTCLIB (für RTC -Funktionalität)

Bibliotheken installieren

  1. Öffnen Sie die Arduino -IDE.
  2. Gehen zu Skizze> Bibliothek einschließen> Bibliotheken verwalten.
  3. Suche nach und installieren:
    • "Adafruit SSD1306"
    • "Adafruit GFX Library"
    • "Rtclib"

Schritt 3: Hochladen des Code

Hier ist der Code, mit dem die aktuelle Zeit auf dem OLED mit dem DS1307 RTC -Modul angezeigt wird:

Beispielcode

#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
}

Schritt 4: Anpassung der Zeit

Wenn der RTC nicht ausgeführt wird oder die Zeit aktualisiert werden muss, die folgende Zeile in der setup() Die Funktion setzt den RTC auf die aktuelle Zeit:

rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
  • F(__DATE__) Und F(__TIME__) sind Makros, die das Datum und die Uhrzeit automatisch von Ihrem Computer von Ihrem Computer festlegen, wenn Sie den Code hochladen.

Um eine bestimmte Zeit manuell festzulegen, verwenden Sie:

rtc.adjust(DateTime(2025, 1, 1, 12, 0, 0)); // YYYY, MM, DD, HH, MM, SS

Schritt 5: Anpassen der Anzeige

Sie können die Uhr -Anzeige anpassen nach:

  1. Textgröße ändern: Verwenden display.setTextSize() um die Schriftgröße einzustellen.
  2. Grafik hinzufügen: Verwenden Sie die Adafruit GFX -Bibliothek, um Formen wie Linien oder Rechtecke zu zeichnen.
  3. Formatierungszeit: Fügen Sie nach Bedarf AM/PM- oder 24-Stunden-Format hinzu.

Beispiel: Hinzufügen von 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);

Fehlerbehebung

  1. OLED nicht angezeigt:

    • Stellen Sie sicher, dass die I2C -Adresse übereinstimmt (häufig 0x3C oder 0x3D).
    • Überprüfen Sie die Verkabelungsverbindungen.
  2. RTC nicht gefunden:

    • Überprüfen Sie die SDA- und SCL -Verbindungen.
    • Stellen Sie sicher, dass die RTC -Batterie korrekt eingefügt wird.
  3. Falsche Zeit:

    • Verwenden rtc.adjust() die richtige Zeit festlegen.

Anwendungen

  1. DIY -Schreibtischuhr
  2. Timer und Alarme
  3. IoT-fähige Uhr mit zusätzlichen Sensoren
  4. Bildungsprojekte

Abschluss

Durch die Kombination des Arduino, eines 0,91 "OLED und des DS1307 RTC können Sie eine genaue und visuell ansprechende Uhr erstellen. Mit wenigen Änderungen können Sie die Uhr an Ihre Anforderungen anpassen oder in größere Projekte integrieren. Experimentieren Sie mit zusätzlichen Funktionen Wie Alarme oder Internetsynchronisation, um Ihr Projekt auf die nächste Stufe zu bringen!

Hinterlasse einen Kommentar

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.