Cuprins:

Controler Arcade Lapcade: 6 pași (cu imagini)
Controler Arcade Lapcade: 6 pași (cu imagini)

Video: Controler Arcade Lapcade: 6 pași (cu imagini)

Video: Controler Arcade Lapcade: 6 pași (cu imagini)
Video: Razer Kitsune | All-Button Optical Arcade Controller for PS5 and PC 2024, Septembrie
Anonim
Lapcade Arcade Controller
Lapcade Arcade Controller

Nu prea sunt un jucător. Când eram copil, eram mai interesat să văd cum funcționează, decât eu în rolul lor. Pot conta pe o mână câte jocuri arcade am jucat în mod regulat. Acestea fiind spuse, ar fi ușor pentru cineva să găsească ciudat că mi-aș lua timp să construiesc un controler arcade. Cu toate acestea, este unul dintre proiectele mele preferate până în prezent. Pe lângă faptul că este o provocare pentru proiectare, codificare și construire, este și un memento al unei ere trecute a butoanelor și joystick-urilor robuste.

S-au dus zilele Arcade, dar poți avea încă senzația unui joc arcade clasic chiar în camera de zi. Deci, aici vă prezint Lapcade. Dacă ești ca mine și îți place mai mult să construiești lucruri decât să te joci, s-ar putea să te bucuri de această construcție. Dacă aveți întrebări sau sugestii care nu sunt incluse în secțiunea „idei pentru versiunea 2” de mai jos, vă rugăm să lăsați un comentariu.

Pasul 1: Prezentare generală

Prezentare generală
Prezentare generală
Prezentare generală
Prezentare generală

Ce este acest lucru?

Mai întâi, vă rugăm să rețineți ce nu este Lapcade:

  • Nu este o consolă de jocuri.
  • Nu are jocuri și nici nu are capacitatea de a încărca și juca jocuri.
  • Nu se conectează la televizor sau monitor.

Lapcade este o tastatură Bluetooth. Nimic mai mult, nimic mai puțin.

Aduc acest lucru în discuție pentru că a existat o oarecare confuzie în jurul acestui punct. Am avut multe întrebări despre ce jocuri pot fi încărcate pe ea și ce fel de interfață video folosește - nu poate și nu! Depinde în totalitate de computerul la care îl conectați și, în această privință, cerul este limita. Dacă dispozitivul dvs. poate accepta o tastatură Bluetooth, atunci Lapcade ar trebui să funcționeze cu ea. Nu l-am încercat, dar am văzut și alte proiecte care au folosit cheia EZ (descrisă mai jos) conectată la dispozitive portabile. Deci, teoretic, puteți conecta acest dispozitiv la orice computer care rulează Windows, Linux, ChromeOS, MAC etc., precum și Raspberry Pi, Android, iOS și altele care acceptă Bluetooth v2.1. Cu toate acestea, poate fi necesară modificarea codurilor de taste.

Pre-versiunea 1

Inițial, am găsit un produs numit Adafruit Bluefruit EZ-Key bluetooth HID (dispozitiv de interfață umană - gândiți tastatură) care îmi va permite să conectez butoane familiare clicky și să trimit apăsări de tastă ca o tastatură. Când am construit pentru prima dată un controler bazat pe cheia EZ, am urmat un set de instrucțiuni pentru a construi un controler simplu și direct și a funcționat excelent. Am folosit controlerul într-un cadru greu de lemn fără probleme timp de câteva luni. Cu toate acestea, sunteți limitat la 12 intrări și nu există nicio modalitate de a schimba codul cheie transmis de dispozitiv fără a reprograma pinii de intrare EZ-Key.

În timp ce îmi foloseam centrul media Kodi pentru a afișa jocurile instalate, am vrut să trec de la controlul centrului media la joc fără a fi nevoie să folosesc mai multe controlere / telecomenzi. De asemenea, am vrut ca dispozitivul să se regleze, astfel încât fiul meu stângaci să-l poată folosi după cum i-a plăcut.

De asemenea, foloseam 4 baterii AA pentru a alimenta dispozitivul și din cutie nu părea să aibă un mod de consum redus. Bateriile ar fi aspirate într-o zi sau două chiar dacă nu ar fi utilizate.

