Differences

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

Link to this comparison view

pm:prj2025:czlatea:andrei.ignat [2025/05/18 12:44]
andrei.ignat [Descriere generală]
pm:prj2025:czlatea:andrei.ignat [2025/05/25 19:24] (current)
andrei.ignat [Rezultate Obţinute]
Line 59: Line 59:
  
 <note tip> <note tip>
 +
 Componentele pentru proiect: Componentele pentru proiect:
   - placuta Arduino Uno   - placuta Arduino Uno
Line 66: Line 67:
   - un breadboard   - un breadboard
  
-Descrierea componentelor:​+Arduino UNO
  
-1. Plăcuța Arduino Uno+   1) 5V: Alimentare pentru componente externe, cum ar fi Display-ul TFT. 
 +   2) GND: Comun pentru toate componentele,​ asigurând un potențial de referință comun. 
 +   3) D2: Utilizat pentru a citi semnalul de la primul buton (Pushbutton). 
 +   4) D7: Utilizat pentru a citi semnalul de la al doilea buton (Pushbutton). 
 +   5) D8: Conectat la pinul A0/DC al Display-ului TFT pentru a controla modul de date/​comandă. 
 +   6) D9: Conectat la pinul RESET al Display-ului TFT pentru a reseta display-ul. 
 +   7) D10: Conectat la pinul CS al Display-ului TFT pentru a selecta dispozitivul în comunicația SPI. 
 +   8) D11: Utilizat pentru ​transmite date (MOSI) către Display-ul TFT. 
 +   9) D13: Utilizat pentru a transmite semnale de ceas (SCK) către Display-ul TFT.
        
-   Rol: Este creierul proiectuluiEste un microcontroler programabil care citește intrări (ex: de la butoane) și controlează ieșiri (exLED-uri, motoare).+Display TFT LCD 1.44" 128x128  
 + 
 +   1) VCCAlimentare ​de la Arduino (5V)
 +   2) GND: Conectat la GND-ul Arduino. 
 +   3) CS: Conectat la D10 pe Arduino pentru a selecta display-ul în comunicația SPI. 
 +   4) RESET: Conectat la D9 pe Arduino pentru a permite resetarea display-ului. 
 +   5) A0/DC: Conectat la D8 pe Arduino pentru a comuta între modul de date și modul de comandă
 +   6) SDA/MOSIConectat la D11 pe Arduino pentru a primi date. 
 +   7SCK/CLK: Conectat la D13 pe Arduino pentru a primi semnale de ceas.
        
-2. Fire mama-mama ​+Pushbutton 
 +   
 +   1) Pin 3 (out): Conectat la GND și la D2 pe Arduino pentru a citi starea butonului. 
 +   2) Pin 1 (in): Conectat la D2 pe Arduino pentru a citi starea butonului.
        
-   Rol: Sunt folosite pentru a face conexiunile între componente și placa de dezvoltare (Arduino ↔ Breadboard ↔ Componente).+Pushbutton
        
-3. 2 rezistențe de 10 ohm +   1) Pin (out)Conectat la GND și la D7 pe Arduino ​pentru ​a citi starea butonului
-  +   2) Pin 1 (in): Conectat la D7 pe Arduino pentru a citi starea butonului.
-   RolLimitează curentul care trece printr-un circuit. La 10 ohmi sunt destul de mici și pot fi folosite în testări simple sau pentru ​protecție minimă+
-    +
-42 pushbutton-uri+
  
-   Rol: Sunt folosite ca dispozitive de intrare. Când apeși pe ele, trimit un semnal digital (HIGH/LOW) către Arduino. 
-    
-5. Breadboard (placă de test) 
- 
-   Rol: Permite realizarea de conexiuni temporare între componente fără a fi nevoie de lipire. ​   
  
  
Line 96: Line 108:
  
 ===== Software Design ===== ===== Software Design =====
 +
 +
  
  
 <note tip> <note tip>
