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
- Arduino -lautakunta (esim. UNO, Mega, Nano)
- 0,91 "OLED -näyttö (I2C -käyttöliittymä)
- DS1307 RTC -moduuli
- Leipälevy- ja hyppyjohdot
- Tietokone, jossa Arduino IDE on asennettu
- 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:
- Adafruit SSD1306 (OLED: lle)
- Adafruit gfx (OLED: n grafiikkakirjasto)
- Rtclib (RTC -toiminnallisuudelle)
Kirjastojen asentaminen
- Avaa Arduino IDE.
- Mennä jhk Luonnos> Sisällytä kirjasto> Hallitse kirjastoja.
- 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__)
jaF(__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öä:
-
Tekstin koon muuttaminen: Käyttää
display.setTextSize()
Fontin koon säätäminen. - Grafiikan lisääminen: Piirrä muotoja, kuten viivoja tai suorakulmioita, Adafruit GFX -kirjasto.
- 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ä
-
Oled ei näy:
- Varmista I2C -osoite vastaavat (yleensä
0x3C
tai0x3D
). - Tarkista johdotusliitännät.
- Varmista I2C -osoite vastaavat (yleensä
-
RTC: tä ei löydy:
- Varmista SDA- ja SCL -yhteydet.
- Varmista, että RTC -akku asetetaan oikein.
-
Väärä aika:
- Käyttää
rtc.adjust()
Oikean ajan asettaminen.
- Käyttää
Sovellukset
- DIY -pöytäkello
- Ajastimet ja hälytykset
- IoT-yhteensopiva kello ylimääräisillä antureilla
- 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!