Skip to main content

RTC sat

Što ovaj primjer prikazuje​

Postavite vrijeme i datum na ugrađenom satu stvarnog vremena (RTC) PCF85063A, pročitajte ih natrag i prikažite na zaslonu. Zaslon se osvježava jednom u minuti.

Primjer koda​

Select Board
Inkplate7SPECTRA_RTC_Simple.ino
#include "Inkplate.h" // Include Inkplate library to the sketch

Inkplate inkplate; // Create an object on Inkplate library

#define REFRESH_DELAY 60000 // Delay between refreshes one minute
unsigned long time1; // Time for measuring refresh in millis

// Set clock
uint8_t hour = 13;
uint8_t minutes = 0;
uint8_t seconds = 10;

// Set date and weekday (NOTE: In weekdays 0 means Sunday, 1 means Monday, ...)
uint8_t weekday = 1;
uint8_t day = 2;
uint8_t month = 2;
uint8_t year = 26;

void setup()
{
inkplate.begin(); // Init Inkplate library (you should call this function ONLY ONCE)
inkplate.rtc.reset(); // reset RTC if there is some data in it
inkplate.clearDisplay(); // Clear frame buffer of display
inkplate.setTextSize(3); // Set text to be 3 times bigger than classic 5x7 px text
inkplate.setTextColor(INKPLATE_BLACK, INKPLATE_WHITE); // Set text color and background

inkplate.rtc.setTime(hour, minutes, seconds); // Send time to RTC
inkplate.rtc.setDate(weekday, day, month, year); // Send date to RTC
getAndDisplayTime(); // Display time on the screen
}

void loop()
{
// Refresh screen every one minute
if ((unsigned long)(millis() - time1) > REFRESH_DELAY)
{
// Display time on the screen
getAndDisplayTime();

// Store current millis
time1 = millis();
}
}

void getAndDisplayTime()
{
inkplate.rtc.getRtcData(); // Get the time and date from RTC

seconds = inkplate.rtc.getSecond(); // Store senconds in a variable
minutes = inkplate.rtc.getMinute(); // Store minutes in a variable
hour = inkplate.rtc.getHour(); // Store hours in a variable
day = inkplate.rtc.getDay(); // Store day of month in a variable
weekday = inkplate.rtc.getWeekday(); // Store day of week in a variable
month = inkplate.rtc.getMonth(); // Store month in a variable
year = inkplate.rtc.getYear(); // Store year in a variable

inkplate.clearDisplay(); // Clear content in frame buffer
inkplate.setCursor(80, 300); // Set position of the text
printTime(hour, minutes, seconds, day, weekday, month, year); // Print the time on screen
inkplate.display(); // Refresh the screen
}

void printTime(uint8_t _hour, uint8_t _minutes, uint8_t _seconds, uint8_t _day, uint8_t _weekday, uint8_t _month,
uint16_t _year)
{
// Write time and date info on screen
char *wday[] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};

print2Digits(_hour);
inkplate.print(':');
print2Digits(_minutes);
inkplate.print(':');
print2Digits(_seconds);

inkplate.print(' ');

inkplate.print(wday[_weekday]);
inkplate.print(", ");
print2Digits(_day);
inkplate.print('/');
print2Digits(_month);
inkplate.print('/');
inkplate.print(_year, DEC);
}

void print2Digits(uint8_t _d)
{
if (_d < 10)
inkplate.print('0');
inkplate.print(_d, DEC);
}

Skica sprema godinu kao 26, ali rtc.setDate() očekuje punu godinu i od nje oduzima 2000, a rtc.getYear() vraća punu godinu. Zato godina na zaslonu neće glasiti 2026. Da biste dobili ispravnu godinu, funkciji setDate() proslijedite punu godinu (na primjer 2026) u varijabli tipa uint16_t.

Korištene funkcije​

Inkplate()returns None

Stvara objekt Inkplate. Inkplate 7SPECTRA ima jedan šesterobojni način rada, pa konstruktor ne prima argument načina rada.

ReturnsKonstruktor; nema povratne vrijednosti.

inkplate.begin()returns void

Inicijalizira biblioteku, periferne jedinice i međuspremnik okvira. Pozovite je jednom u setup().

ReturnsNišta.

inkplate.rtc.reset()returns void

Upisuje zadanu vrijednost u prvi kontrolni registar RTC-a i briše postavke zaostale iz ranije skice.

ReturnsNišta.

inkplate.clearDisplay()returns void

Ispunjava međuspremnik okvira bijelom bojom. Ne mijenja prikaz na panelu.

ReturnsNišta.

inkplate.setTextSize(uint8_t s)returns void

Postavlja povećanje teksta, ovdje 3.

ReturnsNišta.

inkplate.setTextColor(uint16_t c, uint16_t bg)returns void

Postavlja boju teksta i boju pozadine iscrtane iza svakog znaka, ovdje crno na bijelom.

ReturnsNišta.

inkplate.rtc.setTime(uint8_t hour, uint8_t minute, uint8_t sec, bool isPM = false)returns void

Upisuje vrijeme u RTC. isPM se koristi samo u 12-satnom načinu rada.

ReturnsNišta.

inkplate.rtc.setDate(uint8_t weekday, uint8_t day, uint8_t month, uint16_t yr)returns void

Upisuje datum u RTC i označava ga kao postavljen. Dan u tjednu 0 je nedjelja. yr je puna godina; funkcija prije upisa oduzima 2000.

ReturnsNišta.

inkplate.rtc.getRtcData()returns void

Čita vrijeme i datum iz RTC-a; get funkcije u nastavku vraćaju pročitane vrijednosti.

ReturnsNišta.

inkplate.rtc.getSecond()returns uint8_t

Vraća sekunde.

ReturnsSekunde.

inkplate.rtc.getMinute()returns uint8_t

Vraća minute.

ReturnsMinute.

inkplate.rtc.getHour()returns uint8_t

Vraća sate.

ReturnsSati.

inkplate.rtc.getDay()returns uint8_t

Vraća dan u mjesecu.

ReturnsDan u mjesecu.

inkplate.rtc.getWeekday()returns uint8_t

Vraća dan u tjednu, od 0 (nedjelja) do 6.

ReturnsDan u tjednu.

inkplate.rtc.getMonth()returns uint8_t

Vraća mjesec.

ReturnsMjesec, od 1 do 12.

inkplate.rtc.getYear()returns uint16_t

Vraća godinu: vrijednost spremljenu u RTC-u plus 2000.

ReturnsPuna godina.

inkplate.setCursor(int16_t x, int16_t y)returns void

Postavlja mjesto na kojem počinje sljedeći ispisani tekst.

ReturnsNišta.

inkplate.print(value, format)returns size_t

Ispisuje tekst, znak ili broj u međuspremnik okvira, kao Serial.print(). DEC ispisuje broj u decimalnom zapisu.

ReturnsBroj ispisanih bajtova.

inkplate.display(bool _leaveOn = 0)returns void

Šalje cijeli međuspremnik okvira na panel i osvježava ga.

ReturnsNišta.

Što očekivati​

Zaslon crnom bojom prikazuje vrijeme i datum u obliku HH:MM:SS Weekday, DD/MM/, nakon čega slijedi godina, počevši od 13:00:10 Monday, 02/02/, a osvježava se trenutačnim vremenom jednom u minuti. Skica ne ispisuje ništa u Serial Monitor.

🔗Otvorite cjeloviti primjer

examples/Inkplate7SPECTRA/Advanced/RTC/Inkplate7SPECTRA_RTC_Simple

→