Proiectul reprezinta un ceas cu alarmă care necesită rezolvarea unei probleme simple de matematică pentru a putea fi oprită. Acestui ceas cu alarmă i se poate seta cu o anumită oră de trezire și poate fi activat prin apăsarea unui buton. În momentul în care sună alarma, se va afișa o problemă de matematică pe ecranul LCD al ceasului și trebuie să o rezolvi pentru a opri sunetul alarmei. În cazul în care nu se rezolvă problema de matematică, sunetul alarmei va continua să sune. Acest proiect poate fi util pentru persoanele care au dificultăți în a se trezi dimineața, apasand butonul de amanare a alarmei.
Modulul de interacțiune dintre elementele sistemului și mediul exterior este asigurat de telecomanda IR și de display LCD. Utilizatorul poate seta ora de alarmă și poate opri sunetul alarmei folosind telecomanda IR. Acesta poate vedea ora curentă, problema de matematică și starea sistemului pe ecranul LCD. De asemenea, poate rezolva problema de matematică pentru a opri sunetul alarmei. În plus, modulul RTC DS1307 menține ora în timp real, chiar și după ce sursa de alimentare a sistemului este oprită.
Astfel, modulul de interacțiune dintre elementele sistemului și mediul exterior este simplu și intuitiv.
Listă componente:
Schema electrică:
https://github.com/anamariarotari/smartclock
https://www.youtube.com/shorts/OF910UmTgCE
Am folosit următoarele biblioteci:
La inițializare, se setează pinii și se configurează afișajul LCD și receptorul IR. De asemenea, se ajustează ceasul timp real (RTC) la data și ora curentă.
În funcția loop(), se afișează pe LCD timpul curent preluat de la RTC. Apoi, se apelează funcția getAlarm() care verifică dacă este momentul să se declanșeze alarma și dacă utilizatorul trebuie să introducă răspunsul corect la o ecuație pentru a o dezactiva.
Funcția getAlarm() are mai multe etape:
Codul utilizează funcții auxiliare cum ar fi translateIR() pentru a traduce codurile IR în comenzi utilizabile și setHour(), setMinute(), setSecond() pentru a gestiona introducerea valorilor pentru alarmă.
Fişierele se încarcă pe wiki folosind facilitatea Add Images or other files. Namespace-ul în care se încarcă fişierele este de tipul :pm:prj20??:c? sau :pm:prj20??:c?:nume_student (dacă este cazul). Exemplu: Dumitru Alin, 331CC → :pm:prj2009:cc:dumitru_alin.