| Etusivu | Arduino | Musiikki | Kaikki muut | Info |

OLED-kello DS3231 RTC-piirillä

Tässä on yksinkertaisin käyttökelpoinen kello OLED-näytöllä.

Minulta tulee nyt vahva suositus tämän projektin puolesta. Ei kannata mennä halpaan ja rakentaa kelloa ilman RTC-piiriä. Esimerkiksi arduino hub on täynnä kelloja ilman RTC-piiriä, ja kaikki ovat huonoja. Piste. Ne 👏kellot👏eivät👏pidä👏aikaa! Tavallinen quartz-kide heittää suunnilleen ±20 sekuntia per kuukausi (usein vähemmän). Arduino ei yksin pysty lähellekään tätä. Sen sijaan DS3231 on lämpötilakompensoitu ja sen tarkkuus on ±2ppm - ±3,5ppm. PPM = Parts Per Million = tarkka kello!

Tämän projektin kello on helppo saada toimimaan, ja helppo laajentaa myöhemmin. Hintakaan ei ole kallis. Ja kuten sanoin, DS3231 on erittäin tarkka.

Rauta

Tarvitsemme Arduino UNOn (klooni) (tai NANOn), DS3231 RTC-moduulin ja 0,96" 128x64 OLED-näytön. Luonnollisesti prototyyppiin tarvitaan myös hyppylankoja ja pieni koekytkentälevy. Siinä se. Vaikka joutuisimme ostamaan kaiken hinta jäänee alle 20€:n.

Tässä on prototyypin johdotuskuva UNOlle.

Softa

Softa on niin yksinkertainen kuin se meidän rautavalinnoille voi olla. Erittäin lyhyt ja helppotajuinen, sekä helppo laajentaa myöhemmin. Muista kuitenkin asentaa kirjastot! Linkki on hyvää luettavaa jos asia on vieras.
SPI ja Wire ovat valmiiksi IDEn mukana, mutta sinun pitää ladata ja lisätä nämä kirjastot Arduino IDEen:
- Adafruit GFX
- Adafruit SSD1306
- DS3231

/*************************************************************************
 Super simple OLED clock with DS3231 RTC
 
   This is a very nice and simple beginner project introducing
   DS3231 real time clock (RST) and 128x64 OLED display. It will
   take about 15 minutes to build on breadboard.

   You can find instructions, original code and library files here:
   http://ristiinkytketty.neocities.org/beginclock.html

   Code by ristiinkytketty.neocities.org
   potatopasty@m.me
*************************************************************************/

// These librarys are needed for code to compile.

#include <SPI.h>
#include <Wire.h>
#include <DS3231.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

// Screen setup
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels

#define OLED_RESET     -1 // Reset pin # (-1 if sharing Arduino reset pin)
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);

// Init the DS3231 using the hardware interface
DS3231  rtc(SDA, SCL);

// This is setup where we set up and start our RTC and OLED screen. 
void setup() {

  // Start RTC
  rtc.begin();

  // The following lines should be uncommented to set the date and time to RTC.
  // When done, comment these lines out and upload again.
  // rtc.setDOW(SATURDAY);       // Set Day-of-Week
  // rtc.setTime(11, 40, 10);     // Set the time to 12:00:00 ( HH:MM:SS 24hr format)
  // rtc.setDate(28, 11, 2020);   // Set the date to DD, MM, YYYY

  // Start OLED
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // This is OLED address. Some older displays it might be 0x3D
  display.clearDisplay();   // Clear the display buffer
  display.setRotation(0); // Set rotation of display, values 0-3. Default = 0.
}

// In this the program loop. We read the data from RTC and display it to OLED.
void loop() {

  // Set text color, position and size
  display.setTextColor(WHITE, BLACK);  // Set white text and black text background.
  display.setCursor(20, 26);           // Set text position. (0, 0) is top left corner.
  display.setTextSize(2);              // Set text size. Scale from 1 up.

  // Get data from the DS3231 and Show time on screen, 24h format.
  display.println(rtc.getTimeStr());   // This is time string from RTC, default format is HH:MM:SS
  display.display();                   // You MUST call display() after           
}

Voit ladata koodin tästä.

Tämä on minun prototyyppini.

😊

← Takaisin