This shows you the differences between two versions of the page.
pm:prj2022:robert:sudoku [2022/05/06 23:31] claudiu.axinia [Schema bloc] |
pm:prj2022:robert:sudoku [2022/05/27 23:56] (current) claudiu.axinia [Download] |
||
---|---|---|---|
Line 6: | Line 6: | ||
===== Introducere ===== | ===== Introducere ===== | ||
- | Proiectul reprezinta implementarea unui joc Sudoku, folosind materiale si concepte legate de materia Proiectarea cu Microprocesoare. | + | Proiectul reprezinta implementarea unui joc Sudoku(varianta 4x4), folosind materiale si concepte legate de materia Proiectarea cu Microprocesoare. |
- | Este o varianta mai distractiva atat de implementat, cat si de jucat chiar si pentru pasionatii de Sudoku(inclusiv eu, de unde mi-a venit si ideea pentru acest proiect), comparativ cu variantele clasice pe foaie sau un dispozitiv mobil. | + | Este o varianta mai rapida si mai distractiva atat de implementat, cat si de jucat chiar si pentru pasionatii de Sudoku(inclusiv eu, de unde mi-a venit si ideea pentru acest proiect), comparativ cu variantele clasice pe foaie sau un dispozitiv mobil. |
===== Descriere generală ===== | ===== Descriere generală ===== | ||
Jocul poate fi jucat de un jucator pornind de la o configuratie initiala afisata pe un ecran LCD. Trebuie respectate regulile Sudoku: nu pot exista cifre duplicate pe un rand, pe o coloana sau intr-un careu din grila. | Jocul poate fi jucat de un jucator pornind de la o configuratie initiala afisata pe un ecran LCD. Trebuie respectate regulile Sudoku: nu pot exista cifre duplicate pe un rand, pe o coloana sau intr-un careu din grila. | ||
- | Jucatorul va putea selecta din butoanele disponibile atat pozitionarea pe grila de Sudoku(sus/jos/stanga/dreapta), cat si incrementarea si apoi selectarea/stergerea inainte de selectare a unei cifre. In cazul incalcarii unei reguli, se va aprinde un led rosu si va porni un semnal sonor pentru atentionare. In final, in caz de victorie se va primi un mesaj de felicitari. | + | Jucatorul va putea selecta din butoanele disponibile atat pozitionarea pe grila de Sudoku(sus/jos/stanga/dreapta), cat si incrementarea si apoi plasarea/stergerea inainte de plasare a unei cifre. In final, in caz de victorie se va primi un mesaj "Ai castigat!" si se va afisa scorul primit. |
===== Hardware Design ===== | ===== Hardware Design ===== | ||
- | <note tip> | + | ==== Lista componente folosite: ==== |
- | Aici puneţi tot ce ţine de hardware design: | + | |
- | * listă de piese | + | |
- | * scheme electrice (se pot lua şi de pe Internet şi din datasheet-uri, e.g. http://www.captain.at/electronic-atmega16-mmc-schematic.png) | + | |
- | * diagrame de semnal | + | |
- | * rezultatele simulării | + | |
- | </note> | + | |
- | Lista componente folosite: | + | * Placa compatibila cu Arduino UNO |
- | + | * Ecran LCD 128 x 160 | |
- | * Placa Arduino UNO | + | * Breadboard |
- | * Ecran LCD | + | * Butoane(x7) |
- | * Butoane | + | * LED |
- | * LED-uri | + | |
* Buzzer | * Buzzer | ||
- | * Keypad | + | * Fire tata-tata |
- | * Breadboard | + | * Rezistoare 1000 & 470 Ohmi |
- | * Cablu usb | + | |
- | * Fire | + | |
- | * Rezistente | + | |
- | ===== Schema bloc ===== | + | ==== Conectare LCD 128 X 160 - sursa bibliografie ==== |
- | {{:pm:prj2022:robert:schema_bloc_axinia.png}} | + | {{:pm:prj2022:robert:conectare_lcd_axinia.png?300|}} |
+ | ==== Implementare hardware ==== | ||
+ | {{:pm:prj2022:robert:hardware_axinia.jpg?300|}} | ||
+ | |||
+ | ==== Schema electrica ==== | ||
+ | |||
+ | {{:pm:prj2022:robert:schema_electrica_axinia.png?300|}} | ||
+ | |||
+ | Nu am gasit in Tinkercad LCD-ul meu anume, asa ca am incercat sa arat cat mai apropiat in schema cum am legat. Conectarea ecranului meu LCD la Arduino/Breadboard s-a facut conform acestei poze dintr-un videoclip de pe YouTube(bibliografie): | ||
+ | |||
+ | === Conectare ecran LCD-Arduino/Breadboard === | ||
+ | |||
+ | {{:pm:prj2022:robert:lcd_to_arduino_axinia.png?300|}} | ||
+ | |||
+ | |||
+ | ===== Schema Bloc ===== | ||
+ | {{:pm:prj2022:robert:schema_bloc_axinia.png|}} | ||
===== Software Design ===== | ===== Software Design ===== | ||
+ | Am implementat codul in Arduino IDE, folosind si biblioteca Ucglib(bibliografie) pentru afisarea pe ecranul LCD. | ||
- | <note tip> | + | Implementare: |
- | Descrierea codului aplicaţiei (firmware): | + | |
- | * mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) | + | In setup(): Sunt afisate regulile scorului pe ecran, sunt scrise numerele initiale pe grila si scorul este initializat cu 0. |
- | * librării şi surse 3rd-party (e.g. Procyon AVRlib) | + | |
- | * algoritmi şi structuri pe care plănuiţi să le implementaţi | + | In resetGame(): Este desenata grila si sunt afisate numerele initiale, fiind initializata matricea de sudoku si pozitia jucatorului. Numerele initiale sunt colorate cu albastru, cele puse pe parcurs cu alb, iar casuta in care se afla jucatorul cu verde. |
- | * (etapa 3) surse şi funcţii implementate | + | |
- | </note> | + | In loop(): Este verificata starea LOW/HIGH a butoanelor si se executa actiuni pe baza acestei stari. |
+ | |||
+ | UP/DOWN - schimba pozitia pe axa Oy, iar LEFT/RIGHT pe axa Ox | ||
+ | |||
+ | DELETE - sterge numarul curent(nu unul din cele initiale!) | ||
+ | |||
+ | INCREMENT - incrementeaza valoarea numarului(maxim pana la valoarea admisa) | ||
+ | |||
+ | PLACE - scrie numarul selectat in celula curenta(respectand regulile de non-duplicate) | ||
+ | |||
===== Rezultate Obţinute ===== | ===== Rezultate Obţinute ===== | ||
- | <note tip> | + | Am obtinut jocul de Sudoku(versiunea 4x4), respectand, prin implementarile hardware si software, regulile si design-ul binecunoscute. Jucatorul se poate deplasa in toate cele 4 directii pe ecran si poate plasa/sterge numere in grila pentru a rezolva jocul. In final, se calculeaza scorul conform regulilor afisate la inceput si, in caz de victorie, se afiseaza un mesaj de felicitari "Ai castigat!". Functionalitati: |
- | Care au fost rezultatele obţinute în urma realizării proiectului vostru. | + | |
- | </note> | + | ==== Reguli - ecran de start ==== |
+ | |||
+ | {{:pm:prj2022:robert:reguli_axinia.jpg?300|}} | ||
+ | |||
+ | ==== Joc initial ==== | ||
+ | |||
+ | {{:pm:prj2022:robert:joc_initial_axinia.jpg?300|}} | ||
+ | |||
+ | ==== Joc final ==== | ||
+ | |||
+ | {{:pm:prj2022:robert:joc_final_axinia.jpg?300|}} | ||
+ | |||
+ | ==== Mesaj "Ai castigat!" si scor ==== | ||
+ | |||
+ | {{:pm:prj2022:robert:scor_axinia.jpg?300|}} | ||
===== Concluzii ===== | ===== Concluzii ===== | ||
- | ===== Download ===== | + | - A fost un proiect distractiv de implementat, care a necesitat cunostinte matematice pentru implementarea software a Sudoku, rabdare in intampinarea si solutionarea dificultatilor si munca pentru asamblarea hardware prin aplicarea cunostintelor invatate la materia PM. |
- | <note warning> | + | - Jocul este foarte asemanator cu cel clasic pe hartie, folosind bineinteles o altfel de implementare prin jocul din butoane push pe LCD. |
- | 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**. | + | - Am tratat si cazuri absurde precum jucatorul incercand sa stearga numerele date deja initial sau iesirea in afara grilei. |
- | </note> | + | |
+ | - Codul este o baza solida caruia i se pot aplica in viitor lucruri/functii suplimentare prin updatarea acestuia. | ||
+ | ===== Download ===== | ||
+ | |||
+ | {{:pm:prj2022:robert:sudoku_axinia_arhiva.zip|}} | ||
===== Jurnal ===== | ===== Jurnal ===== | ||
- | <note tip> | + | 06.05: Creare pagina de ocw si descriere detalii despre proiect, implementare, piese folosite si schema bloc. |
- | Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului. | + | |
- | </note> | + | Saptamana 16-20 mai: procurare materiale si piese necesare, incepere implementare hardware(conectare ecran LCD) & software(reguli Sudoku). |
+ | |||
+ | Saptamana 23-27 mai: finalizare implementare hardware & software, finalizare wiki pagina OCW. | ||
===== Bibliografie/Resurse ===== | ===== Bibliografie/Resurse ===== | ||
- | <note> | + | https://github.com/olikraus/ucglib - Biblioteca UCGLIB; |
- | Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. | + | |
- | </note> | + | https://www.youtube.com/watch?v=boagCpb6DgY&ab_channel=educ8s.tv - Conectare ecran LCD 128 x 160; |
+ | |||
+ | https://acoptex.com/project/263/basics-project-054a-18-spi-tft-lcd-128x160-module-and-flickering-streaks-at-acoptexcom/ - Conectare ecran LCD & alte informatii legate de el; | ||
+ | |||
+ | - Diverse surse de pe internet( + cunostinte proprii :) ) referitoare la regulile Sudoku si cum ar corespunde ele in cadrul proiectului; | ||
<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> |