Skip to main content

RTC alarm s dubokim snom

Što prikazuje ovaj primjer​

Probudite Inkplate iz dubokog sna pomoću RTC alarma. Pri svakom pokretanju skica prikaže trenutačno vrijeme i datum, postavi alarm 60 sekundi unaprijed i vrati se u duboki san, pa se pločica budi otprilike jednom u minuti, osvježi zaslon i ponovno zaspi. Ako RTC još nije postavljen, skica ga prvo postavi na 13:30:00, 20. srpnja 2026.

Ovaj primjer koristi i esp_sleep_enable_ext0_wakeup() i esp_deep_sleep_start(), koji dolaze uz paket pločice ESP32 i nisu dio biblioteke Inkplate.

Primjer koda​

Select Board
Inkplate7SPECTRA_RTC_Alarm_With_Deep_Sleep.ino
#include "Inkplate.h" //Include inkplate library to the sketch
#include "driver/rtc_io.h" //Include ESP32 library for RTC pin I/O (needed for rtc_gpio_isolate() function)
#include <rom/rtc.h> //Include ESP32 library for RTF (needed for rtc_get_reset_reason() function)

Inkplate inkplate; //Create an object on Inkplate library

void setup() {
inkplate.begin(); // Init Inkplate library (you should call this function ONLY ONCE)
inkplate.rtc.clearAlarmFlag(); // Clear alarm flag from any previous alarm
if(!inkplate.rtc.isSet()) // Check if RTC is already is set. If ts not, set time and date
{
// display.setTime(hour, minute, sec);
inkplate.rtc.setTime(13,30,00); // 24H mode, ex. 13:30:00
// display.setDate(weekday, day, month, yr);
inkplate.rtc.setDate(1,20,7,2026); // 0 for Monday, ex. Saturday, 5.12.2022.

// display.rtc.setEpoch(1589610300); // Or use epoch for setting the time and date
}
printCurrentTime(); // Display current time and date
inkplate.display();

inkplate.rtc.setAlarmEpoch(inkplate.rtc.getEpoch() + 60, RTC_ALARM_MATCH_DHHMMSS); // Set RTC alarm 60 seconds from now

// Enable wakup from deep sleep on gpio 2 where RTC interrupt is connected
esp_sleep_enable_ext0_wakeup(GPIO_NUM_2, 0);

// Start deep sleep (this function does not return). Program stops here.
esp_deep_sleep_start();
}

void loop() {
// put your main code here, to run repeatedly:

}

void printCurrentTime(){
inkplate.setCursor(50,250);
inkplate.setTextSize(2);
inkplate.setTextColor(INKPLATE_BLUE, INKPLATE_WHITE); // Set text color and background

inkplate.rtc.getRtcData();
switch (inkplate.rtc.getWeekday())
{
case 0:
inkplate.print("Sunday , ");
break;
case 1:
inkplate.print("Monday , ");
break;
case 2:
inkplate.print("Tuesday , ");
break;
case 3:
inkplate.print("Wednesday , ");
break;
case 4:
inkplate.print("Thursday , ");
break;
case 5:
inkplate.print("Friday , ");
break;
case 6:
inkplate.print("Saturday , ");
break;
}
inkplate.print(inkplate.rtc.getDay());
inkplate.print(".");
inkplate.print(inkplate.rtc.getMonth());
inkplate.print(".");
inkplate.print(inkplate.rtc.getYear());
inkplate.print(". ");
print2Digits(inkplate.rtc.getHour());
inkplate.print(':');
print2Digits(inkplate.rtc.getMinute());
inkplate.print(':');
print2Digits(inkplate.rtc.getSecond());
}

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

Komentar uz setDate() kaže da je 0 ponedjeljak, ali nazivi dana koje skica ispisuje koriste 0 za nedjelju, pa se dan 1 u pozivu prikazuje kao ponedjeljak.

Korištene funkcije​

Inkplate()returns None

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

