Touch Screen Calculator

Botez Luca, 334CA

Introducere

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, comunicarea cu senzori digitali prin I2C, gestionarea intreruperilor si optimizarea consumului energetic prin moduri de repaus.

Descriere generală

Proiectul reprezinta un calculator electronic cu ecran tactil, dezvoltat pe platforma Arduino, care combina functionalitatea de baza a unui calculator cu elemente moderne de automatizare si optimizare energetica. Interfata grafica este afisata pe un ecran LCD TFT cu touch screen, permitand utilizatorului sa introduca valori si operatii prin atingere, intr-un mod intuitiv si interactiv.

Un aspect important al proiectului este reglarea automata a luminozitatii ecranului in functie de lumina ambientala, realizata cu ajutorul unui senzor digital de lumina conectat prin interfata I2C. Acest mecanism permite adaptarea vizibilitatii ecranului la conditiile din mediul inconjurator, imbunatatind astfel experienta de utilizare.

Pentru a reduce consumul de energie, sistemul este prevazut cu un mod de repaus (sleep mode) care se activeaza automat dupa o perioada de inactivitate. Trezirea din acest mod se face printr-o intrerupere externa, generata de apasarea ecranului. Aceasta abordare ajuta la prelungirea duratei de functionare, proiectul fiind alimentat de o baterie externa.

Schema bloc:

Componente Hardware:

  • Arduino UNO ATMEGA328P
  • Shield pentru Arduino LCD Rosu de 2.4'' cu Touchscreen
  • Senzor de Intensitate a luminii TSL2561
  • breadboard
  • baterie
  • fire

Hardware Design

Functionalitati implementate:

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

2. Reglare automata a modului de afisare in functie de lumina ambientala

Pentru o experienta adaptabila, sistemul include un senzor digital de lumina TSL2561, conectat la Arduino prin magistrala I2C (pinii A4 - SDA si A5 - SCL). Senzorul este alimentat de la pinul 5V si are un consum energetic foarte redus.

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:

Bill of Materials:

Nume componenta Link Cantitate Pret unitar (RON)
Arduino UNO Link 1 34,99
LCD TFT Screen Link 1 39,99
Senzor de Intensitate a luminii Link 1 22,99
Breadboard HQ Link 2 4,56
Fire tata-tata Link 1 7,98
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

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.

Rezultate Obţinute

Video: SOON!

Download

Toate fisierele se pot gasi aici: Link.

Bibliografie/Resurse

pm/prj2025/vstoica/lucabotez.txt · Last modified: 2025/05/30 05:40 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