Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pm:prj2021:avaduva:ceasalarma [2021/06/01 02:17]
roxana.scurtu
pm:prj2021:avaduva:ceasalarma [2021/06/02 18:03] (current)
roxana.scurtu
Line 23: Line 23:
 | 3.16X2 LCD Display | 1|  | | 3.16X2 LCD Display | 1|  |
 | Buzzer pasiv | 1 | 5V |  | Buzzer pasiv | 1 | 5V | 
-| Rezistente |  4 | 1K |+| Rezistente | 4 | 1K |
 | Fire mama-tata | 10 |  | | Fire mama-tata | 10 |  |
 | Fire tata-tata | 10 | | | Fire tata-tata | 10 | |
 +
 +
  
  
Line 31: Line 33:
 Componentele care nu au fost disponibile sau de care nu mi-am dat seama ca am nevoie in momentul plasarii comenzii au fost achizitionate dintr-un magazin fizicde electronice:​ ELWEST Magazin - sector2 Componentele care nu au fost disponibile sau de care nu mi-am dat seama ca am nevoie in momentul plasarii comenzii au fost achizitionate dintr-un magazin fizicde electronice:​ ELWEST Magazin - sector2
    
-SCHEMA BLOC:+==SCHEMA BLOC:== 
 + 
 +{{:​pm:​prj2021:​avaduva:​blank_diagram.png?​550|}} 
 + 
 +**Update: 
 +N-am mai foosit baterie, cum am decis initial si am conectat prin usb placuta la pc-ul meu  
 + 
 +  
 +==SCHEMA ELECTRICA:​== 
 +
 +
 +
 +{{:​pm:​prj2021:​avaduva:​schema_ro.png?​550|}} 
 +
 +
 +
 +==Cum functioneaza?​== 
 +Am folosit un Breadboard, pentru ca nu aveam pe placuta suficienti pini pentru toate componentele. 
 +Prin intermediul modulului RTC- real time clock preiau ora si data exacta, folosindu-ma de libraria DS1302 
 +LCD-ul ales de mine are modulul I2C integrat, l-as fi putut folosi si pe cel fara modul integrat, dar doar pe acesta l-am mai gasit disponibil. 
 +Interfata I2C are 4 pini, i am conectat direct la arduiono. 
 +By default LCD-ul afiseaza ora si data exacta pe care le ia prin intermediul modulului RTC. 
 +In momentul in care doresc sa setez alarma, apas pe primul buton si imi va intra in modul de setare al alarmei, afisandu-mi pe display : 
 +hour= ? , min=? pe care le pot seta de pe al 2-lea si al 3-lea buton.Prin intermediul celui de-al 4-lea buton ies din modul de setare al alarmei si voi avea alarma setata. 
 +Daca de exemplu am setat alarma in 3h 5m, cand se va scurge timpul, buzzer ul se va activa printr-un feedback sonor. 
 + 
 + 
 + 
 + 
 +{{:​pm:​prj2021:​avaduva:​20210601_155151.jpg?​550|}} 
 + 
 + 
 + 
 + 
 + 
 +==SOFTWARE DESIGN:== 
 + 
 +<​code>​ 
 + 
 + 
 +//am inclus biblioteca 12C si cea pt rtc(DS1302.h) 
 + 
 +#include <​Wire.h>​ 
 +#include <​LiquidCrystal_I2C.h>​ 
 + 
 +// Set the LCD address to 0x27 for a 16 chars and 2 line display 
 +LiquidCrystal_I2C lcd(0x3F, 16, 2); 
 +#include <​DS1302.h>​ 
 +int Hour; 
 +int Min; 
 + 
 +//am setat pinii - in functie de cum i am pus eu pe placuta 
 +int pset = 8; // pushbutton for setting alarm 
 +int phour = 9; // pushbutton for hour 
 +int pmin = 10; // pushbutton for minutes 
 +int pexit = 11; // pushbutton for exit of set alarm 
 +int buzzer = 6; 
 +int h; 
 +int m; 
 + 
 +//Am definit starea butoanelor  
 + 
 + 
 +int buttonforset = 0; // pushbutton state for setting alarm 
 +int buttonforhour = 0; // pushbutton state for hour 
 +int buttonformin = 0;// pushbutton state for minutes 
 +int buttonforexit = 0; // pushbutton state for exit of set alarm 
 +int activate=0;​ 
 + Time t; 
 + 
 +// Init the DS1302 
 +//pinii de pe placuta 
 + 
 +DS1302 rtc(2, 3, 4); 
 + 
 +void setup() 
 +
 + ​pinMode(pset,​ INPUT); 
 + ​pinMode(phour,​ INPUT); 
 + ​pinMode(pmin,​ INPUT); 
 + ​pinMode(pexit,​ INPUT); 
 + // Set the clock to run-mode, and disable the write protection 
 + ​rtc.halt(false);​ 
 + ​rtc.writeProtect(false);​ 
 + 
 + // Setup LCD to 16x2 characters 
 + ​lcd.begin();​ 
 + 
 +// le putem decomenta daca vrem sa folosim valorile deja existente in DS1302 
 + //​rtc.setDOW(SATURDAY);​ // Set Day-of-Week to FRIDAY 
 + //​rtc.setTime(10,​ 0, 0); // Set the time to 12:00:00 (24hr format) 
 + //​rtc.setDate(11,​ 11, 2017); // Set the date to August 6th, 2010 
 +
 + 
 +void loop() 
 +
 + if (activate == 0) { 
 + 
 +// Display time on the right conrner upper line 
 + ​lcd.setCursor(0,​ 0); 
 + ​lcd.print("​Time:​ "); 
 + ​lcd.setCursor(6,​ 0); 
 + ​lcd.print(rtc.getTimeStr());​ 
 +  
 + // Display abbreviated Day-of-Week in the lower left corner 
 + //​lcd.setCursor(0,​ 1); 
 + //​lcd.print(rtc.getDOWStr(FORMAT_SHORT));​ 
 +  
 + // Display date in the lower right corner 
 + ​lcd.setCursor(0,​ 1); 
 + ​lcd.print("​Date:​ "); 
 + ​lcd.setCursor(6,​ 1); 
 + ​lcd.print(rtc.getDateStr());​ 
 + t = rtc.getTime();​ 
 + Hour = t.hour; 
 + Min = t.min; 
 + ​buttonforset = digitalRead(pset);​ 
 + } // setting button pressed 
 + if (buttonforset == HIGH) { 
 + ​activate =1; 
 + ​lcd.clear();​ } 
 + ​while(activate== 1){ 
 + ​lcd.setCursor(0,​0);​ 
 + ​lcd.print("​Set Alarm"​);​ 
 + ​lcd.setCursor(0,​1);​ 
 + ​lcd.print("​Hour= "); 
 + ​lcd.setCursor(9,​1);​ 
 + ​lcd.print("​Min= "); 
 + ​buttonforhour = digitalRead(phour);​ // set hour for alarm 
 + if (buttonforhour == HIGH){ 
 + ​h++;​ 
 + ​lcd.setCursor(5,​1);​ 
 + ​lcd.print(h);​ 
 + if (h>23){  
 + ​h=0;​ 
 + ​lcd.clear();​ } 
 + ​delay(100);​  
 + } 
 + ​buttonformin = digitalRead(pmin);​ // set minutes for alarm 
 + if (buttonformin == HIGH){ 
 + ​m++;​ 
 + ​lcd.setCursor(13,​1);​ 
 + ​lcd.print(m);​ 
 + if (m>​59){ 
 + m=0;  
 + ​lcd.clear();​} 
 + ​delay(100);​  
 + } 
 + 
 +lcd.setCursor(5,​1);​ 
 + ​lcd.print(h);​ 
 + ​lcd.setCursor(13,​1);​ 
 + ​lcd.print(m);​ 
 + ​buttonforexit = digitalRead(pexit);​ // exit from set alarm mode 
 + if (buttonforexit == HIGH){ 
 + ​activate = 0; 
 + ​lcd.clear();​ 
 +   } 
 + } 
 +  
 + if (Hour== h && Min== m) { 
 + ​tone(6,​400,​300);​} 
 + delay (500); 
 +
 + 
 +</​code>​ 
 + 
 +==REZULTATE== 
 +[[https://​www.youtube.com/​watch?​v=0oWU8FnWFjw|rezultat clip]] 
 + 
 +==CONCLUZII== 
 +A fostun proiect interesant, singurele probleme pe care le-am intampinat au fost cu arduino- programul instalat, avand diferite probleme cu fisierele si cu setarile, dar ciecuitul si codul nu mi-au dat batai de cap.
  
-{{:pm:​prj2021:​avaduva:​blank_diagram.png?​200|}}+==BIBLIOGRAFIE== 
 +[[pm:​prj2021:​avaduva:​ceasalarma|lpdfproiect]]
  
 +https://​github.com/​fdebrabander/​Arduino-LiquidCrystal-I2C-library
 +https://​www.arduino.cc/​reference/​en/​libraries/​ds3231/​
 +https://​howtomechatronics.com/​tutorials/​arduino/​arduino-ds3231-real-time-clock-tutorial/​
  
pm/prj2021/avaduva/ceasalarma.1622503041.txt.gz · Last modified: 2021/06/01 02:17 by roxana.scurtu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0