Vse se je začelo z majhno igro iz mračnih časov, imenovano "Mario", že od trenutka, ko je bil majhen moški, ki je skakal po racah, da bi rešil svojo princeso, dokler ni bil moški čeden princ, ki je gostoval v Perziji (princ Perzije) in se boril proti temi. da bi rešil svoj svet, sem bil velik ljubitelj igranja video iger in odraščal sem, ko sem jih igral. Toda včasih se dolgočasijo in počutim se manj vpletenega v to. Danes napredne igralne konzole omogočajo navidezno igranje in nam pomagajo, da igro občutimo veliko bolje kot tipkovnica ali miška.
Ker sem navdušenec nad Arduinom, sem se utrujen igral s pomočjo tipkovnice in miške, imenovane Angry Birds, in se odločil, da z uporabo Flex senzorja in potenciometra sestavim svoj krmilnik iger. Ko potegnete senzor upogibanja, se potegne tudi ptica na katapultu in s potenciometrom lahko nastavite smer, v katero naj se izstreli. Potem, ko spustite fleksibilni senzor, se ptič sproži. Pri tem sem zelo užival, zato, če želite zgraditi nekaj zelo podobnega, bo ta vadnica v pomoč. Ta vadnica vam bo v pomoč tudi pri nadzoru kurzorja miške s pomočjo potenciometra.
Zahteve za programsko in strojno opremo:
Programska oprema:
- Arduino IDE
- Obdelava IDE
- Igra Angry Birds v računalniku
Strojna oprema:
- Arduino (katera koli različica)
- Potenciometer
- Flex senzor
- 47K ohmski upor
- Povezovanje žic
- Breadboard
Koncept zadaj:
Arduino svet bere vrednosti iz potenciometer in Flex Senjor in jih pošlje Laptop / PC preko USB vmesnika COM preko normalno Serial.write () funkcijo. Nato te podatke preberemo s pomočjo Obdelava in nadziramo miškin kazalec z uporabo razreda Robot v Javi, ki ga podpira obdelava IDE. IDE za obdelavo smo programirali tako, da se ob vlečenju senzorja Flex izvede klik na miško in glede na to, koliko ga potegne, se miškin kazalec premakne v smeri X. Nato na podlagi vrednosti iz potenciometra premaknemo kurzor miške v smeri Y, tako da lahko nastavimo smer, v katero naj se izstreli ptica.
Shema vezja:
Vezje za igranje Angry Bird z uporabo Flex senzorja in potenciometra je enostavno.
Na analogne vhode (A0, A1) Arduina smo enostavno povezali potenciometer in fleksibilni senzor. Izhod senzorja Flex se prav tako potegne navzdol s pomočjo 47K spustnega upora.
Lahko ga neposredno povežete na plošči ali spajkate na desko Perf in ga sestavite na rokavice ali kaj drugega, da postane bolj kreativen. Za povezave sem preprosto uporabil ploščo, kot je prikazano spodaj:
Program Arduino:
Popolna koda Arduino je podana na koncu vadnice. V nadaljevanju je razloženo nekaj pomembnih vrstic.
Program inicializiramo tako, da deluje s hitrostjo 9600 baudov in začnemo odčitavati vrednosti s senzorja Flex in potenciometra. Kot vemo, lahko funkcija serial.write () naenkrat pošlje le en bajt podatkov. Ker je en bajt 8 bitov in 2 ^ 8 = 256. Pošiljali bomo lahko vrednosti od 0 do 256. Torej moramo vrednosti izhoda senzorja Flex in izhoda potenciometra stisniti v 0 do 256.
Za to uporabimo funkcijo map () v Arduinu. Vse vrednosti iz fleksibilnega senzorja se pretvorijo iz 5 v 100, tako da se pri upogibanju senzorja poveča za 5 in ob sprostitvi se vrne na 5. Za omembo miškinih klikov se uporabljata vrednosti 1 in 0. Ko je poslano 1, se miškica pritisne in ko se pošlje 0, se miška sprosti.
če (FlexValue> = 65 && FlexValue <= 120) // moj fleks senzor se giblje med 65 in 120, so morda drugačne {FlexValue = map (FlexValue, 120,65,0,100); // na podlagi upogibanja pretvorimo v 0 na 100, če (FlexValue> = 5) // 1 in 0 se uporablja za klik miške, zato začnite s 5 {Mclick = true; Serial.write (1); // 1 se pošlje, da naredimo miško z levim klikom Serial.write (FlexValue); // Vrednost upogiba je razdalja za premikanje miške v smeri X} else {Mclick = false; Serial.write (0);}}
Podobno se vrednosti iz potenciometra pretvorijo iz 101 v 200 in zaporejo funkcijo map () in se pošljejo na vrata COM prenosnih računalnikov s funkcijo Serial.write (), kot je prikazano spodaj.
if (potValue <= 200) {potValue = map (potValue, 0,200,101,201); // Na podlagi pretvorbe v 101 do 201 Serial.write (potValue); // Vrednost lonca je razdalja za premikanje miške v smeri Y}
Preostali del programa je razložen s komentarji.
Koda obdelave:
Processing je odprtokodna razvojna aplikacija, ki jo je mogoče enostavno prenesti in uporabiti za razvoj zanimivih projektov z uporabo Arduina ali drugih mikrokrmilnikov. Z obdelavo smo že izvedli nekaj projektov, ki si jih lahko ogledate s klikom na spodnje povezave.
- DIY FM radio z uporabo obdelave
- Nadzor navidezne resničnosti / kretenj z uporabo Arduina
- Zasebna klepetalnica z uporabo Arduina.
- Radarski sistem Arduino z uporabo APP za obdelavo in ultrazvočnim senzorjem
- Zaznavanje in sledenje obrazov v realnem času z uporabo Arduina
- DIY merilnik hitrosti z uporabo Arduina in obdelave
- Igra ping pong z uporabo merilnika pospeška Arduino
- Dvonožni robot, ki uporablja Arduino
- DIY Arduino termalna kamera
V tem projektu smo uporabili IDE za obdelavo za branje vrednosti vrat COM in nadzor miškinega kazalca na podlagi vrednosti, prejetih prek vrat COM. Popolna predelava Koda za ta Angry Birds Game Controller lahko prenesete iz spodnje povezave:
- Koda za obdelavo tega krmilnika igre Angry Bird (desni klik in 'Shrani povezavo kot')
Program Arduino najdete na koncu te vadnice. Koda za obdelavo je bila spremenjena tako, da ustreza našemu namenu, iz kode, ki jo je na svoji strani GitHub dal joggy.
Podatke, ki prihajajo iz vrat COM, je treba brati z enako hitrostjo prenosa, kot so bili poslani iz Arduina. Z upraviteljem naprav preverite tudi, na katera vrata COM je povezan vaš Arduino. Moj Arduino je bil priključen na COM3 in je bila na 0 th pristanišču v mojem računalniku in hitrost prenosa v Arduino je bilo 9600, tako da koda je naslednja
port = new Serial (this, Serial.list (), 9600);
Ko začnemo brati vrednosti, ga ločimo tako, da ga prepoznamo glede na njegovo vrednost glede na to, kako smo poslali iz Arduina. Vrednosti se znova preslikajo od 0 do 100, tako da bomo lahko upravljali miško, ki temelji na tej vrednosti.
if (port.available ()> 0) {data = port.read (); println (podatki); // Preberite podatke iz vrat COM in jih shranite v data} if (data> = 101 && data <= 201) // Če je vrednost če od 101 do 201, mora biti iz potenciometra {Turn = int (map (podatki, 101,201,0,100)); // S to vrednostjo obračamo katapull}, če (podatki> = 5 && podatki <= 100) // Če je vrednost, če je od 5 do 100, mora biti od Flex Sensor {Pull = int (map (podatki, 5.100, 0,100));} // S to vrednostjo potegnite katapult, če (podatki == 1) klik = res; // S to vrednostjo pritisnite gumb miške, če (data == 0) click = false; // S to vrednostjo spustite gumb miške
Ko podatke kategoriziramo, lahko miško nadziramo z uporabo robota Java Class in Processing. Ukaz robot.mouseMove (crntX-Pull, crntY + Turn); lahko se uporablja za premikanje miške v poljuben položaj in vrstice robot.mousePress (InputEvent.BUTTON1_DOWN_MASK); in robot.mouseRelease (InputEvent.BUTTON1_DOWN_MASK); lahko uporabite za pritisk ali spustitev gumba miške.
if (klik == false) // ko Flex Sesnor ni potegnjen {crntX = (int) p.getX (); crntY = (int) p.getY (); if (Povlecite> 50) robot.mouseRelease (InputEvent.BUTTON1_DOWN_MASK); // spustite gumb miške} if (klik == true) // ko potegnete Flex Sesnor {robot.mousePress (InputEvent.BUTTON1_DOWN_MASK); // Pritisnite gumb miške robot.mouseMove (crntX-Pull, crntY + Turn); // Premik miške glede na vrednost Flex in POT}}
Ob zagonu IDE za obdelavo bo prikazalo tudi majhno pogovorno okno, v katerem boste našli vrednosti Pull, Turn in status Mouse Click, kot je prikazano spodaj
To podrobnost lahko uporabite za odpravljanje napak programa ali popravljanje potrebnih podatkov.
Delo:
Če želite, da bo projekt Angry Bird deloval s priloženo kodo, sestavite svojo strojno opremo v skladu s shemo vezja in naložite dano Arduino kodo. Nato upoštevajte, s katerimi COM vrati je povezan vaš Arduino, v kodo za obdelavo naredite potrebne spremembe in zaženite skico obdelave.
Zdaj preprosto zaženite igro jezne ptice in postavite kazalec blizu katapulta in povlecite senzor upogiba, da potegnete ptico in nastavite smer s pomočjo potenciometra. Ko je smer nastavljena, spustite senzor Flex
EEEEWWWWWEEEEEEEEEE !!!!!!!!!!……………
Vaša ptica bo vržena naravnost v zrak in BOOMM !! Na pujske. Celotno delo najdete v spodnjem videoposnetku.
Upam, da ste uživali v projektu in ste lahko zgradili nekaj podobnega. Če dvomite, me lahko pokličete v oddelku za komentarje ali objavite svoje vprašanje na forumu za tehnična vprašanja.
Zdaj je čas, da se zaletimo v tiste pujse in vrnemo ptičja jajca !!!!