Pip-Boy 3000

Autor: Menan Yasemin

Grupa: 336CC

Introducere

Proiectul presupune o implementare simplă a unui Pip-Boy 3000 din Fallout 3, unde jucătorul poate prin intermediul Pip-Boy-ului să acceseze informații despre starea personajului și inventarul personal, dar și informații despre joc precum hartă și quest-uri.

Astfel, proiectul simulează funcționalitățile Pip-Boy-ului folosind un display LCD ce permite utilizatorului să comute prin cele trei ferestre, la apăsarea unui buton, și să parcurgă conținutul acestora folosind un joystick.

Ideea a pornit de la interesul meu pentru jocuri, în special seria Fallout, și din dorința de a realiza un proiect mai special, la care să lucrez cu pasiune și să utilizez cunoștințele dobândite în cadrul laboratoarelor.

Proiectul ar putea fi util pentru cei care doresc să facă cosplay și au nevoie de Pip-Boy pentru a-l completa (cât timp pot realiza și carcasa).

Descriere generală

Conținutul Pip-Boy-ului:

  • Stats
    • Status
    • S.P.E.C.I.A.L.
    • Skills
    • Perks
    • General
  • Items
    • Weapons
    • Apparel
    • Aid
    • Misc
    • Ammo
  • Data
    • Local Map
    • World Map
    • Quests
    • Misc
    • Radio

La pornirea proiectului, LCD-ul o să afișeze Status, prima pagină din fereastra Stats, și o să se aprindă primul LED. Toate imaginile se găsesc în cardul SD și sunt accesate folosind cititorul de card SD.

Pentru a trece la fereastra următoare, se apasă pe buton, iar pe LCD o să apară prima pagină a acesteia, așa cum este specificat mai sus, și se aprinde LED-ul corespunzător.

Joystick-ul este folosit pentru a parcurge conținutul ferestrelor.

Buzzer-ul semnalizează când se schimbă imaginea afișată pe LCD.

Schemă bloc

Hardware Design

Listă de piese:

  • 1 x Arduino Uno
  • 1 x LCD SPI 2.8''
  • 1 x Cititor card SD
  • 1 x Joystick
  • 1 x Potențiometru
  • 3 x LED-uri
  • 1 x Buton
  • 1 x Buzzer

Schema electrică:

Software Design

Mediu de dezvoltare

Arduino IDE 1.8.13

Biblioteci

Funcții implementate

  • loop() - schimbă imaginea afișată dacă s-a apăsat pe buton și pornește buzzer-ul. Tot aici se verifică dacă a fost folosit joystick-ul.
  • pin_ISR() - rutina de tratare a întreruperii externe, folosește o metodă de debouncing pentru a detecta o singură apăsare pe buton. La fiecare apăsare se indică schimbarea imaginii afișate pe LCD.
  • show_stats() - afișează fereastra Stats, apelând funcția de desenat, și aprinde primul LED.
  • show_items() - afișează fereastra Items, apelând funcția de desenat, și aprinde al doilea LED.
  • show_data() - afișează fereastra Data, apelând funcția de desenat, și aprinde al treilea LED.
  • setup_ucg() - folosit la setup și loop pentru a seta/reseta LCD-ul.
  • setup_sd() - inițializează cititorul de card SD
  • bmpDraw() - desenează fișierul primit ca parametru, găsit în cardul SD, afișează informații despre fișier și desenează pixel cu pixel pe LCD.

Rezultate Obţinute

Proiectul:

La pornire, afișează fereastra Stats și se aprinde primul LED:

Apăsând pe buton, afișează Items:

La a doua apăsare afișează Data:

Concluzii

Afișarea unei imagini pe LCD a fost dificilă, întrucât singura bibliotecă compatibilă cu modulul folosit nu e una foarte cunoscută și nu are funcție de desenat fișiere BMP. A trebuit să adaptez după o sursă care folosește biblioteci Adafruit.

Am mai avut probleme cu cititorul de card SD, care din când în când refuză să detecteze cardul sau partiția FAT32.

Cu toate acestea, a fost interesant și am învățat foarte multe realizând acest proiect.

Download

Jurnal

20 Aprilie 2022:

  • Alegerea proiectului

5 Mai 2022:

  • Creare pagină pe wiki
  • Completare introducere, schemă bloc și listă de piese

22 Mai 2022:

  • Implementare cititor card SD (Arduino detectează cardul și poate citi fișierele)
  • Implementare LCD (afișează text)

25 Mai 2022:

  • Realizare funcție de afișare a imaginilor preluate din cardul SD pe LCD
  • LCD afișează imagini cu succes

27 Mai 2022:

  • Implementare buzzer și joystick
  • Realizare schemă electrică
  • Completare pagină de wiki

Bibliografie/Resurse

pm/prj2022/sgherman/pipboy.txt · Last modified: 2022/06/01 13:32 by yasemin.menan
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