Așadar, la îndemnul unui prieten de-al meu, am decis să construiesc o versiune programabilă a aceluiași controler care avea schimbări rapide de mod, mi-ar permite să folosesc același dispozitiv pentru a controla mai multe aplicații, putând fi „răsturnat” pentru mâna stângă folosesc și se afla într-o carcasă pentru laptop care era cu mult mai mică decât soluția mea actuală de 10 lb.

Era timpul pentru un upgrade.

Versiunea 1 Obiective DesignProject:

  • Flexibil
  • Reîncărcabilă
  • Pentru stângaci și dreptaci
  • Fără corzi
  • Ușoare

Am vrut ca acest nou design să fie flexibil. Comenzile trebuie să poată fi schimbate din mers, fără a fi nevoie să reprogramați componentele de fiecare dată când trebuie efectuat un test sau o modificare. Aceasta însemna că trebuie să existe o interfață pe controler pentru a alege „modurile” de funcționare. Fiecare poziție a butonului și a joystick-ului ar trebui să aibă asociate coduri-cheie diferite. Aceleași controale ar trebui, de asemenea, să fie utilizate pentru a selecta și diferitele moduri.

EZ-Key nu a fost programabil direct în timp real, astfel încât următoarea soluție ar fi utilizarea unui controler precum un Arduino pentru a gestiona funcționalitatea. Tasta EZ va fi utilizată exclusiv pentru a transmite codurile cheie către computer prin Bluetooth. Am ales Arduino Pro Mini datorită compatibilității sale directe cu UNO (cu care am avut deja experiență) și datorită dimensiunii sale compacte.

Nu am vrut să mă ocup de baterii cu această cutie nouă, așa cum am făcut-o cu predecesorul Lapcade, așa că am ales să folosesc o baterie reîncărcabilă Lithium Polymer și un încărcător / placă de alimentare. Aceasta însemna că aș putea folosi doar un încărcător USB standard. De asemenea, a însemnat că nu va trebui să deschid carcasa de fiecare dată când bateriile au murit. Tasta EZ și PowerBoost 500C au ambele indicatoare care trebuiau transferate în partea superioară a controlerului pentru starea de asociere și indicarea bateriei descărcate. Am adăugat câteva LED-uri la design, astfel încât să pot reflecta acești indicatori de stare la îndemână utilizatorului în timpul funcționării.

Pe măsură ce testarea designului meu s-a maturizat, am descoperit că mai multe dintre ideile mele originale nu erau așa cum mă așteptasem. De exemplu, indicatorul LBO de pe PowerBoost nu funcționează așa cum era de așteptat atunci când este legat de un microcontroler. Acesta va permite curentului să treacă prin solul comun de la baterie în timp ce dispozitivul este „oprit” sau dezactivat, lumina LBO se va aprinde și va rămâne aprinsă. Alții din forumul Adafruit au întâlnit și această problemă și au oferit o soluție mai bună în eșantionarea tensiunii bateriei direct pe o intrare analogică. Odată ce tensiunea scade la un anumit nivel, este timpul să anunțați utilizatorul că bateria este pe cale să se oprească.

Pasul 2: De ce aveți nevoie

Lista pieselor electronice

Aceasta a ajuns să devină o construcție destul de complicată. Nu trebuie să utilizați aceleași părți pe care le-am făcut, dar dacă utilizați o piesă de schimb, asigurați-vă că înțelegeți cum va interacționa cu celelalte circuite și cod. Deși sunt fericit să ofer sugestii, nu pot să nu depanez codul sau problemele pentru diferite configurații.

1 Arduino Pro Mini 5V - Îmi place Pro, deoarece este compact. Puteți utiliza orice placă compatibilă UN pin / interrupt cu codul furnizat

1 Adafruit Bluefruit EZ-Key bluetooth HID - Așa cum s-a descris mai sus, acesta este bluetooth HID care permite transmiterea codurilor de taste către computerul gazdă.

1 MCP23017 - i2c 16 expansiune port intrare / ieșire - Acest cip este utilizat pentru a adăuga încă 16 intrări la Arduino prin protocolul de comunicații I2C

1 încărcător Adafruit PowerBoost 500 + - Aceasta este placa de control al puterii pentru alimentarea Lapcade și încărcarea LiPo

1 baterie Litium Polymer (am folosit 2500mAh, dar puteți folosi o capacitate mai mare / mai mică)

