This shows you the differences between two versions of the page.
pm:prj2023:vstoica:tudordiaconu [2023/05/16 22:12] tudor.diaconu [Hardware Design] |
pm:prj2023:vstoica:tudordiaconu [2023/05/28 17:58] (current) tudor.diaconu [Schema bloc] |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== 2 Player Tic-Tac-Toe ====== | + | ====== Super Mario on LCD ====== |
<note tip> | <note tip> | ||
Autor: Diaconu Tudor-Gabriel | Autor: Diaconu Tudor-Gabriel | ||
Line 7: | Line 7: | ||
==== Introducere ==== | ==== Introducere ==== | ||
- | Scopul acestui proiect este cel de a realiza un joc de Tic-Tac-Toe în 2, care să fie afișat pe un ecran LCD. De asemenea, voi folosi un joystick/butoane pentru controlul și alegerea poziției simbolului, un buzzer pentru a marca finalul meciului și câte un LED pentru a arăta al cui este rândul. | + | Scopul acestui proiect este cel de a realiza un joc de Super Mario, care să fie afișat pe un ecran LCD. De asemenea, voi folosi un joystick pentru controlul jucătorului, un buzzer pentru a marca finalul meciului, 2 butoane de start și pause și un LED care marchează starea în care se află jocul. |
==== Descriere generală ==== | ==== Descriere generală ==== | ||
Aplicația va funcționa în modul următor: | Aplicația va funcționa în modul următor: | ||
- | Un buton va marca start-ul meciului, moment în care se va aprinde becul LED aferent jucătorului cu X. Apoi, jucătorul își alege poziția unde să plaseze simbolul prin intermediul unui joystick(sau a unor butoane), fiind apoi rândul jucătorului cu 0, aprinzându-se becul aferent jucătorului 0 și stingându-se cel al jucătorului X. | + | La început, este marcat faptul că trebuie apăsat butonul de start pentru a începe jocul. De asemenea, în această stare, becul RGB este roșu. |
- | După mai multe mutări ale celor 2 jucători, va fi afișat câștigătorul pe LCD (sau Draw în caz de egalitate), finalul meciului fiind marcat printr-o melodie auzită la buzzer în funcție de jucătorul câștigător. De asemenea, la finalul meciului, va apărea pe ecran și durata meciului. | + | După ce este început jocul prin apăsarea butonului, jucătorul poate să sară peste obstacole prin intermediul joystick-ului (becul RGB devine verde). De asemenea, poate pune pauză prin utilizarea celuilalt buton de pe breadboard (becul RGB devine albastru). La momentul ciocnirii cu un obstacol, jucătorul pierde meciul și îi este afișat scorul și durata jocului. |
+ | |||
+ | De asemenea, la pierderea jocului, becul redevine roșu, iar jucătorului îi este indicat să apese din nou butonul pentru a începe o altă rundă, acest mesaj apărând intermitent cu momentul pierderii rundei trecute. | ||
==== Schema bloc ==== | ==== Schema bloc ==== | ||
- | {{:pm:prj2023:vstoica:untitled_diagram.drawio.png|}} | + | {{:pm:prj2023:vstoica:untitled_diagram.drawio.png?700}} |
==== Hardware Design ==== | ==== Hardware Design ==== | ||
Line 32: | Line 34: | ||
</note> | </note> | ||
- | {{:pm:prj2023:vstoica:schemahardware_proiectpm_bb.png?900|}} | + | {{:pm:prj2023:vstoica:schemahardware_proiectpm_bb.png?700|}} |
- | {{:pm:prj2023:vstoica:schemahardware_proiectpm_schem.png?900|}} | + | {{:pm:prj2023:vstoica:schemahardware_proiectpm_schem.png?700|}} |
==== Software Design ==== | ==== Software Design ==== | ||
- | TBC | + | <note> |
+ | |||
+ | Mediul de dezvoltare | ||
+ | * Draw.io - schema bloc | ||
+ | * Tinkercad + Fitzring - design-ul hardware | ||
+ | * Arduino IDE - codul software | ||
+ | |||
+ | </note> | ||
+ | |||
+ | |||
+ | <note> | ||
+ | |||
+ | Biblioteci utilizate | ||
+ | * LiquidCrystal_I2C.h - pentru conexiunea cu ecranul LCD I2C | ||
+ | |||
+ | </note> | ||
+ | |||
+ | <note> | ||
+ | |||
+ | Funcții principale | ||
+ | * initializeGraphics() - funcție care inițializeaza graficile de pe ecran și marchează posibilele poziții ale băiatului din joc | ||
+ | * advanceTerrain() - funcție care mută la stânga obstacolele din joc | ||
+ | * drawBoy() - funcție care indică cum își modifică băiatul poziția în funcție de poziția precedentă | ||
+ | * setup() - inițializarea regiștrilor necesari și marcarea pinilor ca intrare sau ieșire | ||
+ | * loop() - logica proiectului și tratarea cazului de pierdere a jocului | ||
+ | |||
+ | </note> | ||
==== Rezultate obținute ==== | ==== Rezultate obținute ==== | ||
+ | Meniul de start | ||
+ | |||
+ | {{:pm:prj2023:vstoica:mario-poza.jpeg?600|}} | ||
+ | |||
+ | Ecran in game | ||
+ | |||
+ | {{:pm:prj2023:vstoica:mario-poza1.jpeg?600|}} | ||
+ | |||
+ | Ecran care arată cum a fost pierdută runda trecută | ||
+ | |||
+ | {{:pm:prj2023:vstoica:mario-poza2.jpeg?600|}} | ||
+ | |||
+ | Ecran în pauză | ||
+ | |||
+ | {{:pm:prj2023:vstoica:mario-poza3.jpeg?600|}} | ||
+ | |||
+ | Ecran la final | ||
+ | |||
+ | {{:pm:prj2023:vstoica:mario-poza4.jpeg?600|}} | ||
==== Concluzii ==== | ==== Concluzii ==== | ||
+ | |||
+ | <note tip>A fost un proiect foarte interesant. Mă bucur că am reușit să învăț multe noțiuni noi de-a lungul lucrului la acest proiect. Pot spune că voi folosi acest proiect pe viitor atunci când mă voi plictisi în timpul liber și, de asemenea, voi încerca să-i mai aduc îmbunătățiri.</note> | ||
==== Download ==== | ==== Download ==== | ||
+ | <note tip> | ||
+ | {{:pm:prj2023:vstoica:diaconutudorgabriel_332ca_proiectpm.zip|Arhiva proiectului}} | ||
+ | </note> | ||
==== Bibliografie/Resurse ==== | ==== Bibliografie/Resurse ==== | ||
+ | |||
+ | |||
+ | <note>LiquidCrystal: https://github.com/johnrickman/LiquidCrystal_I2C | ||
+ | |||
+ | https://www.robotique.tech/robotics/using-the-joystick-with-arduino/ | ||
+ | |||
+ | Buzzer sound: https://github.com/robsoncouto/arduino-songs | ||
+ | </note> | ||
<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> |