Table of Contents

Alarm Clock LCD

Autor: Dimovski Kirjan
Grupa: 332CB

Introducere

Un ceas cu alarmă cu un LCD care utilizează un RTC DS3231 pentru a ține evidența timpului.

Descriere generală

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

Am folosit si rezistore de pull up pentru ca am connectat 2 despozitive la I2C.

Software Design

Dezvoltarea a fost facuta folosind mediul de dezvoltare Arduino IDE

Bibliotecile externe folosite

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;

Functii

setup()

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().

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

Link to YouTube pentru demo-ul.

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

arhiva_kd332cb.zip

Bibliografie/Resurse

Export to PDF