El microcontrolador Arduino MKR WIFI 1010 incorpora un rellotge de temps real, és a dir un sistema per mantenir la data i l'hora amb precisió. Mentre el microcontrolador mantingui l'alimentació, la data i l'hora es mantindrà al dia. La funció setEpoch ens permet posar el rellotge en hora, per exemple agafant-la d'internet, com es mostra en aquest exemple.
Per emprar el rellotge de temps real, disposem de la biblioteca RTCZero.h. A continuació hi ha la llista de les funcions més interessants.
| Funció | Paràmetres | Comentaris |
| begin | Inicialitza el rellotge de temps real | |
| setEpoch | instant actual (unsigned long) |
Permet posar les dades corresponents a l'instant actual per exemple, agafades d'internet amb getTime |
| getDay | Torna el dia del mes | |
| getMonth | Torna el mes | |
| getYear | Torna l'any (dues xifres) | |
| getHours | Torna l'hora | |
| getMinutes | Torna els minuts | |
| getSeconds | Torna els segons | |
| setDate | dia, mes, any (tots tres byte) (l'any només dues xifres) |
Canvia l'hora completa |
| setDay | dia (byte) | Canvia el dia del mes |
| setMonth | mes (byte) | Canvia el mes |
| setYear | any en dues xifres (byte) |
Canvia l'any |
| setTime | hores, minuts, segons (tots tres byte) |
Canvia l'hora completa |
| setHours | hora (byte) | Canvia l'hora |
| setMinutes | minuts (byte) | Canvia els minuts |
| setSeconds | segons (byte) | Canvia els segons |
A més, podem fer que s'executi una funció quan es donen unes determinades condicions, de manera similar a programar una alarma. També podem posar el microcontrolador en repòs i que es reactivi en un instant determinat. El rellotge de temps real no s'atura en mode de repòs. Les funcions principals són les següents:
| Funció | Paràmetres | Comentaris |
| enableAlarm | Tipus d'alarma | Activa l'alarma El tipus d'alarma és un dels que apareixen a la taula que hi ha més avall |
| disableAlarm | Desactiva l'alarma | |
| attachInterrupt | Funció (void) |
Assigna la funció que s'ha d'executar quan s'activi l'alarma |
| detachInterrupt | Desassigna la funció | |
| standbyMode | Activa el mode de repòs | |
| setAlarmDate | dia, mes, any (tots tres byte) (l'any només dues xifres) |
Estableix l'hora completa |
| setAlarmDay | dia (byte) | Estableix el dia del mes |
| setAlarmMonth | mes (byte) | Estableix el mes |
| setAlarmYear | any en dues xifres (byte) |
Estableix l'any |
| setAlarmTime | hores, minuts, segons (tots tres byte) |
Estableix l'hora completa |
| setAlarmHours | hora (byte) | Estableix l'hora |
| setAlarmMinutes | minuts (byte) | Estableix els minuts |
| setAlarmSeconds | segons (byte) | Estableix els segons |
En aquest exemple tenim una possible aplicació.
Els tipus d'alarma poden ser els següents:
| Tipus | Utilització |
| MATCH_SS | Han de coincidir els segons |
| MATCH_MMSS | Han de coincidir els minuts i els segons |
| MATCH_HHMMSS | Ha de coincidir l'hora completa |
| MATCH_DHHMMSS | Han de coincidir el dia i l'hora completa |
| MATCH_MMDDHHMMSS | Han de coincidir el dia, el mes i l'hora completa |
| MATCH_YYMMDDHHMMSS | Han de coincidir la data completa i l'hora completa |
Important: La funció standbyMode no s'ha de fer servir dins de la funció d'interrupció ja que mentres aquesta s'executa les interrupcions estaran desctivades i si s'entra en mode descans no es podrà despertar per interrupció.
Atenció: Si intentem enviar el programa mentre el microcontrolador està en mode descans, pot passar que ens doni un error. En cas que el microcontrolador estigui en mode descans, convindrà prémer el polsador de reset quan es pica el botó d'enviar el programa.
A continuació tenim alguns exemples de sintaxi:
RTCZero rtc;
void funcioAlarma() {
...
}
rtc.setAlarmTime(0, 0, 0); rtc.enableAlarm(rtc.MATCH_SS); rtc.attachInterrupt(funcioAlarma);
rtc.standbyMode();
En aquest web, les fotografies marcades amb [AF] són del web d'Adafruit, les marcades amb [SF] del web d'Sparkfun i les marcades amb [AU] del web d'Arduino.

Aquesta obra d'Oriol Boix està llicenciada sota una llicència no importada Reconeixement-NoComercial-SenseObraDerivada 3.0.