Cuprins:

Consola Arduino VGA cu cinci jocuri: 4 pași
Consola Arduino VGA cu cinci jocuri: 4 pași

Video: Consola Arduino VGA cu cinci jocuri: 4 pași

Video: Consola Arduino VGA cu cinci jocuri: 4 pași
Video: 4 Amazing Arduino Games - DIY Game Console 2024, Noiembrie
Anonim
Image
Image
Consola Arduino VGA cu cinci jocuri
Consola Arduino VGA cu cinci jocuri
Consola Arduino VGA cu cinci jocuri
Consola Arduino VGA cu cinci jocuri

În Instructables-urile mele anterioare, am reprodus versiuni simplificate ale unora dintre cele mai populare jocuri arcade clasice, prin intermediul unui Arduino gol și a altor câteva componente. Mai târziu, mi-am alăturat cinci dintre ei într-o singură schiță. Aici voi arăta cum puteți construi o consolă simplă care să poată juca Pong, Breakout, Bomber, Tetris și o jucărie de desen inspirată din Etch-a-Sketch. Această consolă poate fi folosită și pentru a juca Snake și alte două jocuri scrise de alți autori: Bit Ninja de Sandro Maffiodo alias „Smaffer” și Stacker de Nikita Kurylev.

Caracteristica principală este generarea unui semnal VGA, datorită bibliotecii VGAx, astfel consola are nevoie de un monitor VGA. Scopul meu, ca de obicei, este să evit orice "componentă specială" pentru ao construi, nu aveți nevoie de niciun IC de sprijin sau scuturi! Singurele componente sunt două potențiometre, cinci butoane, câteva rezistențe și un conector DSUB15 (VGA). Un difuzor piezo este opțional. Puteți vedea cum arată aceste jocuri în imaginile din această pagină.

Biblioteca VGAx permite utilizarea a patru culori cu o rezoluție de 120 x 60 pixeli, nu mulți, dar suficient pentru această consolă de jocuri retro. Grafica este brută, dar, datorită utilizării potențiometrelor, jocurile rulează fără probleme. Sunt disponibile și efecte sonore simple.

Pasul 1: Cum să vă construiți propria consolă Arduino VGA

Cum să vă construiți propria consolă Arduino VGA
Cum să vă construiți propria consolă Arduino VGA
Cum să vă construiți propria consolă Arduino VGA
Cum să vă construiți propria consolă Arduino VGA

Mai întâi descărcați codurile ArduinoVGAgame.ino și / sau Snake.ino din partea de jos a acestei pagini și copiați-le în computerul dvs. într-un director cu același nume. Descărcați biblioteca VGAx de pe acest link de pe GitHub. Cel mai simplu mod este să îl copiați în subfolderul software Arduino numit „biblioteci”, pentru a fi recunoscut imediat.

IMPORTANT: această bibliotecă funcționează pentru Arduno IDE 1.6.4, dar nu este pe deplin compatibilă cu versiunile mai vechi sau mai noi.

Încărcați codul pe placa dvs. Arduino (am testat atât Uno, cât și Nano). Este normal un avertisment pentru memorie disponibilă. Dacă nu aveți alte erori, totul este în regulă și puteți începe imediat să vă construiți propria consolă.

Pentru aceasta aveți nevoie de:

  • un Arduino Uno Rev. 3 sau Arduino Nano 3.x (ATmega328)
  • un conector DSUB15, adică un conector VGA mamă sau un cablu VGA care trebuie tăiat.
  • rezistențe: 2 x 68 Ohm și 2 x 470 Ohm și 5 x 1 până la 2 kOhm
  • două potențiometre liniare de 10 kOhm (valori similare sunt prea bune)
  • cinci butoane
  • o bucată de cablu
  • una sau două cutii frumoase pentru a pune toate componentele.

Facultativ:

  • o placă de masă sau o placă de benzi
  • un difuzor piezo

Schema este raportată în partea de sus a acestui pas, împreună cu un exemplu de „consolă” terminată.

schema arată cum să conectați un buton și un potențiometru. Mai precis, trebuie să conectați cinci butoane la pinii 5, 10, 11, 12 și respectiv 13. Acțiunea efectuată de fiecare buton este descrisă în tabelul din dreapta sus în schemă. În partea stângă se arată cum să conectați un potențiometru (aveți nevoie de două potențiometre la pinii A1 și A2). Difuzorul trebuie să fie conectat la pinul analogic A0.

Am plasat placa Arduino cu conectorul VGA într-o cutie de lemn, care conține și primul potențiometru pentru jucători și patru butoane, în timp ce al doilea potențiometru pentru jucător și butonul său de pornire sunt într-o cutie separată și mai mică.

Dacă vă place această jucărie și decideți să o reproduceți, apreciez dacă scrieți un comentariu sau trimiteți o poză în secțiunea de comentarii de mai jos.

Pasul 2: Jocuri de la alți autori

Sandro Maffiodo a publicat recent jocul BitNinja. Youn poate găsi mai multe informații aici și descărca codul aici.

