Differences

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

Link to this comparison view

pm:prj2025:vstoica:lucabotez [2025/05/18 18:12]
luca.botez [Hardware Design]
pm:prj2025:vstoica:lucabotez [2025/05/30 05:40] (current)
luca.botez [Introducere]
Line 5: Line 5:
 Proiectul consta in implementarea un calculator touch screen care permite efectuarea operatiilor aritmetice de baza. Acesta ajusteaza automat luminozitatea ecranului in functie de lumina ambientala si intra in modul sleep dupa o perioada de inactivitate,​ fiind reactivat prin interactiunea cu el. Proiectul consta in implementarea un calculator touch screen care permite efectuarea operatiilor aritmetice de baza. Acesta ajusteaza automat luminozitatea ecranului in functie de lumina ambientala si intra in modul sleep dupa o perioada de inactivitate,​ fiind reactivat prin interactiunea cu el.
  
-Scopul proiectului este de a integra concepte esentiale din domeniul sistemelor embedded, precum utilizarea ecranelor TFT cu interfata SPI, comunicarea cu senzori digitali prin I2C, gestionarea intreruperilor si optimizarea consumului energetic prin moduri de repaus.+Scopul proiectului este de a integra concepte esentiale din domeniul sistemelor embedded, precum utilizarea ecranelor TFT, comunicarea cu senzori digitali prin I2C, gestionarea intreruperilor si optimizarea consumului energetic prin moduri de repaus.
 ===== Descriere generală ===== ===== Descriere generală =====
  
Line 32: Line 32:
 __1. Calculator touch-screen cu patru operatii aritmetice de baza__ __1. Calculator touch-screen cu patru operatii aritmetice de baza__
  
-Proiectul implementeaza un calculator functional, cu interfata grafica pe un ecran TFT LCD de 2.4” cu touch, conectat direct la Arduino UNO prin SPI. Touchscreen-ul utilizeaza pini analogici (A1, A2) si digitali (D6, D7) pentru detectia coordonatelor X/Y.+Proiectul implementeaza un calculator functional, cu interfata grafica pe un ecran TFT LCD de 2.4” cu touch, conectat direct la Arduino UNO printr-o interfata paralela pe 8 biti. Touchscreen-ul utilizeaza pini analogici (A1, A2) si digitali (D6, D7) pentru detectia coordonatelor X/Y.
  
 Partea hardware permite: afisarea tastaturii virtuale pe ecran, cu simboluri tactile precise; citirea atingerilor prin touchscreen rezistiv conectat direct la Arduino si procesarea comenzilor complet integrata, fara componente externe fizice. Partea hardware permite: afisarea tastaturii virtuale pe ecran, cu simboluri tactile precise; citirea atingerilor prin touchscreen rezistiv conectat direct la Arduino si procesarea comenzilor complet integrata, fara componente externe fizice.
- 
  
 __2. Reglare automata a modului de afisare in functie de lumina ambientala__ __2. Reglare automata a modului de afisare in functie de lumina ambientala__
Line 42: Line 41:
  
 Partea hardware asigura: citirea valorii lux din mediul inconjurator cu rezolutie ridicata; conexiune I2C stabila si eficienta, fara a ocupa resurse suplimentare si posibilitatea comutarii dinamice a temei vizuale in functie de lumina reala. Partea hardware asigura: citirea valorii lux din mediul inconjurator cu rezolutie ridicata; conexiune I2C stabila si eficienta, fara a ocupa resurse suplimentare si posibilitatea comutarii dinamice a temei vizuale in functie de lumina reala.
- 
  
 **Schema electrica:​** **Schema electrica:​**
Line 57: Line 55:
 | Fire tata-tata ​   | [[https://​www.optimusdigital.ro/​ro/​fire-fire-mufate/​890-set-fire-tata-tata-40p-30-cm.html?​search_query=Fire+Colorate+Tata-Tata+%2840p%2C+30+cm%29&​results=10|Link]] ​    | 1                 | 7,98 | | Fire tata-tata ​   | [[https://​www.optimusdigital.ro/​ro/​fire-fire-mufate/​890-set-fire-tata-tata-40p-30-cm.html?​search_query=Fire+Colorate+Tata-Tata+%2840p%2C+30+cm%29&​results=10|Link]] ​    | 1                 | 7,98 |
 ^ Pret total: ​                                            ^^^ 110,51 ^  ^ Pret total: ​                                            ^^^ 110,51 ^ 
 +
 +**Pini Arduino utilizati:​**
 +^ Componenta ^ Pini Arduino ^ Interfata ^ Functie principala ^
 +| LCD TFT Touch-Screen | D2-D9 | Paralela 8 biti | Linii de date pentru ecran |
 +| LCD TFT Touch-Screen | D10 | Digital | Reset hardware pentru ecran |
 +| LCD TFT Touch-Screen | A0 | Digital | Semnal de citire (RD) |
 +| LCD TFT Touch-Screen | A1 | Digital | Semnal de scriere (WR) |
 +| LCD TFT Touch-Screen | A2 | Digital | Comanda / Date (CD) |
 +| LCD TFT Touch-Screen | A3 | Digital | Chip select (CS) |
 +| Touchscreen - XP | D6 | Digital | Coordonata X+ (linie de intrare touch) |
 +| Touchscreen - XM | A2 | Analog | Coordonata X− (linie de masurare) |
 +| Touchscreen - YP | A1 | Analog | Coordonata Y+ (linie de masurare) |
 +| Touchscreen - YM | D7 | Digital | Coordonata Y− (linie de intrare touch) |
 +| TSL2561 Light Sensor | A4 (SDA) | I2C | Linie de date pentru comunicare |
 +| TSL2561 Light Sensor | A5 (SCL) | I2C | Linie de ceas pentru sincronizare |
 +| Alimentare LCD si senzor | 5V, GND | — | Alimentare comuna pentru ecran si senzor |
 +
 ===== Software Design ===== ===== Software Design =====
 +
 +=== 1. Stadiul actual al implementarii software ===
 +
 +Proiectul este finalizat si include urmatoarele componente functionale:​
 +  * Afisaj pe ecran TFT 2.4" controlat prin biblioteca SPFD5408_Adafruit_TFTLCD.
 +  * Interfata completa touch cu butoane desenate grafic si interpretate prin coordonate.
 +  * Operatori aritmetici: adunare, scadere, inmultire, impartire.
 +  * Gestionare corecta a operatiilor multiple in lant (ex: 2 + 2 + 3).
 +  * Senzor de lumina TSL2561 pentru comutare automata intre dark mode si light mode.
 +  * Mod Sleep activat dupa 30 secunde de inactivitate,​ cu revenire prin atingere.
 +
 +=== 2. Motivarea alegerii bibliotecilor ===
 +
 +Bibliotecile utilizate sunt:
 +
 +  * **SPFD5408_Adafruit_GFX / TFTLCD / TouchScreen** - control complet asupra graficii si inputului de la touchscreen.
 +  * **Adafruit_TSL2561_U** - biblioteca oficiala Adafruit pentru senzorul de lumina TSL2561.
 +
 +Acestea sunt compatibile cu platforma Arduino UNO si foarte bine documentate.
 +
 +=== 3. Elementul de noutate al proiectului ===
 +
 +  * Comutare automata intre teme Light/Dark in functie de lumina ambientala.
 +  * Gestionare avansata a starii de Sleep cu ecran negru si revenire prin touch.
 +  * Tratare impartiri la 0, conversie la float si trunchiere automata a zecimalelor.
 +  * Limitarea afisarii la maxim 9 caractere pentru a evita overflow pe ecran.
 +
 +=== 4. Justificarea utilizarii functionalitatilor din laborator ===
 +
 +  * Comunicare pe interfata I2C cu senzorul de intensitate a luminii TSL2561.
 +  * Timer hardware pentru numararea secundelor trecute de la ultima interactiune cu ecranul fara ca sistemul sa isi piarda responsiveness-ul.
 +  * Intreruperi (ISR) generate de timer la fiecare secunda pentru a incrementa timpul scurs.
 +  * Afisare la interfata USART a operatiilor si cifrelor alese pentru debugging.
 +
 +=== 5. Scheletul proiectului si validarea functionalitatilor ===
 +
 +**Structura:​**
 +  * `setup()` - initializeaza senzorul, ecranul, timerul.
 +  * `loop()` - logica principala: mod lumina, detectare touch, operatii, sleep.
 +  * `wait_touch()` - citeste touch si reseteaza timerul.
 +  * `detect_buttons()` - identifica butonul apasat.
 +  * `handle_operation()` - proceseaza operatiile aritmetice.
 +  * `display_result()` - afiseaza input sau rezultat.
 +  * `enter_sleep_mode()` - afiseaza "​SLEEP"​ si asteapta atingere.
 +
 +**Validare:​**
 +  * Testare butoane.
 +  * Monitorizare valori lux prin `Serial.println()`.
 +  * Testarea ISR pentru inactivitate.
 +  * Verificare overflow caractere pe ecran.
 +
 +=== 6. Calibrarea senzorului de lumina ===
 +
 +  * Prag de 5 lux stabilit experimental.
 +  * Verificari cu lanterna si lumina naturala/​artificiala.
 +  * Afisare valoare lux prin Serial pentru testare.
 +  * Comutare vizuala confirmata in ambele sensuri.
 +
 +=== 7. Optimizari realizate ===
 +
 +  * Redesenare a interfetei doar la schimbare de mod.
 +  * Mod Sleep cu revenire eleganta si restaurare afisaj.
 +  * Trunchiere zecimale si eliminare zerouri inutile.
 +  * Logica non-blocanta pentru citirea atingerii.
 +  * Separare clara intre interfata, logica si input.
  
  
-<note tip> 
-Descrierea codului aplicaţiei (firmware): 
-  * mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) 
-  * 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 ===== ===== Rezultate Obţinute =====
  
-<note tip> +{{:​pm:​prj2025:​vstoica:​dark_mode_calc.jpeg?​294|}} 
-Care au fost rezultatele obţinute în urma realizării proiectului vostru+{{:​pm:​prj2025:​vstoica:​light_mode_calc.jpeg?​300|}} 
-</​note>​+ 
 +Video: SOON!
  
-===== Concluzii ===== 
  
 ===== Download ===== ===== Download =====
  
-<note warning> 
-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**. +Toate fisierele ​se pot gasi aici[[https://github.com/​lucabotez/​touch-screen-calculator|Link]].
-</​note>​+
  
-===== Jurnal ​=====+===== Bibliografie/​Resurse ​===== 
 + 
 +[[https://​ww1.microchip.com/​downloads/​en/​DeviceDoc/​Atmel-7810-Automotive-Microcontrollers-ATmega328P_Datasheet.pdf|Arduino UNO]] 
 + 
 +[[https://​github.com/​JoaoLopesF/​SPFD5408|TFT LCD Display]] 
 + 
 +[[https://​www.kicad.org/​|KiCad EDA]]
  
-<note tip> 
-Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului. 
-</​note>​ 
  
-===== Bibliografie/​Resurse ===== 
  
-<​note>​ 
-Listă cu documente, datasheet-uri,​ resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. 
-</​note>​ 
  
 <​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>​
  
pm/prj2025/vstoica/lucabotez.1747581159.txt.gz · Last modified: 2025/05/18 18:12 by luca.botez
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