-Descrierea codului aplicaţiei ​(firmware): +Bibliotecile folosite: 
-  * mediu de dezvoltare ​(if any) (e.gAVR StudioCodeVisionAVR+ 
-  * librării şsurse 3rd-party ​(e.gProcyon AVRlib+1. <​SPI.h>​ 
-  * algoritmi şstructuri pe care plănuiţi să le implementaţi +Motivație:​ 
-  ​* ​(etapa 3surse şfuncţii implementate+Biblioteca SPI.h este necesară deoarece ecranul TFT utilizează protocolul de comunicare SPI (Serial Peripheral Interfacepentru transmiterea datelor. 
 + 
 +Rol
 +Asigură comunicarea rapidă și eficientă între microcontroller (de exemplu, Arduino) și display. 
 + 
 +2. <​Adafruit_GFX.h>​ 
 +Motivație:​ 
 +Biblioteca Adafruit_GFX oferă o interfață grafică generală pentru desene, texte, forme și linii, compatibilă cu o gamă largă de display-uri. 
 + 
 +Rol: 
 +Oferă funcții pentru desenarea de linii, dreptunghiuri,​ texte etc. 
 +Abstractizează partea grafică, permițând o codare simplificată și portabilă. 
 + 
 +Exemplu de utilizare:​ 
 +drawRect, drawLine, setCursor, print, setTextColor,​ etc. 
 + 
 +3. <​Adafruit_ST7735.h>​ 
 +Motivație:​ 
 +Această bibliotecă este specifică pentru controlul display-urilor TFT care folosesc driverul ST7735, foarte popular în proiectele cu Arduino. 
 + 
 +Rol: 
 +Inițializează ecranul TFT. 
 +Controlează afișajul color și dimensiunile acestuia. 
 +Se integrează perfect cu Adafruit_GFX pentru redarea conținutului grafic. 
 + 
 +void drawStartScreen() 
 +Ce face: 
 +Afișează pe ecran meniul de start, unde utilizatorul poate alege între „Vs Bot” și „Vs Player”. 
 + 
 +Detalii: 
 + 
 +Evidențiază opțiunea selectată cu un chenar roșu. 
 +Afișează instrucțiuni pentru butoane: Select = schimbă opțiunea, OK = start joc. 
 + 
 +void drawWinnerScreen(int winner) 
 +Ce face: 
 +Afișează un ecran de final cu rezultatul jocului: „X câștigă”,​ „O câștigă” sau „Remiză”. 
 + 
 +Detalii: 
 +Schimbă culoarea textului în verde pentru câștigător. 
 +Afișează instrucțiuni pentru a relua jocul. 
 + 
 +void drawBoard() 
 +Ce face: 
 +Desenează tabla de joc (3x3) și plasează X sau O în funcție de mutările făcute. 
 + 
 +Detalii: 
 +Desenează liniile care împart ecranul în 9 pătrate. 
 +Evidențiază pătratul selectat cu un chenar galben. 
 +Desenează „X” cu roșu și „O” cu albastru în pătratele ocupate. 
 + 
 +int checkWinner() 
 +Ce face: 
 +Verifică dacă există un câștigător sau remiză. 
 + 
 +Returnează:​ 
 +1 → dacă X a câștigat 
 +2 → dacă O a câștigat 
 +3 → dacă remiză (tabla e plină) 
 +0 → jocul continuă 
 + 
 +void botMove() 
 +Ce face: 
 +Realizează o mutare automată pentru bot (jucătorul O). 
 + 
 +Strategie:​ 
 +Verifică dacă botul poate câștiga → joacă acolo. 
 +Dacă nuverifică dacă trebuie să blocheze X → blochează. 
 +Dacă nu, joacă pe poziții preferate (mijloc, colțuri etc). 
 +Include: feedback sonor și redesenarea tablei. 
 + 
 +void resetGame() 
 +Ce face: 
 +Resetează toate variabilele pentru a începe un nou joc. 
 + 
 +Detalii: 
 +Șterge tabla (board[]), resetează jucătorul șindicatorii ​(gameOver, winner). 
 +Apelează drawBoard() pentru a afișa o tablă goală. 
 + 
 +void setup(
 +Ce face: 
 +Este apelată o singură dată la pornirea plăcii Arduino. 
 + 
 +Inițializează:​ 
 +Pinurile pentru butoane șbuzzere. 
 +Ecranul TFT (rotire, modul de inițializare). 
 +Afișează ecranul de start (drawStartScreen()). 
 + 
 +void loop() 
 +Ce face: 
 +Este funcția ​care rulează în buclă continuu șgestionează logica principală a jocului. 
 + 
 +Structură logică: 
 +Dacă jocul nu a început: permite selectarea modului de joc. 
 +Dacă jocul s-a terminat: permite revenirea la ecranul de start. 
 +Dacă jocul e activ: 
 +Citire buton SELECT → mută cursorul pe tablă. 
 +Citire buton OK → plasează X sau O. 
 +Verifică dacă există câștigător sau remiză. 
 +Dacă e modul Vs Bot și e rândul lui → apelează botMove()
 + 
 + 
 +În proiectul Tic-Tac-Toe cu ecran TFT șbutoane, optimizările au fost realizate pentru a îmbunătăți:​ 
 +-Viteza de reacție și claritatea interfeței 
 +-Ușurința în utilizare 
 +-Citirea clară a codului 
 +-Reducerea resurselor folosite (memorie, sunete inutile etc. 
 + 
 + 
 </​note>​ </​note>​
  
Line 109: Line 232:
  
 <note tip> <note tip>
-Care au fost rezultatele ​obţinute în urma realizării proiectului vostru+Rezultate ​obținute in proiect
-https://​youtube.com/​shorts/​gUEhmS1PZkU?feature=share+https://​youtube.com/​shorts/​mDymTbDc0fk?si=P2lqlXAzB6K4TqPN
 </​note>​ </​note>​
  
-===== Concluzii ===== 
- 
-===== Download ===== 
  
 <note warning> <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ă ;-). +Schelet ​de cod 
- +{{:pm:prj2025:czlatea:pm1.zip|}}
-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>​ </​note>​
  
pm/prj2025/czlatea/andrei.ignat.1747561450.txt.gz · Last modified: 2025/05/18 12:44 by andrei.ignat
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