This shows you the differences between two versions of the page.
pm:prj2021:alazar:alarmclocklcd [2021/05/31 00:40] kdimovski created |
pm:prj2021:alazar:alarmclocklcd [2021/05/31 19:35] (current) kdimovski |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | w====== Alarm Clock LCD ====== | + | ====== Alarm Clock LCD ====== |
Autor: Dimovski Kirjan\\ | Autor: Dimovski Kirjan\\ | ||
Grupa: 332CB | Grupa: 332CB | ||
===== Introducere ===== | ===== Introducere ===== | ||
- | An Alarm Clock with an LCD using an RTC DS3231 to keep track of the time. | + | Un ceas cu alarmă cu un LCD care utilizează un RTC DS3231 pentru a ține evidența timpului. |
===== Descriere generală ===== | ===== Descriere generală ===== | ||
- | {{ :pm:prj2021:alazar:schema.png?500 | Schema generala}} | + | {{ :pm:prj2021:alazar:diagram_alarm_lcd.jpg?500 |}} |
- | Use buttons to set alarm. | + | |
+ | Arduino citeste din modul, converteste datele si le trimite display-ului. Un buzzer porneste daca timpul alarmei a ajuns la timpul curent. Pentru a opri alarma se apasa butonul din mijloc. Pentry ca avem o baterie în modulul, acesta va ține evidența timpului, chiar dacă nu este alimentat de o conexiune USB. | ||
===== Hardware Design ===== | ===== Hardware Design ===== | ||
* Arduino UNO R3 | * Arduino UNO R3 | ||
- | * LCD 2004 I2C | + | * LCD 2004 I2C (0x27) |
- | * RTC DS3231 | + | * RTC DS3231 (0x68) |
- | * LED | + | |
* Fire | * Fire | ||
* Breadboard | * Breadboard | ||
* Buzzer | * Buzzer | ||
- | * Rezistente | + | * 3 x Rezistente |
- | * Butoane | + | * 4 x Butoane |
{{ :pm:prj2021:alazar:untitled_sketch_bb.png?nolink&800 |}} | {{ :pm:prj2021:alazar:untitled_sketch_bb.png?nolink&800 |}} | ||
- | <note tip> | ||
- | Aici puneţi tot ce ţine de hardware design: | ||
- | * listă de piese | ||
- | * scheme electrice (se pot lua şi de pe Internet şi din datasheet-uri, e.g. http://www.captain.at/electronic-atmega16-mmc-schematic.png) | ||
- | * diagrame de semnal | ||
- | * rezultatele simulării | ||
- | </note> | ||
+ | Am folosit si rezistore de pull up pentru ca am connectat 2 despozitive la I2C. | ||
===== Software Design ===== | ===== Software Design ===== | ||
+ | Dezvoltarea a fost facuta folosind mediul de dezvoltare [[https://www.arduino.cc/en/software|Arduino IDE]] | ||
- | <note tip> | + | === Bibliotecile externe folosite === |
- | Descrierea codului aplicaţiei (firmware): | + | * Wire.h: Pentru protocolul I2C. |
- | * mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) | + | * LiquidCrystal_I2C.h: Pentru utilizarea mai usoara al ecranului. |
- | * librării şi surse 3rd-party (e.g. Procyon AVRlib) | + | |
- | * algoritmi şi structuri pe care plănuiţi să le implementaţi | + | |
- | * (etapa 3) surse şi funcţii implementate | + | |
- | </note> | + | |
- | ===== Rezultate Obţinute ===== | + | === Variabile globale === |
+ | bool alarm1_status, alarm2_status; | ||
+ | char Time[] = " : : ", | ||
+ | calendar[] = " / /20 ", | ||
+ | alarm1[] = "A1: : :00", alarm2[] = "A2: : :00", | ||
+ | temperature[] = "T: . C"; | ||
+ | byte i, second, minute, hour, day, date, month, year, | ||
+ | alarm1_minute, alarm1_hour, alarm2_minute, alarm2_hour, | ||
+ | status_reg; | ||
- | <note tip> | + | === Functii === |
- | Care au fost rezultatele obţinute în urma realizării proiectului vostru. | + | == setup() == |
- | </note> | + | Pinii de la 9 pana la 11 sunt setați ca intrări pentru butoane, utilizând rezistențele pull up încorporate ale Arduino, iar pinul 12 este dezactivat (alarm_pin) cu noTone (). |
+ | Ecranul LCD este inițializat (lcd.begin (20, 4)) și pinul 2 este setat ca pinul de întrerupere, utilizând alarmă ca procedură de întrerupere. | ||
+ | == Alarm() == | ||
+ | Porneste buzzerul la o frecventa de 1000. Folosit in setup() cu attachInterrupt(). | ||
- | ===== Concluzii ===== | + | == loop() == |
+ | Verificam daca un buton a fost apasat. Daca e, editam timpul sau alarmul si scriem pe modulul. Altfel, citim de la modulul si afisam pe display-ul. | ||
+ | ===== Rezultate Obţinute ===== | ||
- | ===== Download ===== | + | {{ :pm:prj2021:alazar:breadboard_alarm_lcd.jpg?500 |}} |
- | <note warning> | + | {{ :pm:prj2021:alazar:lcd_with_rtc.jpg?500 |}} |
- | O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului: surse, scheme, etc. Un fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună ;-). | + | |
- | 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**. | + | [[https://youtu.be/OFDeXPScweg|Link to YouTube]] pentru demo-ul. |
- | </note> | + | |
- | ===== Jurnal ===== | + | ===== Concluzii ===== |
+ | Proiectul a fost foarte interesant de implementat. M-am familiarizat cu protocolul I2C, chiar dacă uneori a fost cam dificil. Cea mai mare parte a muncii a vizat formatarea de pe ecran, cu care vă puteți distra foarte mult dacă va puneti mintea la contribuție. | ||
+ | ===== Download ===== | ||
- | <note tip> | + | {{:pm:prj2021:alazar:arhiva_kd332cb.zip|}} |
- | Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului. | + | |
- | </note> | + | |
===== Bibliografie/Resurse ===== | ===== Bibliografie/Resurse ===== | ||
- | <note> | + | * [[https://datasheets.maximintegrated.com/en/ds/DS3231.pdf|RTC DS3231 Datasheet]] |
- | Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. | + | * [[https://github.com/fdebrabander/Arduino-LiquidCrystal-I2C-library|LiquidCrystal I2C GitHub]] |
- | </note> | + | * [[https://www.bluedot.space/tutorials/how-many-devices-can-you-connect-on-i2c-bus/|How many Devices can you connect to the I2C Bus?]] |
+ | * Arduino UNO pinout | ||
+ | * [[https://ocw.cs.pub.ro/courses/pm/lab/lab1-2021|Laboratorul 1]] | ||
+ | * [[https://ocw.cs.pub.ro/courses/pm/lab/lab6-2021|Laboratorul 6]] | ||
+ | * [[https://www.youtube.com/watch?v=E6wkvTG2Ofs|YouTube 1]] | ||
+ | * [[https://www.youtube.com/watch?v=xVC0X_PE_XE&t=263s|YouTube 2]] | ||
<html><a class="media mediafile mf_pdf" href="?do=export_pdf">Export to PDF</a></html> | <html><a class="media mediafile mf_pdf" href="?do=export_pdf">Export to PDF</a></html> | ||