Volan Gaming
Introducere
O scurta prezentare a proiectului:
proiectul meu trebuie sa ofere posibilitatea folosirii unui volan DIY pentru jocuri si alte aplicatii;
este compatibil cu toate plaformele majore, Windows, Linux si MAC;
contine un volan cu unghi de rotire de 900 grade si 3 butoane customizabile;
acest volan sigur va fi util pasionatilor de jocuri pe buget;
Am ales acest proiect intrucat mi se pare util si fun, si usor de customizat.
Descriere generală
Circuitul este unul simplist, folosim 3 butoane legate la ground si la pinii digitali 2,3,4, care vor fi mapati in controller la aceleasi butoane virtuale 2,3,4. conectand un potentiometru la pinul analog A0 si la GND si 5V, putem masura rotatia potentiometrului, care este legat printr-u sistem de roti la un volan DIY.
Schema circuitului:
Hardware Design
Urmatoarele piese sunt necesare pentru proiectul acesta:
Software Design
Partea de Software implica scrierea unui driver compatibil cu standardele de pe piata.
Am plecat de la un proiect de pe Github ce este localizat in sectiunea de bibliografie, iar codul este alcatuit din o serie de fisiere .c/.h ce vor fi compilate ca HEX si incarcate pe firmware-ul placii. Placa nunmai contine firmware Arduino, ea a fost adusa in modul DFU si de acolo s-a incarcat acest cod AVR.
Codul este compilat cu ajutorul tool-ului MicroChip Studio, ce contine un compilator numit AVR-GCC (GNU Compiler Collection) si colectia de librarii AVR.
principalele functii implementate se afla in fisierul main.c, unde are loc citirea pinilor digitali si a pinului analog si maparea lor la butoanele/sliderele controllerului.
O parte importanta de software este prezentarea placii Atmega8U2 ca un microcontroller de jocuri pt calculator. aceasta se realizeaza prin stabilirea unui protocol de conexiune si de schimb cu calculatorul ce imita protocolul de la un controller PS3, iar implementarea se poate observa in fisierul usb_controller.c.
Pentru a putea fi vazut ca un controller, este necesara trimiterea de catre microprocesor a unor semnale HID (Human Interface Device). Aceasta functionalitate nu este disponibila pe o placa Arduino UNO, motiv pentru care am fost fortat sa suprascriu firmware ul cu cod AVR si nu am mai avut posibilitatea sa scriu cod Arduino.
Rezultate Obţinute
Aici se poate vedea o poza cu proiectul finalizat:

Aici se observa cum arata optiunile controllerului:
Concluzii
Download
Jurnal
Bibliografie/Resurse