Sudoku

  • DUDU Matei-Ioan
  • 333CB

Introducere

Prezentarea pe scurt a proiectului vostru:

  • ce face
  • care este scopul lui
  • care a fost ideea de la care aţi pornit
  • de ce credeţi că este util pentru alţii şi pentru voi

aferente.

În cadrul acestui proiect voi implementa (probabil) foarte cunoscutul joc Sudoku pe o placuță Arduino; joc pe care probabil toată lumea l-a jucat măcar o dată pe telefoanele cu taste ale bunicilor lor.

Ideea a fost să creez ceva ce se află mai mult în sfera cunoștințelor mele (software heavy) și totodată interactiv.

Descriere generală

O schemă bloc cu toate modulele proiectului vostru, atât software cât şi hardware însoţită de o descriere a acestora precum şi a modului în care interacţionează.

Exemplu de schemă bloc: http://www.robs-projects.com/mp3proj/newplayer.html

Hardware Design

Aici puneţi tot ce ţine de hardware design:

  • placuță arduino
  • buzzer pasiv de 5V
  • modul LCD SPI de 1.8” (128×160)
  • SD card reader (inclus în modulul LCD)
  • joystick
  • breadboard
  • rezistențe și fire

Software Design

Descrierea codului aplicaţiei (firmware):

  • mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR)
  • librării şi surse 3rd-party (e.g. Procyon AVRlib)
  • algoritmi şi structuri pe care plănuiţi să le implementaţi
  • (etapa 3) surse şi funcţii implementate

  • Am lucrat in VSCode, folosind extensia PlatformIO
  • Am folosit urmatoarele librarii: Ucglib, SD si SPI
  • Am implementat algoritmul de verificare a corectitudinii unei rezolvari facand maparea numerelor deja folosite pe biti
  • Structurile folosite sunt Point (pentru un punct in spatiul 2D) si Color (r, g, b)

Variabile globale folosite:

  • constante folosite pentru pinii asociati elementelor precum: buzzer, buton joystick etc.
  • Ucglib_ST7735_18x128x160_SWSPI ucg: obiect folosit pentru gestionarea ecranului
  • sudoku[9][9]: matrice folosita pentru memorarea configuratiei puzzle-ului
  • selected_square, selected_number, and game_mode: variabile folosite pentru a verifica starea jocului
  • no_placed: variabila folosita pentru a numara cate numere au fost plasate pe grila

Functii:

  • check_if_sudoku_is_valid: Verifică validitatea soluției Sudoku.
  • place_number: Afișează un număr pe grilă.
  • select_square: Evidențiază un pătrat selectat pe grilă.
  • unselect_square: Deselecteaza un patrat.
  • is_selected_number: Verifică dacă un pătrat este numărul selectat în prezent.
  • draw_guidelines: Desenează liniile care evidentiaza subgrilele de 3×3.
  • set_grid: Inițializează și desenează grila Sudoku pe LCD.
  • undraw_select_arrow și draw_select_arrow: Gestionează săgeata pentru selecția dificultății.
  • set_difficulty_select: Afișează ecranul de selecție a dificultății.
  • update_position: Actualizează poziția selectată pe baza intrării de la joystick.
  • update_number: Actualizează grila Sudoku pe baza intrării de la buton.

Functia setup initializeaza ecranul, pinul pentru buton si comunicarea cu cardul SD

Functia loop verifica in ce stare se afla se afla jocul: in ecranul de selectie a dificultatii sau in timpul jocului si apeleaza functiile

Rezultate Obţinute

Care au fost rezultatele obţinute în urma realizării proiectului vostru.

Concluzii

Proiect misto. Mi-a starnit cheful de a mai face lucruri similare.

Din pacate nu mai am timp sa cumpar un arduino nano si sa pun totul pe un pcb universal, dar sigur voi face asta dupa prezentarea proiectului.

Download

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 Alin, 331CC → :pm:prj2009:cc:dumitru_alin.

main.zip

Jurnal

Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului.

  • 03.05.2024 - creare pagină
  • 11.05.2024 - testare funcționare corectă a ecranului și a joystick-ului
  • 14.05.2024 - realizare schema conexiunilor modulelor din proiect
  • 15.05.2024 - realizare schema bloc cu modulele din proiect
  • 20.05.2024 - modificarea aranjarii elementelor hardware
  • 21.05.2024 - inceput etapa software
  • 23.05.2024 - gata cu software-ul

Bibliografie/Resurse

Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe Resurse Software şi Resurse Hardware.

Export to PDF

pm/prj2024/avaduva/matei_ioan.dudu.txt · Last modified: 2024/05/24 22:16 by matei_ioan.dudu
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