Kellon luominen Arduinon, 0,91 "OLED: n ja DS1307 RTC: n kanssa

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

Kellon rakentaminen arduinon, OLED-näytön ja DS1307-reaaliaikaisen kellon (RTC) moduulin kanssa on hauska ja käytännöllinen projekti. DS1307 RTC -moduuli pitää tarkan ajan, vaikka Arduino on virtalähde, kun taas OLED tarjoaa tyylikkään rajapinnan nykyisen ajan näyttämiseen. Tämä opetusohjelma opastaa sinua prosessin läpi askel askeleelta.


Mitä tarvitset

  1. Arduino -lautakunta (esim. UNO, Mega, Nano)
  2. 0,91 "OLED -näyttö (I2C -käyttöliittymä)
  3. DS1307 RTC -moduuli
  4. Leipälevy- ja hyppyjohdot
  5. Tietokone, jossa Arduino IDE on asennettu
  6. Kirjastot: Adafruit SSD1306, Adafruit GFX ja RTCLIB

Vaihe 1: Komponenttien johdotus

OLED -näyttöjohdotus (I2C)

Tappi Arduino -nasta
VCC 5V
Hölynpöly Hölynpöly
SDA A4
SCL A5

DS1307 RTC -moduulin johdotus (I2C)

Rtc -nasta Arduino -nasta
VCC 5V
Hölynpöly Hölynpöly
SDA A4
SCL A5

Huomaa: Jos käytät Arduino -korttia omistettujen SDA- ja SCL -nastaiden kanssa (esim. Mega), yhdistä OLED- ja RTC SDA/SCL -nastat niihin.


Vaihe 2: Vaadittavien kirjastojen asentaminen

Tarvitset seuraavat kirjastot, jotta voit työskennellä OLED -näytön ja DS1307 RTC: n kanssa:

  1. Adafruit SSD1306 (OLED: lle)
  2. Adafruit gfx (OLED: n grafiikkakirjasto)
  3. Rtclib (RTC -toiminnallisuudelle)

Kirjastojen asentaminen

  1. Avaa Arduino IDE.
  2. Mennä jhk Luonnos> Sisällytä kirjasto> Hallitse kirjastoja.
  3. Etsi ja asenna:
    • "Adafruit SSD1306"
    • "Adafruit GFX -kirjasto"
    • "RTCLIB"

Vaihe 3: Koodin lataaminen

Tässä on koodi, jolla näkyy OLED: n nykyinen aika DS1307 RTC -moduulilla:

Esimerkkikoodi

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

Vaihe 4: Ajan säätäminen

Jos RTC ei ole käynnissä tai aika on päivitettävä, seuraava rivi setup() Toiminto asettaa RTC: n nykyiseen aikaan:

rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
  • F(__DATE__) ja F(__TIME__) ovat makroja, jotka asettavat päivämäärän ja kellonajan automaattisesti tietokoneelta lähettäessäsi koodia.

Aseta tietyn ajan manuaalisesti käyttämällä:

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

Vaihe 5: Näytön mukauttaminen

Voit mukauttaa kellonäyttöä:

  1. Tekstin koon muuttaminen: Käyttää display.setTextSize() Fontin koon säätäminen.
  2. Grafiikan lisääminen: Piirrä muotoja, kuten viivoja tai suorakulmioita, Adafruit GFX -kirjasto.
  3. Aika: Aika: Lisää AM/PM tai 24 tunnin muoto tarpeen mukaan.

Esimerkki: AM/PM: n lisääminen

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);

Vianetsintä

  1. Oled ei näy:

    • Varmista I2C -osoite vastaavat (yleensä 0x3C tai 0x3D).
    • Tarkista johdotusliitännät.
  2. RTC: tä ei löydy:

    • Varmista SDA- ja SCL -yhteydet.
    • Varmista, että RTC -akku asetetaan oikein.
  3. Väärä aika:

    • Käyttää rtc.adjust() Oikean ajan asettaminen.

Sovellukset

  1. DIY -pöytäkello
  2. Ajastimet ja hälytykset
  3. IoT-yhteensopiva kello ylimääräisillä antureilla
  4. Koulutusprojektit

Johtopäätös

Yhdistämällä Arduino, 0,91 "OLED ja DS1307 RTC, voit luoda tarkan ja visuaalisesti houkuttelevan kellon. Muutamalla muutoksella voit mukauttaa kellon tarpeisiisi tai integroida se suurempiin projekteihin. Kokeile lisäominaisuuksia lisäominaisuuksilla kuten hälytykset tai Internet -synkronointi projektin viemiseksi seuraavalle tasolle!

Jätä kommentti

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.