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:47]
diana_ioana.tudor [Hardware Design]
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 27: 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. Ecran LCD 1.8” SPI\\ +2. [[ https://​cleste.ro/​ecran-lcd-1-8-spi.html|Ecran LCD 1.8” SPI]]\\ 
-3. Tastatura numerica 4*4\\ +3. [[ https://​www.emag.ro/​tastatura-matriciala-4x4-ai183-s248/​pd/​D9SFNYMBM/?​ref=cart_item |Tastatura numerica 4*4]]\\ 
-4. Joystick\\ +4. [[ https://​sigmanortec.ro/​Modul-joystick-doua-axe-XY-p126458908 |Joystick]]\\ 
-5. Breadboard 400 de puncte\\+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\\ 6. Rezistente + fire\\
 +
 +Schema electrica:​\\
 +{{:​pm:​prj2025:​avaduva:​sudoku_schema_electrica_diana_tudor.jpeg?​400|}}
 ===== Software Design ===== ===== Software Design =====
  
  
-<note tip> +Pentru realizarea componentei software am folosit mediul ​de dezvoltare ​Arduino IDEAplicatia este un joc de** Sudoku** care ruleaza pe un microcontroler si foloseste un **ecran TFT**, **un joystick analogic** si** o tastatura 4x4**.
-Descrierea codului aplicaţiei (firmware):​ +
-  * mediu de dezvoltare ​(if any) (e.g. AVR Studio, PlatformIO) +
-  ​biblioteci şi surse 3rd-party folosite (e.g. Procyon AVRlib) +
-  ​algoritmi şi structuri pe care plănuiţi să le implementaţi +
-  ​(etapa 3) surse şi funcţii implementate +
-</​note>​+
  
-===== Rezultate Obţinute =====+**Biblioteci folosite:​** 
 +  * SPI.h – pentru comunicarea cu ecranul TFT. 
 +  * TFT.h – pentru desenarea interfetei grafice. 
 +  * Keypad.h – pentru detectarea tastelor apasate pe tastatura matriciala.
  
-<note tip> +Structura codului si functiile folosite:
-Care au fost rezultatele obţinute în urma realizării proiectului vostru. +
-</​note>​+
  
-===== Concluzii =====+  *** 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.
  
-===== Cod sursă și alte resurse ce trebuie să existe ​pe GitHub =====+  * **2. Meniu principal (functia drawMainMenu())** 
 +Afiseaza ​pe ecran titlul "​SUDOKU"​ si instructiuni:​ 
 +  * A pentru joc usor, 
 +  * B pentru joc greu, 
 +  * C pentru super usor (tabla aproape completa),​ 
 +  * * pentru verificarea jocului, 
 +  * # pentru revenire in meniu.
  
-Codul sursă trebuie urcat într-un repo public, recomandăm GitHub.+  * **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 warning> +  * **4. Afisarea tablei Sudoku:** 
-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 vostrupe care le link-ați în README.md+drawSudokuGrid() 
 +Deseneaza fiecare celula. 
 +Daca are o valoareo afiseaza (text alb). 
 +Evidentiaza celula selectata cu un chenar rosu. 
 +- drawBoldGridLines() 
 +Deseneaza liniile groase pentru a marca fiecare subgrila 3x3. 
 + 
 +  ​* **5. Navigare si interactiune (in loop())*
 +Citeste pozitia joystick-ului (analogRead(X) si analogRead(Y)) si modifica selectedRow / selectedColDaca utilizatorul apasa o tasta intre 1 si 9, se apeleaza writeToCell(key). 
 + 
 +  ​* **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. 
 + 
 +  ​* **7. Validarea jocului (functia validateBoard())** 
 +Daca tabla nu este completata (filledCells < TOTAL_CELLS),​ afiseaza mesajul "NOT FINISHED!"​. Daca este completata, verifica: ​toate liniiletoate coloanele, toate subgrilele 3x3. 
 + 
 +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()). 
 + 
 +  * **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 ​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.1746996455.txt.gz · Last modified: 2025/05/11 23:47 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