This shows you the differences between two versions of the page.
pm:prj2023:iotelea:clocksetdatatime [2023/05/29 14:32] asmaa_gamal.al [Concluzii] |
pm:prj2023:iotelea:clocksetdatatime [2023/05/30 19:36] (current) asmaa_gamal.al [Bibliografie/Resurse] |
||
---|---|---|---|
Line 40: | Line 40: | ||
===== Software Design ===== | ===== Software Design ===== | ||
- | Algoritmul principal implementat în aplicație este unul simplu de afișare a timpului curent și verificare a activării alarmei în funcție de valorile setate de utilizator. Au fost implementate următoarele surse și funcții:\\ | + | Codul furnizat este o implementare a unui ceas cu alarmă utilizând un Arduino și un modul RTC (Real-Time Clock). Acesta folosește o serie de biblioteci precum **Wire.h**, **RTClib.h**, **TimeLib.h** și **LiquidCrystal_I2C.h** pentru a permite comunicarea cu modulul RTC și afișarea datelor pe un afișaj LCD. Codul este structurat în jurul unei bucle principale **loop()**, care se execută în mod continuu. În această buclă, se verifică valoarea variabilei **menu** pentru a determina starea curentă a programului și se apelează funcțiile corespunzătoare pentru a afișa și gestiona diferitele aspecte ale ceasului. \\ |
- | * Funcția **setup()**: Această funcție inițializează mediul de lucru și setează stările inițiale ale piniilor. Ea configurează modulul RTC, inițializează afișajul LCD și afișează un mesaj de inițializare pe afișajul LCD.\\ | + | De exemplu, funcția **DisplayDateTime()** afișează data și ora curentă pe afișajul LCD. Utilizatorul poate apăsa butonul "SET" pentru a trece în modul de setare a orei, minutei, anului, lunii sau zilei, iar funcțiile corespunzătoare precum **DisplaySetHour()** sau **DisplaySetMinute()** permit modificarea valorilor corespunzătoare. Există, de asemenea, funcția **DisplaySetAlarm()** care permite setarea alarmei. Utilizatorul poate ajusta ora și minutul alarmei utilizând butoanele specifice, iar starea alarmei (pornită sau oprită) poate fi modificată prin apăsarea butonului "ALARM ON/OFF". |
- | * Funcția **loop()**: Aceasta reprezintă bucla principală a aplicației, în care se execută logica principală a programului. În cadrul buclei loop, se afișează timpul și data curentă pe afișajul LCD, se verifică apăsarea butonului "Set" pentru activarea modului de setare a alarmei și se implementează modul de setare a alarmei, care permite utilizatorului să stabilească ora și minutul pentru alarmă. De asemenea, se verifică dacă ora curentă se potrivește cu ora și minutul setate de utilizator pentru alarmă și se activează un buzzer în caz de potrivire. | + | În funcția **Saving()**, valorile actualizate ale datei și orei sunt salvate în modulul RTC, iar utilizatorul primește un mesaj de confirmare pe afișaj. Codul conține, de asemenea, utilizarea funcției **tone()** pentru a genera un sunet de alarmă dacă ora curentă se potrivește cu ora și minutul setate pentru alarmă. |
- | Codul aplicației este structurat într-un mod clar și modular, cu funcții separate pentru diverse funcționalități și bucle de execuție distincte pentru diferite stări ale aplicației. Aceasta facilitează înțelegerea, întreținerea și extinderea codului.\\ | + | |
- | Aplicația utilizează următoarele librării și surse terțe:\\ | ||
- | * **Wire**: Biblioteca Wire facilitează comunicarea prin protocolul I2C, utilizată pentru a interacționa cu modulul RTC DS1307 și cu afișajul LCD utilizat în proiect.\\ | ||
- | * **RTClib**: Această bibliotecă oferă funcționalitatea necesară pentru a comunica cu modulul RTC (Real-Time Clock), în acest caz modelul DS1307. Biblioteca RTClib simplifică operațiile de citire și scriere a timpului și datei.\\ | ||
- | * **LiquidCrystal_I2C**: Această bibliotecă permite controlul unui afișaj LCD prin intermediul protocolului I2C. Afișajul LCD utilizat în proiect are o configurație I2C, ceea ce face ca această bibliotecă să fie utilă pentru a simplifica interacțiunea cu afișajul.\\ | ||
===== Rezultate Obţinute ===== | ===== Rezultate Obţinute ===== | ||
Line 73: | Line 68: | ||
===== Download ===== | ===== Download ===== | ||
- | {{:pm:prj2023:iotelea:pm_-_proiect.zip|}} | + | Acest fisier {{:pm:prj2023:iotelea:pm_clock_set_data_time_-_files.zip|}} contine toate resursele necesare pentru proiectul "Clock with Alarm" pe platforma Arduino. Fisierul include urmatoarele elemente:\\ |
+ | 1. Codul sursa: **PM_Software.ino**: Este fisierul principal al proiectului care contine codul sursa pentru implementarea unui ceas cu functie de alarma. Acesta poate fi deschis si editat cu Arduino IDE. | ||
+ | 2. Biblioteci:\\ | ||
+ | - RTClib: O biblioteca pentru a permite comunicarea cu modulul RTC (Real-Time Clock).\\ | ||
+ | - LiquidCrystal_I2C: O biblioteca pentru controlul display-ului LCD (I2C).\\ | ||
+ | - Alte biblioteci specifice pot fi incluse in fisierul ZIP, daca sunt folosite in proiect.\\ | ||
+ | |||
+ | 3. README.md\\ | ||
+ | 4. Imagini: contine imagini relevante pentru proiect, cum ar fi scheme de conexiune sau capturi de ecran ale aplicatiei.\\ | ||
===== Jurnal ===== | ===== Jurnal ===== | ||
Line 93: | Line 97: | ||
* <html><a class="https://www.instructables.com/Simple-Arduino-Clock/" href="?do=export_pdf">Simple Arduino Clock</a></html> | * <html><a class="https://www.instructables.com/Simple-Arduino-Clock/" href="?do=export_pdf">Simple Arduino Clock</a></html> | ||
* <html><a class="https://www.tinkercad.com" href="?do=export_pdf">Tinkercad</a></html> | * <html><a class="https://www.tinkercad.com" href="?do=export_pdf">Tinkercad</a></html> | ||
+ | * <html><a class="pm_final.pdf" href="?do=export_pdf">Clock Set Data Time - PDF</a></html> | ||
+ | |||