Differences

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

Link to this comparison view

pm:prj2024:ccontasel:alexandru.neacsu02 [2024/05/06 11:48]
alexandru.neacsu02 [Hardware Design]
pm:prj2024:ccontasel:alexandru.neacsu02 [2024/05/27 14:05] (current)
alexandru.neacsu02 [Download]
Line 15: Line 15:
   *Ventilator de birou, cu un potentiometru ce mareste sau reduce viteza.   *Ventilator de birou, cu un potentiometru ce mareste sau reduce viteza.
   *Wireless Charger   *Wireless Charger
-{{ https://​ocw.cs.pub.ro/​courses/​_media/​pm/prj2024/ccontasel/schema-multipurpose.jpg.jpg |Schema}}+{{:pm:prj2024:ccontasel:schema-multipurpose.jpg?600|Schema}}
 </​note>​ </​note>​
  
Line 22: Line 22:
 <note tip> <note tip>
 Componente: Componente:
-  *Arduino Uno x1 +  *Arduino Uno 16U2 x1 
-  *Potentiometru x2 +  *Breadboard MB102 x1 
-  *Ecran LCD x1 +  *Potentiometru ​RV09 x2 
-  *Buzzer x1+  *Ecran LCD 1602 x1 
 +  *Buzzer ​3-24V 100dB x1
   *Button x10   *Button x10
-  *Modul RTC x1+  ​*Modul incarcare acumulator Li TP4056 TypeC x1 
 +  ​*Modul RTC DS3231 I2C x1 
 +  *Timer IC NE555P, NE555 x1
   *QI wireless charging module x1   *QI wireless charging module x1
   *Table fan x1   *Table fan x1
-  *Leds+  *LED RGB 5mm 4 pini x2
 </​note>​ </​note>​
 +{{:​pm:​prj2024:​ccontasel:​placa.png?​600|Schema}}
 +{{:​pm:​prj2024:​ccontasel:​electrica.png?​600|Schema}}
 +<note tip>
 +Mai trebuia un ventilator de 5V
 +</​note>​
 +{{:​pm:​prj2024:​ccontasel:​multi-purpose-hub.jpg?​600|Schema}}
 +
  
 ===== Software Design ===== ===== Software Design =====
Line 38: Line 48:
 <note tip> <note tip>
 Descrierea codului aplicaţiei (firmware): Descrierea codului aplicaţiei (firmware):
-  * mediu de dezvoltare ​(if any) (e.g. AVR Studio, CodeVisionAVR) +  * mediu de dezvoltare: ArduinoIDE 
-  * librării şi surse 3rd-party (e.gProcyon AVRlib+  * librării şi surse 3rd-party: RTClib.h, LiquidCrystal_I2C.h,​ Wire.h 
-  ​* algoritmi şi structuri pe care plănuiţsă le implementaţi +</​note>​ 
-  ​(etapa 3surse şfuncţii implementate+ 
 +<note code> 
 +  byte hour; 
 +  byte minute; 
 +  byte second; 
 +  byte day; 
 +  byte month; 
 +  int year; 
 + 
 +Variabilele folosite pentru date 
 +</​note>​ 
 + 
 +<note code> 
 +  DS3231 rtc; 
 +  LiquidCrystal_I2C lcd(0x27, 16, 2); 
 + 
 +Initializarea rtc si lcd 
 +</​note>​ 
 + 
 +<note code> 
 +  void setup() { 
 +    Serial.begin(9600);​ 
 +    // Inițializează comunicarea I2C 
 +    Wire.begin(); 
 +  ​ 
 +    // Inițializează LCD 
 +    lcd.begin(16,​ 2); 
 +    lcd.init();​ 
 +    lcd.backlight();​ 
 +    lcd.clear();​ 
 +    rtc.begin();​ 
 +  } 
 +   
 +Functia de setup unde initializez comunicarea I2C si dau begin la lcd si rtc 
 +</​note>​ 
 + 
 +<note code> 
 +  void loop() { 
 +  // Obține data șora curentă de la RTC 
 +  ​DateTime now = rtc.now()
 +  second = now.second();​ 
 +  minute = now.minute();​ 
 +  hour = now.hour();​ 
 +  day = now.day();​ 
 +  month = now.month();​ 
 +  year = now.year();​ 
 + 
 +Salvez anul, luna, ziua, ora, minutul si secunda in variabile cu ajutorul modulului RTC 
 + 
 +  second += 48;  // Corecție pentru secundă 
 +  if (second >= 60) { 
 +    second -= 60; 
 +    minute += 1; 
 +  } 
 +   
 +  minute += 33;  // Corecție pentru minut 
 +  if (minute >= 60) { 
 +    minute -= 60; 
 +    hour += 1; 
 +  } 
 +   
 +  hour += 12;  // Corecție pentru oră 
 +  if (hour >= 24) { 
 +    hour -= 24; 
 +  } 
 +  int daysInMonth;​ 
 +  if (month == 2) { 
 +    // Verifică dacă anul este bisect 
 +    if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) { 
 +      daysInMonth = 29; 
 +    } else { 
 +      daysInMonth = 28; 
 +    } 
 +  } else if (month == 4 || month == 6 || month == 9 || month == 11) { 
 +    daysInMonth = 30; 
 +  } else { 
 +    daysInMonth = 31; 
 +  } 
 +   
 +  if (day > daysInMonth) { 
 +    day = 1; 
 +    month += 1; 
 +  } 
 +   
 +  if (month > 12) { 
 +    month = 1; 
 +    year += 1; 
 +  } 
 +   
 +Incerc sa corectez datele, apoi fac algoritmul pentru data si timp 
 +</​note>​ 
 + 
 +<note code> 
 +  // Afișează data șora pe LCD 
 +  lcd.clear();​ 
 +  lcd.setCursor(0,​ 0); 
 +  lcd.print("​Data:​ "); 
 +  lcd.print(day,​ DEC); 
 +  lcd.print('/'​);​ 
 +  lcd.print(month,​ DEC); 
 +  lcd.print('/'​);​ 
 +  lcd.print(year,​ DEC); 
 +   
 +  lcd.setCursor(0,​ 1); 
 +  lcd.print("​Ora:​ "); 
 +  lcd.print(hour,​ DEC); 
 +  lcd.print(':'​);​ 
 +  if (minute< 10) { 
 +   ​lcd.print('​0'​); ​ // Adaugă un 0 înaintea minutului dacă e mai mic de 10 
 +  } 
 +  lcd.print(minute,​ DEC); 
 +  lcd.print(':'​);​ 
 +  if (second< 10) { 
 +   ​lcd.print('​0'​); ​ // Adaugă un 0 înaintea secundei dacă e mai mică de 10 
 +  } 
 +  lcd.print(second,​ DEC); 
 + 
 +  //​Așteaptă un pic înainte de a actualiza din nou 
 +  delay(1000);​ 
 +  } 
 + 
 +Afisez pe ecranul lcd data si ora
 </​note>​ </​note>​
  
Line 47: Line 178:
  
 <note tip> <note tip>
-Optimizarea spatiului ​de lucru+Un spatiu ​de lucru mai curat si mai aerisit, mai multe porturi usb libere pentru alte gadget-uri!
 </​note>​ </​note>​
  
 ===== Concluzii ===== ===== Concluzii =====
 +<​note>​ 
 +Acest proiect nu doar că mi-a aprofundat înțelegerea programării Arduino și a integrării hardware, dar a evidențiat și importanța organizării și modularității codului. Îmbunătățirile viitoare ar putea include un mic meniu unde sa selectezi functionalitati pentru ceas, un modul de incarcare mai puternic si un ventilator mai puternic. 
 +</​note>​
 ===== Download ===== ===== Download =====
  
-<note warning>​ +Cod sursă, biblioteci folosite si README ​(.zip):
-O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului:​ sursescheme, 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**. +
-</​note>​+
  
 +{{:​pm:​prj2024:​ccontasel:​MPH_Clock.zip|}}
 ===== Jurnal ===== ===== Jurnal =====
  
pm/prj2024/ccontasel/alexandru.neacsu02.1714985281.txt.gz · Last modified: 2024/05/06 11:48 by alexandru.neacsu02
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