1 Joystick Arcade cu 8 căi - Vă rugăm să consultați secțiunea „gânduri pentru versiunea 2” de mai jos referitoare la joystick-uri

9 butoane Arcade Push - Culori și serigrafii asortate

2 butoane momentane iluminate - am folosit aceste 2 butoane pentru butoanele Centru 4 și 5 și sunt de la Adafruit: Roșu (Centru 4), Albastru (Centru 5)

1 Buton de blocare iluminat Am folosit acest lucru pentru butonul de alimentare de la Adafruit: Verde

2 LED-uri utilizate pentru referențierea semnalului de asociere și a bateriei descărcate. Am folosit două părți RadioShack 2760270 și 2760271

1 ecran LCD de 16 x 2

1 Rucsac I2C / SPI LCD - Folosit pentru comunicarea I2C către afișajul 16x2.

1 cablu prelungitor USB montat pe panou - Folosit pentru a extinde conectorul USB micro-b al PowerBoost la peretele dulapului.

1 Adafruit Perma-Proto PCB de dimensiuni mari - Nu este necesar, dar facilitează montarea permanentă.

5 Rezistoare de 220 Ohm

7 Rezistențe 1K Ohm

2 rezistențe de 2,2K Ohm

1 Rezistor de 4.7K Ohm

18 # 10 Conectori Spade Femei - Pentru conectarea la contactele butonului arcade. Recomandat la lipire, deoarece butoanele se vor uza în cele din urmă.

Sârmă de conectare cu calibru 22 - Am folosit mai degrabă sârmă de conectare solidă decât eșuată pentru a face o gestionare independentă a firelor. Acest lucru a fost pur și simplu în scop demonstrativ și nu este recomandat deoarece firul solid este fragil și predispus la rupere.

Următoarele articole nu sunt necesare, dar vor simplifica montarea și, în cazul în care veți prăji o componentă, va facilita înlocuirea:

  • Soclu IC - pentru jetoane de 0,3 "cu 28 de pini
  • Soclu IC - pentru jetoane de 28 pini 0.6"
  • Antet feminin de 0,1 "(cel puțin 1 antet cu 36 de pini)

Piese dulap:

  • 3 panouri de mesteacan de 12 x 24 1/8 inch
  • 1 panou acrilic transparent de 12 x 24 1/8 inch

Fișiere:

  • Lapcade V1.xlsx - Foaia de calcul menționată mai jos, care are conexiunile de circuit.
  • LapcadeV1-code.zip - Fișier zip care conține codul Arduino scris pentru acest proiect.
  • Lapcade_v1.zip - Fișier zip care conține desenele svg pentru dulap.
  • LapcadeV1-Circuit_Diagram_Large.zip - Fișier zip care conține o versiune de înaltă rezoluție a schemei de circuite fritzing prezentată mai jos.

Link-uri către mai multe resurse:

  • Documentația Adafruit Bluefruit EZ-Key
  • Documentație Adafruit PowerBoost 500 +
  • Documentație pentru rucsac LCD I2C / SPI
  • Documentație MCP23017 I2C Port Extender
  • Biblioteca Adafruit MCP23017 Arduino

Pasul 3: Asamblare - Cabinetul

Adunare - Cabinetul
Adunare - Cabinetul
Adunare - Cabinetul
Adunare - Cabinetul
Adunare - Cabinetul
Adunare - Cabinetul
Adunare - Cabinetul
Adunare - Cabinetul

Am vrut să am o cutie foarte ușoară, care ar putea, de asemenea, să ia o bătaie. Fără a deveni prea exotic cu materialele, ușor este egal cu subțire și subțire este de obicei egal cu fragil. Utilizatorul principal al Lapcade ar fi probabil tânărul meu fiu căruia îi place să „apese” butoanele și să „navigheze” joystick-ul cu entuziasm extrem. Deși este bun să nu renunțe la lucruri, a reușit să uzeze microîntreruptoarele industriale într-un singur joystick în câteva luni.

Pentru a depăși această problemă și având în vedere că Lapcade are o lățime de 20 , designul meu a fost adăugat în două nervuri verticale care asigură părțile superioare și stânga și dreapta. cutia a devenit și mai durabilă. După ce am primit materialele tăiate, am fixat inițial toate panourile împreună pentru a mă asigura că funcționează. Le-am șlefuit ușor și am praf cu aer. Am folosit lipici pentru lemn pentru a atașa piesele împreună.

