Constantin ANDREESCU (78285) - Super Mario Controller

Autorul poate fi contactat la adresa: Login pentru adresa

Introducere

Proiectul isi propune realizarea unei variante primitive de controller pentru jocul Super Mario. Fenomenul fizic de la baza implementarii se bazeaza pe abilitatea corpului uman de a conduce electricitate. Voi confectiona astfel 6 butoane atasate de un suport fizic, care, la atingere vor inchide circuitul electric si vor transmite astfel catre placuta pe firul corespunzator. Ideea am preluat-o din urmatorul clip video: https://www.youtube.com/watch?v=rfQqh7iCcOU

Descriere generală

Hardware Design

Schema electrica:

Lista de piese:

  • cablu USB
  • rezistenta de 10 MOhm (6 bucati)
  • placuta ATMEGA324
  • butoane si suportul pentru butoane confectionate

Software Design

Proiectul este alcatuit din doua programe software:

1. Programul care ruleaza pe microcontroller-ul Atmega324, scris in C si C++, compilate cu avr-gcc. Am folosit biblioteca CapacitiveSensor(1) si suport din laboratorele rezolvate intr-o mai mica masura in scrierea programului. Pentru compilare si incarcare am folosit suport oferit in cadrul laboratorului pentru incarcarea bootloader-ului.

(1) https://playground.arduino.cc/Main/CapacitiveSensor?from=Main.CapSense

2. Programul care ruleaza pe pc-ul la care placuta este conectat, scris in C. Pentru dezvoltare am folosit functii din windows.h, atat pentru citirea de pe portul serial, cat si pentru simularea keystroke-ului (pentru ca tot imi place sa fac teme la SO pe windows). Pentru simularea componentei hardware in dezvolatare am utilizat de asemenea un generator de porturi seriale virtuale (2).

(2) http://com0com.sourceforge.net

Ca medii de dezvltarea pentru ambele am folosit Windows 10, proiectele fiind construite in CLion.

Scurta descriere a algoritmului: Algoritmul implementat detecteaza contact prin intermediul bibliotecii CapacitiveSensor si transmite pe USART un singur caracter corespunzator. Programul de pe pc asculta pe portul serial aferent (COM7 in cazul meu) si citeste caracterul scris. Se face verificare validitatii caracterului, urmata de o mapare la un cod ASCII corespunzator actiunii si simularea keystroke-ului corespunzator. Aceasta mapare ofera flexibiliate programului, intrucat, prin schimbarea acestui vector static, pot adapta proiectul pentru orice joc/aplicatie (singura limitare este data de numarul maxim de input-uri date de componenta hardware).

Rezultate Obţinute

Functionalitatea obinuta iti permite sa te joci SuperMario Bros folosind un controller improvizat legat la pc.

Download

Bibliografie/Resurse

pm/prj2018/rmatei/78285.txt · Last modified: 2021/04/14 17:07 (external edit)
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