- Reikalavimai programinei ir aparatinei įrangai:
- Koncepcija už:
- Grandinės schema:
- „Arduino“ programa:
- Darbas:
Viskas prasidėjo nuo mažų tamsių amžių žaidimų, vadinamų „Mario“, nuo tada, kai buvo mažas mažas vaikinas, šokinėjantis antis, kad išgelbėtų mano princesę, iki tol, kol jis buvo vyriškas gražus princas, klajojantis Persijoje (Persijos princas), kovojantis prieš tamsą. norėdamas išgelbėti savo pasaulį, buvau puikus žaidimų vaizdo žaidimų gerbėjas ir užaugau juos žaisdamas. Bet jie kartais nuobodžiauja, o aš jaučiuosi mažiau įsitraukęs į tai. Šiandien pažangios žaidimų konsolės suteikia galimybę virtualiai žaisti ir padeda mums pajusti žaidimą daug geriau nei klaviatūra ar pelė.
Būdamas „Arduino“ entuziastu, pavargau žaisti garsųjį žaidimą „Angry Birds“, naudodamas klaviatūrą ir pelę, ir nusprendžiau sukurti savo žaidimų valdiklį naudodamas „Flex Sensor“ ir Potenciometrą. Patraukus lankstumo jutiklį, katapultoje esantis paukštis taip pat bus ištrauktas, o potenciometru galite nustatyti kryptį, kuria jis turėtų būti paleistas. Tada atleidus lankstumo jutiklį paukštis bus paleistas. Man tai labai patiko daryti, taigi, jei ketinate sukurti kažką labai panašaus, ši pamoka bus naudinga. Ši pamoka taip pat bus naudinga valdant pelės žymeklį naudojant potenciometrą.
Reikalavimai programinei ir aparatinei įrangai:
Programinė įranga:
- „Arduino IDE“
- Apdorojama IDE
- „Piktų paukščių“ žaidimas kompiuteriu
Techninė įranga:
- „Arduino“ (bet kokia versija)
- Potenciometras
- „Flex Sensor“
- 47K omų rezistorius
- Laidų sujungimas
- Bandomoji Lenta
Koncepcija už:
„ Arduino“ plokštė nuskaito vertes iš potenciometro ir „Flex Senor“ ir per įprastą „ Serial.write“) funkciją per USB COM prievadą perduoda jas nešiojamam kompiuteriui / asmeniniam kompiuteriui. Tada mes perskaitėme šią informaciją naudodami „Processing“ ir valdome pelės žymeklį naudodami „Java“ robotų klasę, kurią palaiko IDE apdorojimas. Mes užprogramavome IDE apdorojimą taip, kad, kai „Flex“ jutiklis bus ištrauktas, bus atliekamas pelės paspaudimas ir pagal tai, kiek jis bus ištrauktas, pelės žymeklis judės X kryptimi. Tada, remdamiesi potenciometro verte, mes judėsime pelės žymekliu Y kryptimi, tokiu būdu mes galėsime nustatyti paukščio paleidimo kryptį.
Grandinės schema:
Paprasta paukščio žaidimo grandinė naudojant „Flex Sensor“ ir potenciometrą yra lengva.
Mes paprasčiausiai prijungėme potenciometrą ir lankstų jutiklį prie „Arduino“ analoginių įėjimų (A0, A1). „Flex“ jutiklio išvestis taip pat traukiama žemyn naudojant 47K pasipriešinimo varžą.
Galite tiesiogiai prijungti jį ant duonos lentos arba lituoti prie „Perf“ lentos ir surinkti ant pirštinių ar pan., Kad būtų kūrybiškiau. Aš tiesiog naudoju duonos lentą savo ryšiams atlikti, kaip parodyta žemiau:
„Arduino“ programa:
Visas „Arduino“ kodas pateikiamas mokymo programos pabaigoje. Toliau paaiškinta keletas svarbių eilučių.
Mes inicijuojame programą, kad ji veiktų su 9600 baudos greičiu, ir pradedame skaityti „Flex“ jutiklio ir potenciometro reikšmes. Kaip žinome, serial.write () funkcija vienu metu gali siųsti tik vieną baitą duomenų. Kadangi vienas baitas yra 8 bitai ir 2 ^ 8 = 256. Galėsime siųsti reikšmes nuo 0 iki 256. Taigi „Flex“ jutiklio išvesties ir potenciometro išvesties reikšmes turime suspausti nuo 0 iki 256.
Norėdami tai padaryti, mes naudojame žemėlapio () funkciją „Arduino“. Visos lanksčiojo jutiklio vertės yra konvertuojamos iš 5 į 100, taigi, kai mes sulenkime jutiklį, jis padidės nuo 5, o atleistas - atgal į 5. Norėdami paminėti pelės paspaudimus, naudojamos 1 ir 0 vertės. Kai siunčiama 1, pelė nuspaudžiama ir, kai nusiųsta 0, pelė atleidžiama.
jei (FlexValue> = 65 && FlexValue <= 120) // mano lankstumo jutiklis kinta nuo 65 iki 120, jūsų gali būti skirtingi {FlexValue = map (FlexValue, 120,65,0,100); // remiantis lenkimu, konvertuokite į 0 į 100, jei (FlexValue> = 5) // 1 ir 0 naudojami pelės paspaudimui, taigi pradėkite nuo 5 {Mclick = true; Serial.write (1); // 1 siunčiamas pelės kairiuoju pelės klavišu spustelėti Serial.write (FlexValue); // „Flex value“ yra atstumas, perkeliantis pelę X kryptimi} else {Mclick = false; Serial.write (0);}}
Panašiai, kai potenciometras yra konvertuojamas iš 101 į 200, kad atliktų žemėlapio () funkciją, ir siunčiamas į nešiojamųjų kompiuterių COM prievadą, kuris pareikš ieškinį dėl funkcijos „ Serial.write“ ( kaip parodyta žemiau).
if (potValue <= 200) {potValue = map (potValue, 0,200,101,201); // Savo ruožtu konvertuokite į 101 į 201 Serial.write (potValue); // Puodo vertė yra atstumas, kurį reikia perkelti pele Y kryptimi}
Likusi programos dalis paaiškinama naudojant komentarus.
Apdorojimo kodas:
Apdorojimas yra atvirojo kodo kūrimo programa, kurią galima lengvai atsisiųsti ir naudoti kuriant įdomius projektus naudojant „Arduino“ ar kitus mikrovaldiklius. Mes jau atlikome keletą projektų naudodami „Processing“ ir galite juos patikrinti spustelėdami toliau pateiktas nuorodas.
- Pasidaryk FM radijas naudodamas apdorojimą
- Virtuali realybė / gestų valdymas naudojant „Arduino“
- Privatus pokalbių kambarys naudojant „Arduino“.
- „Arduino“ radarų sistema, naudojant apdorojimo programą ir ultragarso jutiklį
- Veido aptikimas ir stebėjimas realiuoju laiku naudojant „Arduino“
- Pasidaryk pats greičio matuoklis naudodamas „Arduino“ ir apdorojimą
- „Ping Pong“ žaidimas naudojant „Arduino“ akselerometrą
- Dvipusis robotas naudojant „Arduino“
- Pasidaryk pats „Arduino“ terminio vaizdo fotoaparatas
Šiame projekte mes naudojome apdorojimo IDE, norėdami nuskaityti COM prievado vertes ir valdyti pelės žymeklį, remdamiesi vertėmis, gautomis per COM prievadą. Visą šio „Angry Bird“ žaidimų valdiklio apdorojimo kodą galite atsisiųsti iš šios nuorodos:
- Apdorojamas šio „Angry Bird“ žaidimų valdiklio kodas (dešiniuoju pelės mygtuku spustelėkite ir „Išsaugoti nuorodą kaip“)
„Arduino“ programą galite rasti šios pamokos pabaigoje. Apdorojimo kodas buvo modifikuotas, kad atitiktų mūsų paskirtį iš jogo savo „GitHub“ puslapyje pateikto kodo.
Duomenis, gaunamus iš COM prievado, reikia skaityti tuo pačiu duomenų perdavimo greičiu, kuriuo jie buvo siunčiami iš „Arduino“. Taip pat patikrinkite, kurį COM prievadą prijungėte „Arduino“, naudodami įrenginių tvarkyklę. Mano „Arduino“ buvo prijungtas prie COM3 ir tai buvo 0 -asis kompiuterio prievadas, o „Arduino“ duomenų perdavimo sparta buvo 9600, taigi kodas yra toks
port = new Serial (tai, Serial.list (), 9600);
Pradėję skaityti vertes, mes ją atskiriame atpažindami pagal vertę, kaip siuntėme iš „Arduino“. Reikšmės vėl priskiriamos nuo 0 iki 100, kad galėtume valdyti pelę pagal tą vertę.
if (prievadas. prieinamas ()> 0) {duomenys = prievadas. skaityti (); println (duomenys); // Perskaitykite duomenis iš COM prievado ir išsaugokite juos duomenyse} if (data> = 101 && data <= 201) // Jei reikšmė yra nuo 101 iki 201, tai ji turi būti iš potenciometro {Turn = int (map (data (data), 101 201 0 100)); // Naudokite šią vertę, kad pasuktumėte catapullt} if (duomenys> = 5 && duomenys <= 100) // Jei vertė nuo 5 iki 100, ji turi būti iš „Flex Sensor“ {Pull = int (map (duomenys, 5 100, 0,100));} // Naudokite šią reikšmę katapultai ištraukti, jei (duomenys == 1) spustelėkite = tiesa; // Naudokite tą reikšmę norėdami paspausti pelės mygtuką, jei (duomenys == 0) spustelėkite = klaidinga; // Naudokite tą vertę, kad atleistumėte pelės mygtuką
Kai suklasifikuojame duomenis, galime valdyti pelę naudodami „Robot Java“ klasę apdorojant. Komanda robot.mouseMove (crntX-Pull, crntY + Turn); gali būti naudojamas norint perkelti pelę į bet kurią norimą padėtį ir linijas robot.mousePress (InputEvent.BUTTON1_DOWN_MASK); ir robot.mouseRelease (InputEvent.BUTTON1_DOWN_MASK); gali būti naudojamas atitinkamai paspausti arba atleisti pelės mygtuką.
if (spustelėkite == klaidinga) // kai „Flex Sesnor“ netraukiamas {crntX = (int) p.getX (); crntY = (int) p.getY (); if (Pull> 50) robot.mouseRelease (InputEvent.BUTTON1_DOWN_MASK); // Atleiskite pelės mygtuką} if (spustelėkite == true) //, kai „Flex Sesnor“ yra ištrauktas {robot.mousePress (InputEvent.BUTTON1_DOWN_MASK); // Paspauskite pelės mygtuką robotas.mouseMove (crntX-Pull, crntY + Turn); // Perkelkite pelę pagal „Flex“ ir „POT“ vertę}}
Paleidus IDE apdorojimą, taip pat bus parodytas nedidelis dialogo langas, kuriame rasite „Pull“, „Turn“ ir „Mouse Click“ būsenos reikšmes, kaip parodyta žemiau
Šią informaciją galima naudoti norint derinti Programą arba ištaisyti visus reikalingus duomenis.
Darbas:
Norėdami, kad šis „ Angry Bird“ projektas veiktų pagal pateiktą kodą, surinkite aparatūrą pagal grandinės schemą ir įkelkite nurodytą „Arduino“ kodą. Tada atkreipkite dėmesį į kurį COM prievadą yra prijungtas jūsų „Arduino“, atlikite būtinus pakeitimus apdorojimo kode ir paleiskite apdorojimo eskizą.
Dabar tiesiog paleiskite piktojo paukščio žaidimą ir užveskite pelės žymeklį šalia katapultos ir patraukite lankstumo jutiklį, kad ištrauktumėte paukštį ir nustatytumėte kryptį naudodamiesi potenciometru. Kai kryptis bus nustatyta, atleiskite „Flex“ jutiklį
EEEEWWWWWEEEEEEEEEE !!!!!!!!!!……………
Jūs paukštis bus mesti tiesiai į orą ir BOOMM !! Ant kiaulidžių. Visą darbą galite rasti toliau pateiktame vaizdo įraše.
Tikiuosi, kad jums patiko projektas ir pavyko sukurti ką nors panašaus. Jei turite kokių nors abejonių, galite susisiekti su manimi komentarų skiltyje arba paskelbti savo klausimą forume dėl techninių klausimų.
Dabar laikas atsitrenkti į tas piggy dėžes ir sugrąžinti paukščių kiaušinius !!!!