Cărțile din fotografiile de mai jos au fost plasate pentru a pune presiune pe bucățile proaspăt lipite până când s-au fixat. Odată ce lipiciul s-a vindecat, am șlefuit netezit marginile. Designul meu a compensat intenționat panourile, astfel încât acestea să iasă puțin la colțuri. Acest lucru mi-ar permite să rotunjesc colțurile în timpul șlefuirii fără a intra prea mult în articulație.

După curățarea suprafețelor, am aplicat apoi mai multe straturi de poliuretan - permițând vindecarea între straturi. Rezultatul a fost o cutie ușoară din lemn, cu un capac de fund acrilic. Inițial îmi dorisem o cutie complet clară, dar când mi-a trimis piesele de „test” de mesteacăn, m-am răzgândit imediat. Nu a fost doar mai ușor, a fost o revenire frumoasă la ideea jocurilor de cabinet. Fișierele svg sunt mai jos.

Vă rugăm să rețineți: Acesta este un desen cu mai multe straturi și fiecare strat reprezintă un set de tăieturi pe o singură foaie de material. Când trimiteți o imprimare către tăietor, asigurați-vă că toate celelalte straturi sunt ascunse înainte de tăiere.

O altă notă: Când am desenat zona pentru afișajul LCD, am folosit un afișaj pe care îl aveam la îndemână pentru măsurători. Între timp când am compus desenul și am montat ulterior piesele din carcasă, am folosit LCD-ul original într-un alt proiect și am comandat o înlocuire. După cum se dovedește, găurile de montare pentru a doua au fost ușor diferite de cele originale și au fost înfășurate, nu aliniate. Așadar, aveți grijă înainte de a tăia materialul pentru a verifica dacă piesele pe care le aveți se potrivesc cu găurile din desen.

O a treia notă: nu am inclus un decupaj pentru cablul de încărcare USB în desenul original pur și simplu pentru că nu eram sigur unde doream să-l pun, astfel încât să nu interfereze cu utilizarea. Mai târziu am tăiat găurile pentru aceasta pe partea stângă foarte aproape de locul în care vedeți cuvântul „Lapcade” în imaginile de mai jos. Versiunea 2 va avea portul de încărcare într-o poziție diferită.:)

Pasul 4: Asamblare - Electronică

Asamblare - Electronică
Asamblare - Electronică
Asamblare - Electronică
Asamblare - Electronică
Asamblare - Electronică
Asamblare - Electronică
Asamblare - Electronică
Asamblare - Electronică

Mai întâi să aruncăm o privire la schema de cablare prezentată mai sus.

Primul lucru de remarcat aici este faptul că șinele de alimentare și de sol ale panoului de control. Șinele cu linia albastră sunt împământate (-), iar șinele cu linia roșie sunt de putere (+). Acest lucru este standard, dar o notez, deoarece linia comună a joystick-ului (fir negru) este conectată la alimentare și nu la masă. În Fritzing am folosit mai degrabă culoarea firului joystick-ului decât culoarea convențională și m-am gândit că ar putea provoca o oarecare confuzie - deci cel mai bine este să scapi de asta.

Conexiuni componente

Mai degrabă decât să încerc să menționez fiecare conexiune într-o formă lungă aici (pinul analogic Arduino 0 trece printr-o rezistență de 220 ohmi la pinul PowerBoost Bat), am creat o foaie de calcul care conține toate conexiunile din punctul de vedere al componentei. Deci, în fila Arduino a foii de calcul, veți vedea APM A0 -> 2.2K OHM -> PB Bat și în fila PowerBoost veți vedea PB BAT -> 2.2K OHM -> APM A0. Vă rugăm să consultați secțiunea de resurse de mai jos pentru toate fișierele asociate acestui proiect.

O altă notă despre foaia de calcul este că unele dispozitive prezintă două coloane de conexiune. Aceasta este pentru a afișa mai multe conexiuni la un pin. De exemplu, fiecare dintre conexiunile joystick-ului, cu excepția firului comun, folosește un rezistor de tragere pentru a se asigura că extensorul de port primește un semnal solid ridicat sau scăzut. Pentru a arăta acest lucru pentru Joystick 2, veți vedea două coloane pentru conectare, una fiind pentru firul joystick-ului la pinul MCP 21 și cealaltă pentru o conexiune de la pinul 21 printr-un rezistor la masă. Sunt sigur că există modalități mai bune de a documenta acest lucru, dar mă tem că ești blocat cu modalitățile mele de a face lucrurile în acest sens.:)

