This is an old revision of the document!
Autor: Dimovski Kirjan
Grupa: 332CB
Un ceas cu alarmă cu un LCD care utilizează un RTC DS3231 pentru a ține evidența timpului.
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.
Am folosit si rezistore de pull up pentru ca am connectat 2 despozitive la I2C.
Dezvoltarea a fost facuta folosind mediul de dezvoltare Arduino IDE
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;
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.
Porneste buzzerul la o frecventa de 1000. Folosit in setup() cu attachInterrupt().
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.
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.
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.