Differences

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

Link to this comparison view

pm:prj2024:rvirtan:sudoku [2024/05/16 18:38]
alicuriceanu [Descriere generală]
pm:prj2024:rvirtan:sudoku [2024/05/20 16:07] (current)
alicuriceanu [Decizii luate]
Line 1: Line 1:
 +<note tip>
 +  * Nume: Alexandru Licuriceanu
 +  * Grupa: 332CD
 +</​note>​
 +
 ====== Sudoku ====== ====== Sudoku ======
 {{ :​pm:​prj2024:​rvirtan:​header_sudoku.png?​800 |}} {{ :​pm:​prj2024:​rvirtan:​header_sudoku.png?​800 |}}
Line 12: Line 17:
   * Tabla de joc este o grila de 9x9 celule, impartita in subgrile de 3x3.   * Tabla de joc este o grila de 9x9 celule, impartita in subgrile de 3x3.
   * O celula poate tine o cifra de la 1 la 9.   * O celula poate tine o cifra de la 1 la 9.
-  * Toate cifrele dintr-o subgrila trebuie sa fie diferite.+  * Toate cifrele dintr-o subgrila trebuie sa fie distincte.
   * Toate cifrele de pe un rand trebuie sa fie distincte.   * Toate cifrele de pe un rand trebuie sa fie distincte.
   * Toate cifrele de pe o coloana trebuie sa fie distincte.   * Toate cifrele de pe o coloana trebuie sa fie distincte.
Line 33: Line 38:
 ==== Schema electrica ==== ==== Schema electrica ====
 {{ :​pm:​prj2024:​rvirtan:​sudoku_schema_electrica.png?​700 |}} {{ :​pm:​prj2024:​rvirtan:​sudoku_schema_electrica.png?​700 |}}
 +
 +==== Decizii luate ====
 +  * Pentru ecranul LCD, am ales sa pun VCC la 5V pentru alimentare, iar pe LED l-am pus la pinul D6 pentru a regla luminozitatea ecranului folosind PWM. Am conectat restul pinilor conform datasheet-ului ecranului.
 +  * Pentru VRX si VRY ale joystick-ului,​ puteam sa aleg oricare doi pini analogici, si le-am legat la A0 si A1, ground la ground si VCC la 5V.
 +  * Pentru tastatura, la fel, aveam de ales oricare 4 pini digitali si 4 pini analogici.
 +
 +==== Imagini ====
 +{{:​pm:​prj2024:​rvirtan:​sudoku_image5.jpeg?​300}} {{:​pm:​prj2024:​rvirtan:​sudoku_image6.jpeg?​300}}
 +
 +
 ===== Software Design ===== ===== Software Design =====
  
 +==== Diagrama de Flux ====
 +{{:​pm:​prj2024:​rvirtan:​sudoku_flowchart.png?​500 }}
  
-<note tip> +==== Implementare ==== 
-Descrierea codului aplicaţiei (firmware): +  * Ca mediu de dezvoltare, ​am lucrat in **Arduino IDE**. 
-  * mediu de dezvoltare ​(if any) (e.g. AVR StudioCodeVisionAVR) +  * Pentru a controla mai usor functionalitatile perifericelor,​ am folosit bibliotecile ​3rd-party ​**TFT.h**, **SPI.h** pentru ecranul LCD si **Keypad.h** pentru tastatura numerica.
-  * librării şi surse 3rd-party ​(e.gProcyon AVRlib) +
-  ​algoritmi şi structuri pe care plănuiţi să le implementaţi +
-  ​(etapa 3) surse şi funcţii implementate +
-</​note>​+
  
-===== Rezultate Obţinute ===== 
  
-<note tip> +  * Pentru a reda grafici pe ecran, am scris functiile **draw_start_menu**,​ **draw_grid**,​ **draw_subgrids**,​ **draw_cursor** care deseneaza meniul de start, grila principala de 3x3, celulele si respectiv cursorul. 
-Care au fost rezultatele obţinute în urma realizării proiectului vostru+  * Functia **select_board** copiaza in tabla activa, o tabla dintr-o lista predefinita. Am ales sa pun si o tabla suplimentara care are doar doua celule libere, pentru a testa functiile scrise. 
-</​note>​+  * Functia **read_joystick** citeste valorile trimise de joystick si muta cursorul in directia specificata cat timp nu iese din tabla de joc. 
 +  * Functia **write_digit** scrie in tabla de joc activa cifra care a fost introdusa de jucator. Tasta '​0'​ sterge o cifra dintr-o celula care nu este fixa
 +  * In final, **check_board** verifica daca tabla de joc activa este completa si respecta toate regulile jocului.
  
-===== Concluzii ===== 
  
-===== Download =====+  * Pentru a cronometra timpul de la inceputul jocului si pana la castigarea acestuia, am folosit timer-ul intern al microcontroller-ului. Prin functia **millis** am calculat diferenta de timp intre fiecare executie a functiei **loop** iar la final am scazut momentul de start din momentul curent, pentru a calcula durata totala.
  
-<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ă ;-). 
  
-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 Alin331CC -> **:pm:prj2009:cc:dumitru_alin**. + 
-</​note>​+===== Rezultate Obţinute ===== 
 +Rezultatul proiectului este un dispozitiv hand-held pe care se poate juca Sudoku. 
 + 
 +{{:pm:prj2024:rvirtan:​sudoku_image1.jpeg?300|}} 
 +{{:pm:prj2024:​rvirtan:​sudoku_image2.jpeg?300|}} 
 + 
 +{{:pm:​prj2024:​rvirtan:​sudoku_image4.jpeg?300|}} 
 +{{:pm:prj2024:​rvirtan:​sudoku_image3.jpeg?​300|}} 
 + 
 +===== Concluzii ===== 
 +  ​Proiectul a fost interesant de realizatam invatat sa lucrez cu functiile din bibliotecile pentru LCD si keypad, dar si cum sa aranjez componentele astfel incat la final sa am un produs functional si util. Pe partea de software, provocarea a fost sa scriu cod care ocupa cat mai putin spatiu, dar in acelasi timp sa fie calitatativ si lizibil. 
 +==== Download ==== 
 +  ​{{:pm:prj2024:rvirtan:pmsudoku.zip|}}
  
 ===== Jurnal ===== ===== Jurnal =====
Line 66: Line 89:
   * 29/04/2024 - Pagina de wiki initiala.   * 29/04/2024 - Pagina de wiki initiala.
   * 09/05/2024 - Hardware design.   * 09/05/2024 - Hardware design.
 +  * 16/05/2024 - Software design.
 +  * 18/05/2024 - Finalizare pagina.
  
 ===== Bibliografie/​Resurse ===== ===== Bibliografie/​Resurse =====
  
 <​note>​ <​note>​
-Listă cu documentedatasheet-uri,​ resurse Internet folosite, eventual grupate ​pe **Resurse Software** şi **Resurse Hardware**.+  * Desenare de formetext pe ecran: https://​www.arduino.cc/​reference/​en/​libraries/​tft/​ 
 +  ​Conectarea ecranului: https://​youtu.be/​boagCpb6DgY?​si=3Q-0dxi9h8yn5iBe 
 +  ​Utilizarea tastaturii numerice: https://​arduinogetstarted.com/​tutorials/​arduino-keypad 
 +  ​Utilizarea joystick-ului:​ https://​arduinogetstarted.com/​tutorials/​arduino-joystick
 </​note>​ </​note>​
  
pm/prj2024/rvirtan/sudoku.1715873881.txt.gz · Last modified: 2024/05/16 18:38 by alicuriceanu
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