Differences

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

Link to this comparison view

pm:prj2024:alucaci:diana.stefan0106 [2024/05/23 13:50]
diana.stefan0106 [Software Design]
pm:prj2024:alucaci:diana.stefan0106 [2024/05/23 17:37] (current)
diana.stefan0106 [Download]
Line 34: Line 34:
  
 ===== Hardware Design ===== ===== Hardware Design =====
- 
-Aici este ceea ce am reusit sa leg, pana acum (16.05.2024):​ 
- 
-{{:​pm:​prj2024:​alucaci:​whatsapp_image_2024-05-17_at_00.16.30.jpeg?​200|}} 
  
 <note tip> <note tip>
Line 51: Line 47:
 | Rezistenta 330  | 1    | | Rezistenta 330  | 1    |
 | Rezistenta 220  | 2    | | Rezistenta 220  | 2    |
 +| Breadboard 830 puncte ​ | 1    |
  
 </​note>​ </​note>​
Line 56: Line 53:
 === Schema electrica === === Schema electrica ===
  
-=== Design circuit ===+{{ :​pm:​prj2024:​alucaci:​poza.jpeg?​700 |}}
  
 ===== Software Design ===== ===== Software Design =====
  
 <note tip> <note tip>
-Mediu de dezvoltare: Arduino IDE+Mediu de dezvoltare: Arduino IDE \\
 Biblioteci utilizate: TFT.h SPI.h Biblioteci utilizate: TFT.h SPI.h
 </​note>​ </​note>​
 +
 +=== Conexiuni Pin ===
 +
 +  * Ecran TFT
 +
 + -> CS (Chip Select): Pin 10 \\
 + -> DC (Data/​Command):​ Pin 9 \\
 + -> RST (Reset): Pin 12 \\
 + -> Joystick
 + -> VRX (X-axa): A0 \\
 + -> VRY (Y-axa): A1 \\
 + -> SW (Buton): Pin 7 \\
 +  * Butoane
 + -> Buton roșu: Pin 3 \\
 + -> Buton albastru: Pin 2 \\
 +  * LED-uri
 + -> LED roșu: Pin 4 \\
 + -> LED albastru: Pin 5 \\
 +
 +=== Constante și Variabile ===
 +  * Culori
 +Diverse culori sunt definite pentru confort.
 +  * Praguri
 +Valori analogice pentru detectarea mișcării joystick-ului.
 +  * Dimensiuni
 +Lățimea și înălțimea ecranului.
 +  * Câmp de mine
 +O grilă de 8x10 cu 10 mine.
 +  * Poziție
 +Poziția curentă a cursorului.
 +
 +==== Explicația Codului ====
 +
 +=== Setup ===
 + -> Funcția setup inițializează ecranul TFT, setează modurile pin pentru butoane și LED-uri și afișează meniul de start.
 +=== Loop === 
 + -> Funcția loop conține logica principală a jocului: \\
 + -> Verifică condiția de câștig. \\
 + -> Citește starea butoanelor și a joystick-ului. \\
 + -> Dacă jocul nu a început, verifică dacă butonul de start este apăsat. \\
 + -> Dacă jocul este în desfășurare:​ \\
 + -> Gestionează plasarea stegulețelor. \\
 + -> Gestionează dezvăluirea celulelor. \\
 + -> Gestionează mișcarea cursorului. \\
 +
 +=== Alte funcții === 
 +  * initializeminefield()
 + -> Inițializează câmpul de mine cu celule goale.
 +  * placeMines()
 + -> Plasează aleatoriu mine pe câmpul de mine.
 +  * calculateNumbers()
 + -> Calculează numerele care indică numărul de mine adiacente.
 +  * printminefield()
 + -> Afișează câmpul de mine pe monitorul serial.
 +  * displayminefield()
 + -> Afișează câmpul de mine pe ecranul TFT.
 +  * drawBomb()
 + -> Desenează o bombă pe ecranul TFT.
 +  * drawFlag()
 + -> Desenează un steguleț pe ecranul TFT.
 +  * emptySpace()
 + -> Dezvăluie toate spațiile goale conectate.
 +  * lose()
 + -> Afișează mesajul de pierdere și aprinde LED-ul roșu.
 +  * win()
 + -> Afișează mesajul de câștig și aprinde LED-ul albastru.
 +  * revealCell()
 + -> Dezvăluie o celulă și verifică pentru mine.
 +  * displayGrid()
 + -> Desenează grila pe ecranul TFT.
 +  * move()
 + -> Mișcă cursorul pe baza intrării de la joystick.
 +  * draw_menu()
 + -> Afișează meniul de start.
  
 <note tip> <note tip>
-Descrierea codului aplicaţiei (firmware):​ +Jocul afișează "YOU LOST" șaprinde LED-ul roșu dacă o mină este dezvăluită\\ 
-  * mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) +Jocul afișează "YOU WON" șaprinde LED-ul albastru dacă toate celulele ​care nu sunt mine sunt dezvăluite.
-  * librării şsurse 3rd-party (e.g. Procyon AVRlib) +
-  * algoritmi şstructuri pe care plănuiţi să le implementaţi +
-  * (etapa 3) surse şi funcţii implementate+
 </​note>​ </​note>​
 +
 +
  
 ===== Rezultate Obţinute ===== ===== Rezultate Obţinute =====
  
-<note tip> +{{:​pm:​prj2024:​alucaci:​minesweeper_3.jpeg?​200|}}{{:​pm:​prj2024:​alucaci:​minesweeper_2.jpeg?​200|}}{{:​pm:​prj2024:​alucaci:​minesweeper_5.jpeg?​200|}} \\ 
-Care au fost rezultatele obţinute în urma realizării proiectului vostru+{{:​pm:​prj2024:​alucaci:​minesweeper_1.jpeg?​200|}}{{:​pm:​prj2024:​alucaci:​minesweeper_4.jpeg?​200|}}{{:​pm:​prj2024:​alucaci:​minesweeper_6.jpeg?​200|}}
-</​note>​+
  
 ===== Concluzii ===== ===== Concluzii =====
 +Proiectul Minesweeper pe Arduino a fost finalizat cu succes, atingând toate obiectivele propuse și demonstrând viabilitatea și funcționalitatea acestuia. Experiența acumulată în cadrul acestui proiect a fost extrem de valoroasă, oferind o bază solidă pentru proiecte viitoare și dezvoltarea continuă a abilităților tehnice.
  
 +**Posibile Îmbunătățiri**:​ \\
 +Extinderea Funcționalităților:​ Adăugarea de nivele de dificultate sau opțiuni suplimentare pentru utilizatori ar putea îmbunătăți experiența de joc. \\
 +Optimizări de Performanță:​ Analizarea și optimizarea codului pentru a asigura o performanță mai bună și un răspuns mai rapid al interfeței. \\
 +Design Ergonomic: Îmbunătățirea designului fizic pentru a facilita o interacțiune mai confortabilă și intuitivă. ​
 ===== Download ===== ===== Download =====
  
-<note warning>​ +Arhiva se poate descarca [[https://ocw.cs.pub.ro/​courses/​_media/​pm/​prj2024/​alucaci/​minesweeper.zip|aici]].
-O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectuluisurse, scheme, etcUn 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>​ +
 ===== Jurnal ===== ===== Jurnal =====
  
-<note tip> +**05 mai**: Alegerea temei proiectului \\ 
-Putețavea și o secțiune ​de jurnal în care să poată urmări asistentul ​de proiect progresul ​proiectului+Decizia de a dezvolta jocul Minesweeper pe Arduino. \\ 
-</​note>​ +Identificarea componentelor necesare. \\ 
 +**15 mai**: Sosirea componentelor șasamblarea hardware \\  
 +**16 mai**: Finalizarea asamblarii hardware-ului:​ ecran TFT, joystick, butoane, LED-uri. \\ 
 +**18 mai**: Implementarea matricei de joc și a logicii ​de bază \\ 
 +**20 mai**: Dezvoltarea interfeței ​de joc și a funcțiilor principale \\ 
 +**21 mai**: Crearea meniului de start și finalizarea ​proiectului ​\\ 
 +Testarea finală și ajustările finale. \\
 ===== Bibliografie/​Resurse ===== ===== Bibliografie/​Resurse =====
  
pm/prj2024/alucaci/diana.stefan0106.1716461427.txt.gz · Last modified: 2024/05/23 13:50 by diana.stefan0106
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