Lumilikha ng isang orasan kasama ang Arduino, isang 0.91 "OLED, at ang DS1307 RTC

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

Ang pagtatayo ng isang orasan na may isang Arduino, isang display ng OLED, at ang module ng DS1307 Real-Time Clock (RTC) ay isang masaya at praktikal na proyekto. Ang module ng DS1307 RTC ay nagpapanatili ng tumpak na oras kahit na ang Arduino ay pinapagana, habang ang OLED ay nagbibigay ng isang makinis na interface para sa pagpapakita ng kasalukuyang oras. Ang tutorial na ito ay gagabay sa iyo sa pamamagitan ng proseso ng hakbang -hakbang.


Ano ang kakailanganin mo

  1. Lupon ng Arduino (hal., uno, mega, nano)
  2. 0.91 "OLED display (Interface ng I2C)
  3. DS1307 RTC Module
  4. Mga wire ng tinapay at jumper
  5. Isang computer na may naka -install na Arduino IDE
  6. Mga Aklatan: Adafruit SSD1306, ADAFRUIT GFX, at RTCLIB

Hakbang 1: Ang mga kable ng mga sangkap

OLED Display Wiring (I2C)

OLED PIN Arduino Pin
VCC 5v
Gnd Gnd
SDA A4
SCL A5

DS1307 RTC Module Wiring (I2C)

RTC PIN Arduino Pin
VCC 5v
Gnd Gnd
SDA A4
SCL A5

Tandaan: Kung gumagamit ng isang Arduino board na may nakalaang SDA at SCL pin (e.g., mega), ikonekta ang OLED at RTC SDA/SCL pin sa mga iyon.


Hakbang 2: Pag -install ng mga kinakailangang aklatan

Upang gumana sa OLED display at DS1307 RTC, kailangan mo ang mga sumusunod na aklatan:

  1. Adafruit SSD1306 (Para kay Oled)
  2. Adafruit GFX (Graphics Library para sa OLED)
  3. Rtclib (para sa pag -andar ng RTC)

Pag -install ng mga aklatan

  1. Buksan ang Arduino IDE.
  2. Pumunta sa Sketch> Isama ang Library> Pamahalaan ang mga aklatan.
  3. Maghanap at mag -install:
    • "Adafruit SSD1306"
    • "Adafruit GFX Library"
    • "Rtclib"

Hakbang 3: Pag -upload ng code

Narito ang code upang ipakita ang kasalukuyang oras sa OLED gamit ang DS1307 RTC module:

Halimbawa ng code

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

Hakbang 4: Pag -aayos ng oras

Kung ang RTC ay hindi tumatakbo o ang oras ay kailangang ma -update, ang sumusunod na linya sa setup() Ang pag -andar ay nagtatakda ng RTC sa kasalukuyang oras:

rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
  • F(__DATE__) at F(__TIME__) ay macros na awtomatikong itinakda ang petsa at oras mula sa iyong computer kapag nai -upload ang code.

Upang manu -manong magtakda ng isang tukoy na oras, gamitin:

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

Hakbang 5: Pagpapasadya ng display

Maaari mong ipasadya ang pagpapakita ng orasan sa pamamagitan ng:

  1. Pagbabago ng laki ng teksto: Gumamit display.setTextSize() Upang ayusin ang laki ng font.
  2. Pagdaragdag ng mga graphic: Gamitin ang Adafruit GFX Library upang gumuhit ng mga hugis tulad ng mga linya o mga parihaba.
  3. Oras ng pag -format: Magdagdag ng AM/PM o 24 na oras na format kung kinakailangan.

Halimbawa: Pagdaragdag ng 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);

Pag -aayos

  1. Hindi ipinapakita si Oled:

    • Tiyakin ang mga tugma ng address ng I2C (karaniwang 0x3C o 0x3D).
    • Suriin ang mga koneksyon sa mga kable.
  2. Hindi natagpuan ang RTC:

    • Patunayan ang mga koneksyon sa SDA at SCL.
    • Tiyakin na ang baterya ng RTC ay ipinasok nang tama.
  3. Maling Oras:

    • Gumamit rtc.adjust() upang itakda ang tamang oras.

Mga Aplikasyon

  1. DIY desk orasan
  2. Timers at alarma
  3. Ang orasan na pinagana ng IoT na may karagdagang mga sensor
  4. Mga proyektong pang -edukasyon

Konklusyon

Sa pamamagitan ng pagsasama ng Arduino, isang 0.91 "OLED, at ang DS1307 RTC, maaari kang lumikha ng isang tumpak at biswal na nakakaakit na orasan. Sa ilang mga pag -tweak, maaari mong ipasadya ang orasan upang umangkop sa iyong mga pangangailangan o isama ito sa mas malaking proyekto. Eksperimento sa mga karagdagang tampok Tulad ng mga alarma o pag -synchronise ng internet upang dalhin ang iyong proyekto sa susunod na antas!

Mag -iwan ng komento

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.