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 09:23]
andrei.ignat [Descriere generală]
pm:prj2025:czlatea:andrei.ignat [2025/05/25 19:24] (current)
andrei.ignat [Rezultate Obţinute]
Line 30: Line 30:
 O schemă bloc cu toate modulele proiectului vostru, atât software cât şi hardware însoţită de o descriere a acestora precum şi a modului în care interacţionează. O schemă bloc cu toate modulele proiectului vostru, atât software cât şi hardware însoţită de o descriere a acestora precum şi a modului în care interacţionează.
  
-Exemplu ​de schemă blochttps://app.cirkitdesigner.com/​project/​c9b9278d-fca2-4413-96c0-09f02bc888e8+Descrierea componentelor:​ 
 + 
 +1. Plăcuța Arduino Uno 
 +    
 +   Rol: Este creierul proiectului. Este un microcontroler programabil care citește intrări (ex: de la butoane) și controlează ieșiri (exLED-uri, motoare). 
 +    
 +2. Fire mama-mama  
 +    
 +   RolSunt folosite pentru a face conexiunile între componente și placa de dezvoltare (Arduino ↔ Breadboard ↔ Componente). 
 +    
 +32 rezistențe de 10 ohm 
 +  
 +   Rol: Limitează 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ă. 
 +    
 +4. 2 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. ​   
 + 
 +Exemplu de schemă bloc: 
 +{{:​pm:​prj2025:​czlatea:​schema_bloc.png?​200|}}
 </​note>​ </​note>​
  
Line 36: Line 59:
  
 <note tip> <note tip>
-Aici puneţi tot ce ţine de hardware design+ 
-  ​* listă de piese +Componentele pentru proiect
-  ​* scheme electrice (se pot lua şi de pe Internet şi din datasheet-urie.ghttp://www.captain.at/​electronic-atmega16-mmc-schematic.png+  ​- placuta Arduino Uno 
-  * diagrame ​de semnal ​ +  ​- fire mama-mama 
-  ​* rezultatele simulării+  - 2 rezistente ​de 10 ohm 
 +  ​2 pushbutton 
 +  - un breadboard 
 + 
 +Arduino UNO 
 + 
 +   1) 5V: Alimentare pentru componente externecum ar fi Display-ul TFT. 
 +   2) GND: Comun pentru toate componentele,​ asigurând un potențial de referință comun. 
 +   3) D2Utilizat 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 a transmite date (MOSI) către Display-ul TFT. 
 +   9) D13: Utilizat pentru a transmite semnale de ceas (SCK) către Display-ul TFT. 
 +    
 +Display TFT LCD 1.44" 128x128  
 + 
 +   1VCC: Alimentare 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/MOSI: Conectat la D11 pe Arduino pentru a primi date. 
 +   7) SCK/CLK: Conectat la D13 pe Arduino pentru a primi semnale de ceas. 
 +    
 +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. 
 +    
 +Pushbutton 
 +    
 +   1) Pin 3 (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. 
 + 
 + 
 + 
 +Schema electrica:​ 
 + 
 +{{:​pm:​prj2025:​czlatea:​placa_arduino.png?​200|}} 
 </​note>​ </​note>​
  
 ===== 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 57: 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/​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.1747549392.txt.gz · Last modified: 2025/05/18 09:23 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