Differences

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

Link to this comparison view

pm:prj2025:avaduva:diana_ioana.tudor [2025/05/11 23:42]
diana_ioana.tudor [Descriere generală]
pm:prj2025:avaduva:diana_ioana.tudor [2025/05/25 19:31] (current)
diana_ioana.tudor
Line 6: Line 6:
  
 Obiectivul proiectului este de a crea o interfață interactivă și fizică pentru rezolvarea puzzle-urilor Sudoku, combinând elemente de programare, electronică și logică. Obiectivul proiectului este de a crea o interfață interactivă și fizică pentru rezolvarea puzzle-urilor Sudoku, combinând elemente de programare, electronică și logică.
 +
  
 ===== Descriere generală ===== ===== Descriere generală =====
Line 20: Line 21:
 În cadrul proiectului,​ ecranul LCD are rolul de a afișa grila și cifrele corespunzătoare,​ oferind utilizatorului o experiență vizuală clară a jocului. Introducerea cifrelor se face cu ajutorul keypad-ului,​ iar joystick-ul permite deplasarea între celule pentru selectarea poziției dorite. În cadrul proiectului,​ ecranul LCD are rolul de a afișa grila și cifrele corespunzătoare,​ oferind utilizatorului o experiență vizuală clară a jocului. Introducerea cifrelor se face cu ajutorul keypad-ului,​ iar joystick-ul permite deplasarea între celule pentru selectarea poziției dorite.
  
 +{{:​pm:​prj2025:​avaduva:​schemablockdianasudoku.jpg?​400|}}
  
  
Line 26: Line 28:
 Lista componente Lista componente
  