ReturnsKonstruktor; nema povratne vrijednosti.

inkplate.begin()returns void

Inicijalizira biblioteku, periferiju i međuspremnik slike. Pozovite je jednom u setup().

ReturnsNišta.

inkplate.rtc.clearAlarmFlag()returns void

Briše zastavicu alarma preostalu od prethodnog alarma.

ReturnsNišta.

inkplate.rtc.isSet()returns bool

Javlja je li vrijeme i datum RTC-a već postavljen. Skica ih postavlja samo kada vrati false, pa vrijeme ostaje sačuvano tijekom dubokog sna.

Returnstrue ako je RTC postavljen.

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. yr je puna godina, ovdje 2026.

ReturnsNišta.

inkplate.rtc.getEpoch()returns uint32_t

Vraća vrijeme RTC-a kao epoch vrijednost.

ReturnsEpoch vrijeme.

inkplate.rtc.setAlarmEpoch(uint32_t _epoch, uint8_t _match)returns void

Postavlja alarm na vrijeme u _epoch. _match određuje koji dijelovi vremena moraju odgovarati: skica prosljeđuje RTC_ALARM_MATCH_DHHMMSS (dan, sati, minute i sekunde). Ostale vrijednosti su RTC_ALARM_MATCH_SS, RTC_ALARM_MATCH_MMSS, RTC_ALARM_MATCH_HHMMSS i RTC_ALARM_MATCH_WHHMMSS.

ReturnsNišta.

esp_sleep_enable_ext0_wakeup(GPIO_NUM_2, 0)returns esp_err_t

Funkcija iz paketa pločice ESP32: budi pločicu iz dubokog sna kada zadani pin dosegne zadanu razinu. Skica koristi GPIO 2, na koji je prema njezinu komentaru spojen RTC prekid, i razinu 0.

ReturnsESP_OK u slučaju uspjeha.

esp_deep_sleep_start()returns void

Funkcija iz paketa pločice ESP32: pokreće duboki san. Ne vraća se; pločica se pri buđenju ponovno pokreće od setup().

ReturnsNe vraća se.

inkplate.display(bool _leaveOn = 0)returns void

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

ReturnsNišta.

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

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

ReturnsNišta.

inkplate.setTextSize(uint8_t s)returns void

Postavlja povećanje teksta, ovdje 2.

ReturnsNišta.

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

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

ReturnsNišta.

inkplate.rtc.getRtcData()returns void

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

ReturnsNišta.

inkplate.rtc.getWeekday()returns uint8_t

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

ReturnsDan u tjednu.

inkplate.rtc.getDay()returns uint8_t

Vraća dan u mjesecu.

ReturnsDan u mjesecu.

inkplate.rtc.getMonth()returns uint8_t

Vraća mjesec.

ReturnsMjesec, od 1 do 12.

inkplate.rtc.getYear()returns uint16_t

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

ReturnsPuna godina.

inkplate.rtc.getHour()returns uint8_t

Vraća sate.

ReturnsSati.

inkplate.rtc.getMinute()returns uint8_t

Vraća minute.

ReturnsMinute.

inkplate.rtc.getSecond()returns uint8_t

Vraća sekunde.

ReturnsSekunde.

inkplate.print(value, format)returns size_t

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

ReturnsBroj ispisanih bajtova.

Što očekivati​

Pri prvom pokretanju zaslon prikazuje vrijeme i datum plavom bojom, u obliku Monday , 20.7.2026. 13:30:00. Zatim pločica zaspi; otprilike minutu poslije alarm je probudi, a zaslon se osvježi novim vremenom, na primjer Monday , 20.7.2026. 13:31:00. To se ponavlja dok ne isključite napajanje pločice. Skica ne ispisuje ništa u Serial Monitor.

🔗Otvorite cijeli primjer

examples/Inkplate7SPECTRA/Advanced/DeepSleep/Inkplate7SPECTRA_RTC_Alarm_With_Deep_Sleep

→