Pentru a utiliza consola mea, trebuie doar să remaptați butonul din codul său după cum urmează:

#define BTN_UP 11 (în loc de 13)

#define BTN_LEFT 10 (în loc de 12)

#define BTN_RIGHT 12 (în loc de 11)

Stacker, de la Nikita Kurylev, este disponibil aici. Mai multe informații aici.

Din nou, trebuie să remapați un buton, în diferite părți ale codului: doar înlocuiți digitalRead (2) cu digitalRead (13)

Pasul 3: Anexa 1: Mai multe detalii despre cum să construiți controlerele

Anexa 1: Mai multe detalii despre cum să construiți controlerele
Anexa 1: Mai multe detalii despre cum să construiți controlerele
Anexa 1: Mai multe detalii despre cum să construiți controlerele
Anexa 1: Mai multe detalii despre cum să construiți controlerele
Anexa 1: Mai multe detalii despre cum să construiți controlerele
Anexa 1: Mai multe detalii despre cum să construiți controlerele
Anexa 1: Mai multe detalii despre cum să construiți controlerele
Anexa 1: Mai multe detalii despre cum să construiți controlerele

Puteți realiza controlerul în mai multe moduri diferite, în funcție de materialul disponibil și de gustul dvs.

Îmi place să le realizez cu cutii de lemn (vezi pozele din această pagină). O cutie principală pentru Arduino, conectorul VGA și primele butoane pentru player și potenziometru; un al doilea (mai mic) unul doar pentru al doilea buton și roată (necesar pentru Pong și jucăria de desen). O altă posibilitate este de a pune totul într-o singură cutie mai mare.

Mai întâi recomand să conectez portul VGA. În prima și a doua imagine puteți vedea câteva detalii: rețineți cele două rezistențe de 470 Ohm pentru roșu și verde conectate la pinii 6 și respectiv 7 și doi 68 Ohm la pinii 3 și 9 pentru semnalul de sincronizare orizontală și verticală.

Puteți alege diferite combinații de culori în funcție de pinii pe care îi conectați la conectorul VGA DSUB15, pinii 1, 2 și 3 reprezintă roșu, verde, albastru (RGB). Am conectat pinii 1 și 2, astfel am următoarea combinație de culori: (0, 0) = negru; (1, 0) = roșu; (0, 1) = verde; (1, 1) = galben.

Pentru toate posibilitățile diferite, vă sugerez să citiți detaliile în pagina de unde descărcați bibliotecile VGAx.

De îndată ce conectorul VGA este gata, puteți pregăti toate celelalte cabluri pentru butoane, roți și difuzor (a se vedea imaginea 2).

Acum, puneți totul împreună: amintiți-vă că fiecare pin al butonului trebuie să fie conectat la masă printr-un rezistor de 1 sau 2 kOhm, altfel, când butonul este deschis, starea pinului poate fi nedefinită. Aceasta înseamnă că, dacă pinul este lăsat deconectat, puteți avea o tensiune aleatorie (statică) pe acesta care o poate activa. Vedeți pentru mai multe detalii schema din al doilea pas al acestui instructable.

Ultimul pas este să rezolvi totul în loc. Am folosit pistolul cu lipici fierbinte, dar puteți folosi metoda preferată.

Pasul 4: Anexa 2: Câteva considerații despre limitele de memorie

Este uimitor faptul că un Arduino simplu este capabil să genereze un semnal VGA și toate aceste jocuri împreună. Adevăratul gât de sticlă este lipsa SRAM. Microcontrolerul AVR are doar 2048 de octeți disponibili pentru a stoca și manipula variabilele, iar biblioteca VGAx stochează variabilele de ecran într-un framebuffer de 120x60 pixeli unde fiecare pixel are nevoie de 2 biți (4 culori), pentru un total de 1800 de octeți. Aceasta înseamnă că au rămas doar 248 de octeți pentru variabilele de schiță. Mai mult, din experiența mea, ar trebui să lăsați cel puțin 100 de octeți liberi pentru a evita instabilitățile. Folosind peste 1950 octeți de memorie dinamică, microcontrolerul începe să prezinte un comportament ciudat și imprevizibil.

Aceasta înseamnă că toate variabilele trebuie împărtășite între diferitele jocuri, iar acest lucru face codul destul de necitit și greu de depanat. Nu este doar o problemă să „adăugați un joc nou” la schița anterioară, ci tot codul trebuie să fie profund modificat și optimizat.

În plus, a trebuit să folosesc formatul variabil minim posibil: de exemplu, pentru toate coordonatele trebuia să folosesc „octet” în loc de „int” sau, în alte cazuri, a trebuit să prefer „int” în loc de „float”.

În cele din urmă, recunoașterea mea se îndreaptă către Sandro Maffiodo, alias Smaffer, creatorul bibliotecii VGAx și al minunatului joc BitNinja. Fără această bibliotecă, acest proiect nu ar fi putut fi realizat.

Mulțumim și lui Nikita Kurylev pentru jocul simplu, dar amuzant Stacker.

Recomandat: