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
#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 NoneStvara 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 voidInicijalizira biblioteku, periferiju i međuspremnik slike. Pozovite je jednom u setup().
ReturnsNišta.
inkplate.rtc.clearAlarmFlag()returns voidBriše zastavicu alarma preostalu od prethodnog alarma.
ReturnsNišta.
inkplate.rtc.isSet()returns boolJavlja 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 voidUpisuje 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 voidUpisuje datum u RTC. yr je puna godina, ovdje 2026.
ReturnsNišta.
inkplate.rtc.getEpoch()returns uint32_tVraća vrijeme RTC-a kao epoch vrijednost.
ReturnsEpoch vrijeme.
inkplate.rtc.setAlarmEpoch(uint32_t _epoch, uint8_t _match)returns voidPostavlja 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_tFunkcija 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 voidFunkcija 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 voidPostavlja mjesto na kojem počinje sljedeći ispisani tekst.
ReturnsNišta.
inkplate.setTextSize(uint8_t s)returns voidPostavlja povećanje teksta, ovdje 2.
ReturnsNišta.
inkplate.setTextColor(uint16_t c, uint16_t bg)returns voidPostavlja 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_tVraća dan u tjednu, od 0 (nedjelja) do 6.
ReturnsDan u tjednu.
inkplate.rtc.getDay()returns uint8_tVraća dan u mjesecu.
ReturnsDan u mjesecu.
inkplate.rtc.getMonth()returns uint8_tVraća mjesec.
ReturnsMjesec, od 1 do 12.
inkplate.rtc.getYear()returns uint16_tVraća godinu: vrijednost pohranjenu u RTC-u plus 2000.
ReturnsPuna godina.
inkplate.rtc.getHour()returns uint8_tVraća sate.
ReturnsSati.
inkplate.rtc.getMinute()returns uint8_tVraća minute.
ReturnsMinute.
inkplate.rtc.getSecond()returns uint8_tVraća sekunde.
ReturnsSekunde.
inkplate.print(value, format)returns size_tIspisuje 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