Fiecare dintre butoanele arcade are un contact comun (com), normal deschis (nu) și normal închis (nc). Pentru fiecare dintre aceste butoane, folosesc conexiuni com și nc.

Pasul 5: Cod

Cod
Cod

În primul rând, trebuie să acord creditul acolo unde trebuie. M-am bazat foarte mult pe următorul articol pentru a coda Lapcade:

learn.adafruit.com/convert-your-model-m-keyboard-to-bluetooth-with-bluefruit-ez-key-hid Mulțumiri speciale lui Benjamin Gould pentru un proiect bine scris și documentat!

Deci, în centrul acestui proiect se află o tastatură. Din punct de vedere al computerului, Lapcade este pur și simplu o tastatură conectată prin bluetooth, ceea ce la EZ-Key este atât de bun. Este nevoie de protocoalele, calendarele și codurile Bluetooth complicate și le încapsulează, astfel încât tot ce trebuie să fac cu arduino este să-i trimit coduri de taste. Pentru a face acest lucru, am folosit hărțile de cod din proiectul de mai sus și propriile mele matrici pentru a crea moduri operaționale. Fiecare mod schimbă ceea ce fac aceleași butoane pe Lapcade și ceea ce este trimis la computer. Există trei moduri operaționale „încorporate” și toate modurile după acestea sunt moduri de aplicație.

Moduri operaționale

Următorul rezumă modurile operaționale ale Lapcade:

  1. Pornire - Acest mod verifică conectivitatea cu computerul și setează variabilele de pornire. Dacă cheia EZ nu este asociată cu un computer, aceasta se schimbă în modul de asociere
  2. Asociere - În acest mod, tasta EZ așteaptă să fie asociată cu un computer.
  3. Selectare mod - Acest mod permite utilizatorului să selecteze ce mod de aplicație să utilizeze. În acest mod nu sunt trimise coduri de taste la computer. Există, de asemenea, selecții de mod rapid bazate pe modul de aplicație anterior. De exemplu, apăsând modul și apoi butonul playerului doi în modul Mame player 1 pur și simplu comută modul fără a fi nevoie să căutați și să selectați Mame Player 2 pe afișaj.

Moduri de aplicare

Modurile de aplicație sunt folosite pentru a trimite coduri de taste corespunzătoare către computer în funcție de aplicația în care se află utilizatorul. De exemplu, în modul Kodi, tasta de acțiune 2 trimite „P” care este pauză. În Mame, același buton trimite tasta Alt din stânga. Dacă vreți să utilizați controlerul pentru a juca Minecraft pentru PC, atunci tot ce ar trebui făcut este să adăugați hărțile matrice corespunzătoare.

Fiecare aplicație trebuie definită în 4 matrice de date.

  • mode - Această matrice conține textul care va fi prezentat pe ecran pentru fiecare mod. Pentru a utiliza a doua linie a afișajului, pur și simplu așezați un ~ în matrice ca o întrerupere de linie.
  • keyModes [14] - Această matrice conține codurile de taste trimise către PC. Fiecare linie de 14 elemente reprezintă butoane individuale pentru maparea codurilor de taste.
  • keyModifiers [14] - Această matrice conține modificatorii codului cheie pentru fiecare apăsare de tastă, cum ar fi menținerea apăsată a tastei Shift.
  • quickMode [3] - Această matrice conține tiparul de selecție a modului rapid pentru modul curent.

Operatie de baza

Când sistemul este pornit, acesta intră în modul de pornire, unde starea conexiunii Bluetooth este verificată și afișată utilizatorului. Arduino primește starea EZ-Key din numărarea și temporizarea impulsurilor de la pinul L1 al EZ-Key. Există patru sub-stări pentru modul de pornire:

  • Asociere - EZ-Key este în modul de asociere activ, așteptând atașarea la un dispozitiv.
  • Asociat, dar neconectat - Cheia EZ a fost asociată anterior, dar nu este conectată în prezent la dispozitivul gazdă.
  • Asociat și conectat - EZ-Key este asociat și conexiunea a fost stabilită cu gazda. În acest moment, sistemul va trece la Selectarea modului.
  • Stare necunoscută - Tasta EZ returnează un cod necunoscut sau există o interferență de semnal care produce un model de semnal necunoscut. Sistemul va reține și va notifica utilizatorul. Trebuie să reporniți dacă apare acest lucru.

