Skip to main content

RTC alarm

Što ovaj primjer prikazuje​

Postavlja vrijeme, datum i alarm na ugrađenom satu stvarnog vremena (RTC) PCF85063A, zatim jednom u minuti prikazuje vrijeme i ispisuje ALARM! kada se alarm aktivirao. Alarm je postavljen jednu minutu nakon početnog vremena.

Primjer koda​

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

Inkplate inkplate; // Create an object on Inkplate library

// Set clock
uint8_t hour = 12;
uint8_t minutes = 51;
uint8_t seconds = 10;

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

// Set alarm time and date (alarm will be generated 60 seconds after board power up)
uint8_t alarmHour = 12;
uint8_t alarmMinutes = 52;
uint8_t alarmSeconds = 10;
uint8_t alarmWeekday = 1;
uint8_t alarmDay = 20;

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_RED, 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
inkplate.rtc.setAlarm(alarmSeconds, alarmMinutes, alarmHour, alarmDay, alarmWeekday); // Set alarm
}

void loop()
{
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(100, 300); // Set position of the text
printTime(hour, minutes, seconds, day, weekday, month, year); // Print the time on screen

if (inkplate.rtc.checkAlarmFlag()) // Check if alarm has occurred
{
inkplate.rtc.clearAlarmFlag(); // It's recommended to clear alarm flag after alarm has occurred
inkplate.setCursor(400, 400); // Set new position for cursor
inkplate.print("ALARM!");
}

inkplate.display(); // Do a full refresh

delay(60000); // Delay between refreshes one minute
}

void printTime(uint8_t _hour, uint8_t _minutes, uint8_t _seconds, uint8_t _day, uint8_t _weekday, uint16_t _month,
uint8_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, no rtc.setDate() očekuje punu godinu i od nje oduzima 2000, a rtc.getYear() vraća punu godinu. Zato godina na zaslonu neće biti 2026. Za ispravnu godinu predajte funkciji setDate() punu godinu (na primjer 2026) u varijabli tipa uint16_t.

Korištene funkcije​

Inkplate()returns None

Stvara objekt Inkplate. Inkplate 7SPECTRA ima 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.reset()returns void

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

ReturnsNišta.

inkplate.clearDisplay()returns void

Ispunjava međuspremnik slike bijelom bojom. Ne mijenja zaslon.

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 crvenu na bijeloj.

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 postavljenog. Dan u tjednu 0 je nedjelja. yr je puna godina; funkcija oduzima 2000 prije upisa.

ReturnsNišta.

inkplate.rtc.setAlarm(uint8_t alarm_second, uint8_t alarm_minute, uint8_t alarm_hour, uint8_t alarm_day, uint8_t alarm_weekday)returns void

Postavlja vrijeme alarma i uključuje alarm.

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.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.rtc.checkAlarmFlag()returns bool

Javlja je li se alarm aktivirao.

Returnstrue kada se dosegne vrijeme alarma.

inkplate.rtc.clearAlarmFlag()returns void

Briše zastavicu alarma kako bi se mogao otkriti sljedeći alarm.

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.print(value, format)returns size_t

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

ReturnsBroj ispisanih bajtova.

inkplate.display(bool _leaveOn = 0)returns void

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

ReturnsNišta.

Što očekivati​

Jednom u minuti zaslon se osvježi s vremenom i datumom crvenom bojom, u obliku HH:MM:SS Weekday, DD/MM/ iza kojeg slijedi godina, počevši od 12:51:10 Monday, 20/07/. Pri osvježavanju nakon vremena alarma ALARM! pojavljuje se niže na zaslonu. Skica ne ispisuje ništa u serijski monitor.

🔗Otvorite cijeli primjer

examples/Inkplate7SPECTRA/Advanced/RTC/Inkplate7SPECTRA_RTC_Alarm

→