Differences

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

Link to this comparison view

pm:prj2023:vstoica:sudoku [2023/05/21 17:09]
maria_beatrice.dinu [Hardware design]
pm:prj2023:vstoica:sudoku [2023/05/28 01:49] (current)
maria_beatrice.dinu [Bibliografie/Resurse]
Line 1: Line 1:
 ====== Sudoku ====== ====== Sudoku ======
 +
 +Dinu Maria-Beatrice 332CA
  
 ===== Introducere ===== ===== Introducere =====
  
 Proiectul consta in implementarea jocului clasic sudoku. Jocul va fi afisat pe un ecran LCD, miscarea pe ecran se va face printr-un joystick, iar numerele vor fi introduse printr-un keypad. Proiectul consta in implementarea jocului clasic sudoku. Jocul va fi afisat pe un ecran LCD, miscarea pe ecran se va face printr-un joystick, iar numerele vor fi introduse printr-un keypad.
 +
 +Scopul acestui proiect este sa creeze o interfata fizica si interactiva pentru rezolvarea puzzle-urilor Sudoku, fiind o combinatie interesanta intre programare, electronica si jocuri logice.
  
 ===== Descriere generala ===== ===== Descriere generala =====
Line 10: Line 14:
   * Fiecare coloana din grila trebuie sa contina toate cifrele de la 1 la 9, fara repetitii.   * Fiecare coloana din grila trebuie sa contina toate cifrele de la 1 la 9, fara repetitii.
   * Fiecare regiune de 3x3 trebuie sa contina toate cifrele de la 1 la 9, fara repetitii.   * Fiecare regiune de 3x3 trebuie sa contina toate cifrele de la 1 la 9, fara repetitii.
 +
 +Proiectul utilizeaza un ecran LCD pentru a afisa grila sudoku si cifrele asociate, permitand utilizatorului sa vada si sa interactioneze direct cu puzzle-ul. Keypad-ul este folosit pentru a introduce cifre in grila, iar joystick-ul pentru a naviga prin diferite celule ale grilei sudoku.
  
 {{:​pm:​prj2023:​vstoica:​schema_bloc_sudoku.png?​500|Schema bloc}} {{:​pm:​prj2023:​vstoica:​schema_bloc_sudoku.png?​500|Schema bloc}}
Line 20: Line 26:
   - Tastatura numerica 4*4   - Tastatura numerica 4*4
   - Joystick   - Joystick
-  - Placa de prototipare+  - Breadboard 400 de puncte
   - Rezistente + fire   - Rezistente + fire
  
 Schema electrica\\ Schema electrica\\
-{{:​pm:​prj2023:​vstoica:​sudoku_schema.jpeg?​200|Schema electrica}}+{{:​pm:​prj2023:​vstoica:​sudoku_schema.jpeg?​500|Schema electrica}} 
 + 
 +===== Software design ===== 
 + 
 +Codul a fost implementat in ArduinoIDE. M-am folosit de urmatoarele biblioteci: SPI.h si TFT.h pentru LCD, Keypad.h pentru keypad. 
 + 
 +Structura codului: 
 +  - draw_sudoku():​ deseneaza tabla, pozitia jucatorului si insereaza cifele asociate. 
 +  - draw_grid():​ deseneaza liniile necesare pentru a imparti tabla in 9 segmente de 3x3. 
 +  - set_super_easy_board():​ copiaza cea mai usoara tabla din start_boards (unde sunt initializate diferite table de joc) in sudoku_board (am lasat aceasta functie pentu a putea verifica mai repede anumite functionalitati,​ si sa nu trebuiasca sa completez un joc intreg de sudoku). 
 +  - set_easy_board():​ copiaza o tabla de dificultate usoara random din start_boards (unde sunt initializate diferite table de joc) in sudoku_board. 
 +  - set_hard_board():​ copiaza o tabla de dificultate grea random din start_boards (unde sunt initializate diferite table de joc) in sudoku_board. 
 +  - write_key():​ insereaza cifra introdusa prin keypad pe tabla de joc. 
 +  - check_win():​ se verifica daca solutia oferita este una valida. Daca jucatorul nu a completat toata tabla, se va afisa mesajul "NOT FINISHED!"/​Daca jucatorul a completat gresit tabla se va afisa mesajul "TRY AGAIN!"​ pentru 3 secunde, dupa care se va reintoarce pe tabla de joc. Daca jucatorul a completat corect tabla, se va afisa mesajul "YOU WON! CONGRATS!"​ pentru 5 secunde, dupa care se va reintoarce la meniul principal. 
 +  - draw_menu():​ deseneaza meniul principal unde jucatorul are optiunile de a alege intre un joc usor sau un joc greu. 
 + 
 +{{:​pm:​prj2023:​vstoica:​schema_bloc_sudokuv2.png?​400|Schema Stari}} 
 + 
 +===== Rezultate obtinute ===== 
 +{{:​pm:​prj2023:​vstoica:​start_menu_sudoku.jpeg?​150|Start menu}} 
 +{{:​pm:​prj2023:​vstoica:​start_game_sudoku.jpeg?​150|Start game}} 
 +{{:​pm:​prj2023:​vstoica:​playing_game_sudoku.jpeg?​150|Playing game}} 
 +{{:​pm:​prj2023:​vstoica:​win_screen_sudoku.jpeg?​150|Win screen}} 
 + 
 +===== Concluzii ===== 
 +Proiectul a fost foarte interesant si captivant. Mi-a placut sa invat cum sa lucrez cu biblioteca TFT.h pentru LCD, care a durat ceva, si cum sa conectez componentele cu arduino astfel incat sa nu le stric :). Am lucrat la acest proiect cu placere.  
 + 
 +===== Download ===== 
 +Surse: {{:​pm:​prj2023:​vstoica:​sudoku_arduino.zip|Sudoku arduino}}
  
 +===== Bibliografie/​Resurse =====
 +https://​randomnerdtutorials.com/​guide-to-1-8-tft-display-with-arduino/​ \\
 +https://​www.arduino.cc/​reference/​en/​libraries/​tft/​ \\
 +https://​www.circuitbasics.com/​how-to-set-up-a-keypad-on-an-arduino/​ \\
 +https://​arduinogetstarted.com/​tutorials/​arduino-joystick
 ===== Bibliografie/​Resurse ===== ===== Bibliografie/​Resurse =====
  
 <​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</​a></​html>​ <​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</​a></​html>​
pm/prj2023/vstoica/sudoku.1684678179.txt.gz · Last modified: 2023/05/21 17:09 by maria_beatrice.dinu
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