Dacă sistemul este asociat, dar nu se poate conecta la computer, sistemul va rămâne în starea de conectare în modul de pornire. Dacă utilizatorul ține apăsat butonul de evacuare în timp ce pornește dispozitivul, va ignora verificarea conexiunii Bluetooth și va trece la Selectarea modului.

Dacă sistemul nu a fost asociat anterior, atunci modul de pornire va fi urmat de modul de asociere. În această stare, sistemul va transmite că este disponibil pentru împerechere. Odată ce este descoperit și atașat de o gazdă, acesta va trece la Selectarea modului. Dispozitivul poate fi despărțit în Selectare mod apăsând butonul Acțiune 1.

În Selectarea modului, acțiunile joystick-ului în sus și în jos vă vor deplasa prin modurile de aplicație disponibile pe ecranul LCD. Pentru a selecta unul dintre moduri, apăsați butonul Enter (centru 5).

Odată ajuns într-un mod de aplicație, fiecare dintre butoane și joystick va trimite coduri de taste pentru hărțile de taste specificate în cele patru tablouri, așa cum este descris mai sus.

Moduri rapide

După ce a fost selectat un mod de aplicație, este setată definirea modului rapid. Pur și simplu, Modurile rapide sunt Modurile de aplicație selectabile de primele trei butoane centrale (Centrul 1-3). Aceste trei butoane corespund elementului matricei din matrice.

De exemplu, în configurația curentă, atunci când se utilizează Mame în modul player 1 (modul 4 sau al cincilea mod definit), apoi apăsând butonul de mod și apoi butonul de două jucători încarcă elementul matricei rapid [4] [1] (Arduino folosește 0 indexare matrice de bază) care este 5. Sistemul trece apoi la Modul aplicației 5 care este Mame, player 2.

Pasul 6: Idei pentru versiunea 2

Afișare buton - Cred că nu puteți planifica totul, dar există o idee de proiectare pe care mi-aș dori să o am mai devreme pentru versiunea unu - panouri LCD cu butoane individuale. A devenit clar foarte repede după construire că doar cunoașterea modului în care vă aflați nu înseamnă că vă amintiți ce face fiecare buton - mai ales după ce v-ați îndepărtat de acesta pentru câteva zile sau luni. Mi-aș dori cu adevărat să fi adăugat un fel de afișaj mic pe sau deasupra fiecărui buton care să arate care este acțiunea sa actuală. Acesta este în partea de sus a listei mele pentru versiunea 2.

4-Way vs 8-Way Joystick - Un alt lucru care a devenit clar odată ce am început să folosesc joystick-ul a fost că jocurile mai vechi nu erau menite să folosească joystick-uri cu 8 căi. Cazul este pac-man. De când am construit acest controler, am constatat că există joystick-uri care pot fi comutate mecanic de la 4 căi la 8 căi. Da, acesta este pe listă și, dacă intenționați să jucați jocuri arcade clasice, treceți la unul care poate fi modificat. Bineînțeles, asigurați-vă că țineți cont de schimbările de cablare și programare pe baza joystick-ului cu care încheiați. Iată câțiva furnizori de comenzi arcade clasice:

  • https://www.ultimarc.com/controls.html
  • https://groovygamegear.com/webstore/index.php?main…

Butoane "Flipper" din partea dreaptă și stângă - Versiunea 2 va adăuga cu siguranță câte un buton fiecare în partea stângă și dreapta a dulapului. O posibilă utilizare va fi pentru flipperii.

Alte controale - mă uit la viabilitatea adăugării altor controale comune, cum ar fi un trackball și / sau un spinner la următoarea versiune. Deoarece EZ-Key este capabilă să transmită coordonatele mouse-ului, acest lucru nu ar trebui să fie prea dificil.

Programare la bord - următoarea versiune trebuie să aibă capacitatea de a adăuga noi configurații fără a deschide carcasa. Am vrut să adaug acest lucru la versiunea 1, dar a necesitat mai mult timp și resurse decât aveam.

Concurs wireless
Concurs wireless
Concurs wireless
Concurs wireless

Premiul II la Concursul Wireless

Recomandat: