- Apžvalga:
- Būtini komponentai:
- Grandinės paaiškinimas:
- Akselerometro veikimas:
- „Arduino“ programavimas:
- Programavimo apdorojimas:
- Testavimas:
Išplėstinė realybė ir virtualūs žaidimai tapo naujausia žaidimų industrijos tendencija. Klaviatūros / vairasvirtės ir pelės naudojimo kompiuteriniam žaidimui laikai praėjo. Dabar kiekvienoje žaidimų konsolėje yra virtualus valdiklis, kuris padeda mums žaisti žaidimą naudojant kūno judesius ir gestus. Tokiu būdu žaidimo patirtis labai išaugo ir vartotojas jaučiasi labiau įsitraukęs į žaidimą.
Šiame projekte pabandykime pasilinksminti mokydamiesi per projektą. Leiskite mums sukurti žaidimą (taip, jūs girdėjote, kaip aš ištaisiau, kad mes norime sukurti žaidimą) ir žaisti jį rankos judesiu. Kuriame klasikinį „ Ping Pong Ball“ žaidimą naudodami „Arduino“ ir „Accelerometer“.
Apžvalga:
Šiais laikais yra prieinama daugybė atvirojo kodo programinės įrangos, kuri atnešė daug laimės tokiems mėgėjams kaip mes, ir vienas iš jų yra apdorojimas. Naudodami šią JAVA pagrįstą programą galime sukurti savo programinę įrangą (.exe formatu) ir „Android“ programą (.apk failą). Taigi mes ketiname naudoti šią programinę įrangą savo žaidimui kurti. Mes anksčiau naudojome „Processing“ kurdami „Arduino“ pokalbių kambarį.
Aparatinės įrangos dalį sudarys „Arduino“, kuri atneš įvestį iš akselerometro, kad ją nuosekliai paduotų į mūsų kompiuterį / nešiojamąjį kompiuterį.
Taigi einam apsipirkti !!!!
Būtini komponentai:
- „Arduino“ (bet kuri versija ar modelis)
- Akselerometras
- Jungiamieji laidai
- Palūkanos (Lolz)
Akselerometras ir „Arduino Nano“
Grandinės paaiškinimas:
„ Arduino Ping Pong Ball“ žaidimų projekto grandinė neturi jokių sudėtingų ryšių. Aš naudoju „ Arduino Nano“ su akselerometru. Tačiau yra keletas dalykų, kuriuos reikia pasirūpinti, kaip nurodyta toliau:
1. Jūsų akselerometras negali valdyti 5 V, todėl visada prijunkite akselerometro Vcc prie savo 3,3 V „Arduino“ kaiščio.
2. Kiekvienas akselerometras kenčia nuo gravitacijos poveikio, su kuriuo reikia susidoroti programuojant (paprasčiausiai naudojant filtrą).
Atsižvelgdami į tai, pažvelkime į akselerometro veikimą ir jo naudojimą.
Akselerometro veikimas:
Pagreičio yra įtaisas, kuris gali konvertuoti pagreitį bet kuria kryptimi, kad jos atitinkamo kintamojo įtampos. Tai pasiekiama naudojant kondensatorius (žr. Paveikslėlį), nes judant „Accel“, jo viduje esantis kondensatorius, atsižvelgiant į judėjimą, taip pat pasikeis (žr. Vaizdą), nes talpa yra įvairi, taip pat galima gauti kintamą įtampą.
Taigi, kaip minėta aukščiau, kiekvienas akselerometras kenčia nuo gravitacijos efekto problemos. Nepriklausomai nuo to, kaip tiksliai sukalibruotas jutiklis (net ir „Apple“ telefonai „Accel“), jį paveiks gravitacija. Toliau pateikiamas išsamesnis šios problemos paaiškinimas.
Dabar „Arduino“ gravitacijos poveikį galime sumažinti naudodami paprastą filtrą. Šį filtrą sudarys dvi masyvai, vienas naudojamas mėginio reikšmėms saugoti iš jutiklio, kitas - mėginių reikšmėms rūšiuoti ir daugiausiai kartotinai reikšmei surasti. Įgyvendinkime šį algoritmą savo „Arduino“ ir paruoškime aparatinę įrangą.
„Arduino“ programavimas:
„Arduino“ programa pateikiama toliau skyriuje „Kodas“. Nėra jokių svarbių duomenų, kuriuos reikia keisti. Bet galbūt norėsite apsvarstyti šiuos dalykus:
Padidinkite imties dydį, jei „Accel“ vis tiek rodo atsitiktines reikšmes.
#define Samplesize 13 // filterSample number
Žaiskite naudodami 9600 perdavimo spartą, kad padidintumėte ryšio tarp „Arduino“ ir „Processing“ greitį. Tačiau būtinai pakeiskite juos programinėje įrangoje (programose).
negaliojanti sąranka () {Serial.begin (9600); }
Mano akselerometras X ašyje suteikia 193 kairiajame kairiajame kampe ir 280 dešiniajame dešiniajame kampe, išmatuokite juos savo „Accel“ ir atnaujinkite vertę.
toSend = žemėlapis (smoothData1, 193, 280, 0, 255);
Vertės susiejamos į vieną nuoseklaus ryšio duomenų baitą.
Toliau patikrinkite komentarus žemiau pateiktame kode, kad juos aiškiai suprastumėte.
Programavimo apdorojimas:
Apdorojimas yra atviro kodo programinė įranga, kurią menininkai naudoja kurdami grafiką. Ši programinė įranga naudojama programinei įrangai ir „Android“ programoms kurti. Tai gana lengva sukurti ir labai panaši į „Android Development IDE“. Taigi aš sutrumpinau paaiškinimą.
„ Ping Pong“ žaidimo apdorojimo kodas pateikiamas čia:
- Apdorojimo kodas „Arduino Ping Ball Game“
Dešiniuoju pelės mygtuku spustelėkite jį ir spustelėkite „Išsaugoti nuorodą kaip..“, kad atsisiųstumėte kodo failą. Tada atidarykite failą programinėje įrangoje „Apdorojimas“ ir spustelėkite mygtuką „Vykdyti“, kad galėtumėte žaisti žaidimą. Norėdami atidaryti *.pde failus, turite įdiegti „Processing“ programinę įrangą. Komentarų skiltis yra atvira užklausoms, taip pat patikrinkite programos komentarus, kad geriau juos suprastumėte.
Žemiau eilutės „void setup (“) funkcija „Kodo apdorojimas“ yra svarbi, nes ji nusprendžia, iš kurio prievado į duomenis.
port = new Serial (tai, Serial.list (), 9600); // Skaito 4-ąjį UOSTĄ esant 9600 baudos greičiui
Čia aš perskaičiau duomenis iš 4-ojo uosto iš savo „Arduino“.
Pavyzdžiui, jei turite COM COM COM COM COM
Tada aukščiau pateiktas kodas nuskaitys duomenis iš COM.
Testavimas:
Kadangi mūsų apdorojimo ir „Arduino“ eskizas yra paruoštas, tiesiog įkelkite žemiau pateiktą programą į „Arduino“ ir prijunkite „Arduino“ prie vartotojo kompiuterio kruopštaus programavimo kabelio ir paleiskite žaidimą paleisdami „Processing code“ failą (.pde). Viskas! Perkelkite akselerometrą ir žaiskite „ Ping Pong“ žaidimą. Vaizdo padės jums per visą projektą.
Supratus programą, galite sukurti daug panašių žaidimų ir žaisti juos naudodami „Arduino“. Be to, žaidimams gali būti pridedamos Y ir Z ašys.