This shows you the differences between two versions of the page.
pm:prj2022:robert:sudoku [2022/05/27 23:11] claudiu.axinia [Hardware Design] |
pm:prj2022:robert:sudoku [2022/05/27 23:56] (current) claudiu.axinia [Download] |
||
---|---|---|---|
Line 17: | Line 17: | ||
===== Hardware Design ===== | ===== Hardware Design ===== | ||
- | Lista componente folosite: | + | ==== Lista componente folosite: ==== |
* Placa compatibila cu Arduino UNO | * Placa compatibila cu Arduino UNO | ||
Line 28: | Line 28: | ||
* Rezistoare 1000 & 470 Ohmi | * Rezistoare 1000 & 470 Ohmi | ||
- | Conectare LCD 128 X 160 - sursa bibliografie | + | ==== Conectare LCD 128 X 160 - sursa bibliografie ==== |
{{:pm:prj2022:robert:conectare_lcd_axinia.png?300|}} | {{:pm:prj2022:robert:conectare_lcd_axinia.png?300|}} | ||
- | Implementare hardware | + | ==== Implementare hardware ==== |
{{:pm:prj2022:robert:hardware_axinia.jpg?300|}} | {{:pm:prj2022:robert:hardware_axinia.jpg?300|}} | ||
- | Schema electrica | + | ==== 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|}} | ||
Line 44: | Line 52: | ||
===== 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 ===== | ||
Line 85: | Line 103: | ||
===== Download ===== | ===== Download ===== | ||
- | <note warning> | + | {{:pm:prj2022:robert:sudoku_axinia_arhiva.zip|}} |
- | 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**. | + | |
- | </note> | + | |
===== Jurnal ===== | ===== Jurnal ===== | ||