-1. Arduino UNO+1. [[https://​www.optimusdigital.ro/​en/​compatibile-with-arduino-uno/​1678-placa-de-dezvoltare-compatibila-cu-arduino-uno-atmega328p-i-ch340.html?​gad_source=1&​gad_campaignid=19615979487&​gbraid=0AAAAADv-p3DpzQivl1HoGD6feRIlY_6Bz&​gclid=Cj0KCQjwiqbBBhCAARIsAJSfZkaSUVWAxmtEcNMAdON4gNs-nMCVe17ofrzLc7nHWMQuIMM6dL4Q0goaAgaWEALw_wcB|Arduino UNO]]\\ 
 +2. [[ https://​cleste.ro/​ecran-lcd-1-8-spi.html|Ecran LCD 1.8” SPI]]\\ 
 +3. [[ https://​www.emag.ro/​tastatura-matriciala-4x4-ai183-s248/​pd/​D9SFNYMBM/?​ref=cart_item |Tastatura numerica 4*4]]\\ 
 +4. [[ https://​sigmanortec.ro/​Modul-joystick-doua-axe-XY-p126458908 |Joystick]]\\ 
 +5. [[https://​sigmanortec.ro/​Breadboard-400-puncte-p129872825?​SubmitCurrency=1&​id_currency=2&​gad_source=1&​gad_campaignid=22174019478&​gbraid=0AAAAAC3W72NZq-0hyN7i8IMNtn3PmizFF&​gclid=Cj0KCQjwiqbBBhCAARIsAJSfZkbD8aa2tWwoiCwLyPc8EnUO3BfdVyjavFcvzeFps8h206heRO1GXaYaAvxnEALw_wcB |Breadboard 400 de puncte]]\\ 
 +6. Rezistente + fire\\
  
-2Ecran LCD 1.8” SPI+Schema electrica:​\\ 
 +{{:​pm:​prj2025:​avaduva:​sudoku_schema_electrica_diana_tudor.jpeg?​400|}} 
 +===== Software Design =====
  
-3. Tastatura numerica 4*4 
  
-4Joystick+Pentru realizarea componentei software am folosit mediul de dezvoltare Arduino IDE. Aplicatia este un joc de** Sudoku** care ruleaza pe un microcontroler si foloseste un **ecran TFT**, **un joystick analogic** si** o tastatura 4x4**.
  
-5Breadboard 400 de puncte+**Biblioteci folosite:​** 
 +  * SPI.h – pentru comunicarea cu ecranul TFT. 
 +  * TFT.h – pentru desenarea interfetei grafice. 
 +  * Keypad.h – pentru detectarea tastelor apasate pe tastatura matriciala.
  
-6. Rezistente + fire +Structura codului si functiile folosite:
-===== Software Design =====+
  
 +  *** 1. Initializare componente (in setup())**
 +Se configureaza joystick-ul,​ tastatura si ecranul TFT. Se calculeaza dimensiunea fiecarei celule (cellWidth, cellHeight) in functie de rezolutia ecranului. Se apeleaza functia drawMainMenu() pentru a afisa meniul principal.
  
-<note tip> +  * **2. Meniu principal (functia drawMainMenu())** 
-Descrierea codului aplicaţiei ​(firmware): +Afiseaza pe ecran titlul "​SUDOKU"​ si instructiuni
-  * mediu de dezvoltare (if any) (e.g. AVR StudioPlatformIO) +  * A pentru joc usor
-  * biblioteci şi surse 3rd-party folosite ​(e.g. Procyon AVRlib+  * B pentru joc greu, 
-  * algoritmi şi structuri pe care plănuiţi să le implementaţi +  * C pentru super usor (tabla aproape completa), 
-  * (etapa 3) surse şi funcţii implementate +  * * pentru verificarea jocului, 
-</​note>​+  * # pentru revenire in meniu.
  
-===== Rezultate Obţinute =====+  * **3. Incarcarea tablei de joc (functia loadBoard(index))** 
 +Incarca o tabla predefinita din predefinedBoards[index]. Marcheaza celulele care nu pot fi modificate (fixedCells[]). Initializeaza variabila filledCells. Apeleaza drawSudokuGrid() si drawBoldGridLines() pentru afisare.
  
-<note tip> +  * **4. Afisarea tablei Sudoku:** 
-Care au fost rezultatele obţinute în urma realizării proiectului vostru+- drawSudokuGrid() 
-</​note>​+Deseneaza fiecare celula
 +Daca are o valoare, o afiseaza (text alb). 
 +Evidentiaza celula selectata cu un chenar rosu. 
 +- drawBoldGridLines() 
 +Deseneaza liniile groase pentru a marca fiecare subgrila 3x3.
  
-===== Concluzii =====+  * **5. Navigare si interactiune (in loop())** 
 +Citeste pozitia joystick-ului (analogRead(X) si analogRead(Y)) si modifica selectedRow / selectedCol. Daca utilizatorul apasa o tasta intre 1 si 9, se apeleaza writeToCell(key).
  
-===== Cod sursă și alte resurse ce trebuie să existe pe GitHub =====+  * **6. Introducere cifre (functia writeToCell(key))** 
 +Verifica daca celula este editabila (fixedCells). Daca da, salveaza cifra si coloreaza celula pentru a arata ca a fost modificata.
  
-Codul sursă trebuie urcat într-un repo publicrecomandăm GitHub.+  * **7. Validarea jocului (functia validateBoard())** 
 +Daca tabla nu este completata (filledCells < TOTAL_CELLS)afiseaza mesajul "NOT FINISHED!"​. Daca este completata, verifica: toate liniile, toate coloanele, toate subgrilele 3x3.
  
-<note warning> +Daca totul e corect, afiseaza "YOU WON!". Daca sunt greseli, afiseaza "TRY AGAIN!"​. In toate cazurile, dupa afisarea mesajului se redeseneaza tabla (drawSudokuGrid() si drawBoldGridLines()). 
-Structurați-vă pagina ​de GitHub a proiectului pe mai multe directoareDe exemplucreați un director numit **src** în care țineți ​tot codul sursăAlt director ​**hardware** în care să țineți schemele și diagramele și alt director numit **images** în care să puneți toate fotografiile cu proiectul vostru, ​pe care le link-ați în README.md+ 
 +  * **8. Revenire in meniu (functia resetToMenu())** 
 +Reseteaza valorile ​de stare (isInMenu, selectedRow,​ filledCells,​ etc.). Curata ecranul si afiseaza din nou meniul (drawMainMenu())unde codul este deja optimizat:​ 
 + 
 +**Optimizari posibile:** 
 +Debounce pentru joystick – ar reduce miscarile involuntare. 
 +Butonul joystick-ului (joystickButtonPin) nu este folosit – ar putea fi adaugata o functie de stergere celula. 
 +Feedback vizual pentru greseli – se pot colora celulele incorecte. 
 +Verificare in timp real – pentru a preveni introducerea cifrelor ​care incalca regulile. 
 +Oprire mai devreme la validare – algoritmul verifica ​tot jocul chiar daca gaseste o greseala; se poate optimiza. 
 + 
 +**Notiuni din laborator aplicate:** 
 +  ​SPI – pentru comunicarea cu ecranul TFT. 
 +  ​ADC – pentru joystick (citirea valorilor analogice). 
 +  ​GPIO – pentru tastatura si butoane. 
 + 
 +===== Rezultate Obţinute ===== 
 +{{:​pm:​prj2025:​avaduva:​pozasudokufunc.jpeg?​400|}} 
 + 
 +===== Concluzii ===== 
 +  ​Proiectul arata ca poti construi o aplicatie interactiva completa ​pe un microcontroler,​ combinand afisaj grafic, control cu joystick si tastatura.
  
-Pagina de GitHub a proiectului vostru trebuie să conțină ​**toate** fișierele relevante pentru realizarea proiectului vostru. Dacă există resurse externe pe care le-ați folosit, vă rugăm să le link-ați în README.md +  ​Jocul ofera o experienta placuta si intuitiva.
-</​note>​+
  
-<note warning>​ +  * Sudoku-ul este verificat automat, ceea ce implica o logica bine gandita si o coordonare clara intre input si afisaj.
-Sunteți încurajați să filmați un demo cu proiectul vostru și să îl încărcați pe YouTubeFaceți embed la video în README.md și în pagina de wiki OCW a proiectului vostru. +
-</​note>​+
  
-===== Jurnal =====+  * M-am distrat :)
  
-<note tip> +===== Cod sursă ​ ===== 
-Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului. +{{:​pm:​prj2025:​avaduva:​sudoku_diana_ioana_tudor.zip|Link download}}
-</​note>​+
  
-===== Bibliografie/Resurse =====+[[https://​youtube.com/​shorts/​4xpqb9nj9Rw?​feature=share|Link Demo]]
  
-<note> +<html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</a></html>
-Listă cu documente, datasheet-uri,​ resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. +
-</note>+
  
pm/prj2025/avaduva/diana_ioana.tudor.1746996123.txt.gz · Last modified: 2025/05/11 23:42 by diana_ioana.tudor
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