Az egész egy sötét időkből származó, „Mario” nevű kis játékkal kezdődött, abból az időből, amikor egy apró kis srác kacsákra ugrott, hogy megmentse hercegnőmet, egészen addig, amíg férfias, jóképű herceg volt, aki Perzsiában barangolt (Perzsia hercege), és a sötétség ellen küzd. hogy megmentsem a világomat, nagy rajongója voltam a videojátékok játékának, és felnőttem őket. De néha unatkoznak, és kevésbé érzem magam benne. Ma a fejlett játékkonzolok lehetővé teszik a virtuális játékokat, és sokkal jobban érezzük a játékot, mint egy billentyűzet vagy egér.
Arduino rajongó lévén fáradt voltam az Angry Birds nevű híres játékot játszani billentyűzet és egér használatával, és úgy döntöttem, hogy saját játékvezérlőt építek egy Flex Sensor és egy Potenciométer segítségével. Amikor a flex érzékelőt meghúzza, a katapulton lévő madarat is meghúzza, és a potenciométerrel beállíthatja az irányt, amelybe be kell indítani. Majd amikor elengedi a flex érzékelőt, a madár elindul. Nagyon szerettem csinálni, így ha valami nagyon hasonlót akar felépíteni, akkor ez a bemutató hasznos lesz. Ez az oktatóanyag hasznos lesz az egérkurzor vezérléséhez a potenciométer használatával is.
Szoftver és hardver követelmények:
Szoftver:
- Arduino IDE
- Az IDE feldolgozása
- Angry Birds játék a számítógépen
Hardver:
- Arduino (bármilyen verzió)
- Potenciométer
- Flex Sensor
- 47K ohmos ellenállás
- Vezetékek csatlakoztatása
- Kenyérlemez
Koncepció mögött:
Az Arduino Board leolvassa az értékeket a potenciométerről és a Flex Senor-ról, és USB COM porton keresztül továbbítja a laptophoz / PC-hez a normál Serial.write () függvényen keresztül. Ezután a Processing segítségével olvassuk el ezeket az információkat, és vezéreljük az egérkurzort a Java Robot osztály segítségével, amelyet az IDE feldolgozása támogat. Az IDE feldolgozását úgy programoztuk, hogy a Flex érzékelő meghúzásakor egérkattintás történjen, és annak alapján, hogy mennyit húz, az egérmutató X irányba mozog. Ezután a potenciométer értéke alapján mozgatjuk az egérmutatót Y irányba, így beállíthatjuk azt az irányt, amelybe a madarat el kell indítani.
Kördiagramm:
Könnyű az áramkör az Angry Bird játékához a Flex Sensor és a Potenciometer segítségével.
Egyszerűen csatlakoztattunk egy potenciométert és egy flex érzékelőt az Arduino analóg bemeneteihez (A0, A1). A Flex érzékelő kimenetét egy 47K lehúzható ellenállással is lehúzzák.
Közvetlenül csatlakoztathatja a kenyérlapra, vagy forraszthatja őket egy Perf deszkához, és kesztyűre vagy valamire szerelheti, hogy kreatívabbá váljon. Egyszerűen kenyérlapot használtam a kapcsolataim elvégzéséhez az alábbiak szerint:
Arduino program:
A teljes Arduino kód az oktatóanyag végén található. Néhány fontos sort elmagyarázunk az alábbiakban.
Inicializáljuk a programot, hogy 9600 baud sebességgel működjön, és elkezdjük olvasni az értékeket a Flex érzékelőből és a potenciométerből. Mint tudjuk, a serial.write () függvény egyszerre csak egy bájt adatot küldhet. Mivel egy bájt 8 bit és 2 ^ 8 = 256. Képesek leszünk 0 és 256 közötti értékeket küldeni. Tehát a Flex érzékelő kimenetének és a potenciométer kimenetének értékét 0-ról 256-ra kell tömörítenünk.
Ehhez a map () függvényt használjuk az Arduino-ban. A flex-érzékelő összes értékét 5-ről 100-ra konvertáljuk, így amikor az érzékelőt meghajlítjuk, 5-ről növekszik, majd elengedve visszalép az 5.-re. Az egérkattintások megemlítésére az 1 és 0 értéket használjuk. Az 1 elküldése után az egér megnyomása és a 0 elküldése után az egér elengedésre kerül.
ha (FlexValue> = 65 && FlexValue <= 120) // a flex érzékelőm 65 és 120 között változik, akkor lehet, hogy más lesz {FlexValue = map (FlexValue, 120,65,0,100); // a hajlítás alapján konvertáljon 0-ról 100-ra, ha (FlexValue> = 5) // 1 és 0 értéket használunk az egérkattintásra, tehát kezdje 5-től {Mclick = true; Soros.írás (1); // 1 elküldésre kerül, hogy az egér bal egérgombbal kattintson a Serial.write (FlexValue); // A flex érték az egér X irányba mozgatásának távolsága} else {Mclick = false; Soros.írás (0);}}
Hasonlóképpen, a potenciométer értékeit 101-ről 200-ra konvertálják a map () függvény előhívásával, és elküldik a Laptops COM portra, a Serial.write () függvény beperelésével az alábbiak szerint.
if (potValue <= 200) {potValue = térkép (potValue, 0,200,101,201); // Alapján viszont átalakítás 101-ről 201-re Serial.write (potValue); // A pot értéke az egér Y irányba mozgatásának távolsága}
A program többi részét a megjegyzések segítségével magyarázzuk el.
Feldolgozási kód:
A Processing egy nyílt forráskódú fejlesztő alkalmazás, amelyet könnyen le lehet tölteni és felhasználható érdekes projektek kidolgozásához az Arduino vagy más mikrokontrollerek használatával. Már kevés projektet készítettünk a Processing használatával, és az alábbi linkekre kattintva ellenőrizheti őket.
- DIY FM rádió feldolgozással
- Virtuális valóság / gesztus vezérlés az Arduino segítségével
- Privát szoba az Arduino használatával.
- Arduino radarrendszer az APP feldolgozásával és az ultrahangos érzékelővel
- Valós idejű arcfelismerés és -követés az Arduino segítségével
- Barkácssebességmérő Arduino és feldolgozás segítségével
- Ping Pong játék az Arduino Accelerometer segítségével
- Kétlábú robot az Arduino használatával
- DIY Arduino hőkamera
Ebben a projektben az IDE feldolgozását használtuk a COM port értékeinek kiolvasására és az egérmutató vezérlésére a COM porton keresztül kapott értékek alapján. Az Angry Bird Game Controller teljes feldolgozási kódja letölthető az alábbi linkről:
- Kód feldolgozása ehhez az Angry Bird Game Controllerhez (kattintson a jobb gombbal és a 'Link mentése másként')
Az Arduino Program az oktatóanyag végén található. A feldolgozási kódot a Yoggy által a GitHub oldalán megadott kódból módosítottuk, hogy célunknak megfeleljen.
A COM portról érkező adatokat ugyanabban az adatátviteli sebességben kell olvasni, mint amellyel az Arduinótól küldték. Az eszközkezelő segítségével ellenőrizze azt is, hogy az Arduino melyik COM-porthoz csatlakozik. Saját Arduino volt kötve COM3, és ez volt a 0 -én Port a gépemen és az adatátviteli sebesség az Arduino volt 9600, így a kód a következő
port = new Serial (ez, Serial.list (), 9600);
Amint elkezdjük olvasni az értékeket, megkülönböztetjük azáltal, hogy felismerjük az értéke alapján, hogy miként küldtük az Arduinótól. Az értékek ismét 0 és 100 között vannak feltérképezve, így az egér irányítása ezen érték alapján történik.
if (port.available ()> 0) {data = port.read (); println (adatok); // Olvassa el az adatokat a COM portról, és mentse az adatokba} if (data> = 101 && data <= 201) // Ha az érték 101 és 201 között van, akkor a {Turn = int (map (data (data) (101, 201, 100, 100)); // Használja ezt az értéket a catapullt} forgatásához, ha (adatok> = 5 && adatok <= 100) // Ha az érték 5 és 100 között van, akkor a Flex Sensor-ból kell származnia {Pull = int (map (adatok, 5 100, 0,100));} // Használja ezt az értéket a katapult húzásához, ha (adatok == 1) kattint = igaz; // Ezzel az értékkel nyomja meg az egérgombot, ha (data == 0) kattint = hamis; // Használja ezt az értéket az egérgomb felengedéséhez
Az adatok kategorizálása után vezérelhetjük az egeret a Robot Java osztály segítségével a feldolgozásban. A robot.mouseMove parancs (crntX-Pull, crntY + Turn); használható az egér tetszőleges pozícióba és a robot.mousePress (InputEvent.BUTTON1_DOWN_MASK) vonalakra; és a robot.mouseRelease (InputEvent.BUTTON1_DOWN_MASK); használható az egér gombjának megnyomásához vagy felengedéséhez.
if (kattintson == hamis) // amikor a Flex Sesnort nem húzzák meg {crntX = (int) p.getX (); crntY = (int) p.getY (); if (Húzás> 50) robot.mouseRelease (InputEvent.BUTTON1_DOWN_MASK); // engedje el az egérgombot} if (click == true) //, amikor a Flex Sesnor meghúzódik {robot.mousePress (InputEvent.BUTTON1_DOWN_MASK); // Nyomja meg az egérgombot robot.mouseMove (crntX-Pull, crntY + Turn); // Mozgassa az egeret a Flex és POT érték alapján}}
Az indításkor az IDE feldolgozása egy kis párbeszédpanelt is megjelenít, amelyen megtalálhatja a Pull, Turn és az egérkattintás értékeit az alábbiak szerint
Ez a részlet felhasználható a Program hibakeresésére vagy a szükséges adatok kijavítására.
Dolgozó:
Annak érdekében, hogy ez az Angry Bird Project a megadott kód használatával működjön, állítsa össze a hardvert az áramköri ábra szerint, és töltse fel a megadott Arduino kódot. Ezután vegye figyelembe, hogy az Arduino melyik COM-porthoz csatlakozik, és végezze el a szükséges módosításokat a Feldolgozási kódban, és indítsa el a feldolgozási vázlatot.
Most egyszerűen indítsa el a dühös madár játékot, és vigye a kurzort a katapult közelébe, és húzza meg a flex érzékelőt a madár meghúzásához, és állítsa be az irányt a potenciométer segítségével. Az irány beállítása után engedje el a Flex érzékelőt
EEEEWWWWWEEEEEEEEEE !!!!!!!!!!……………
Te madár lesz dobva egyenesen a levegőbe, és BOOMM !! A malacokon. A teljes munka megtalálható az alábbi videóban.
Remélem, hogy tetszett a projekt, és valami hasonlót fel tudott építeni. Ha kétségei vannak, akkor forduljon hozzám a megjegyzés részben, vagy tegye fel kérdését a fórumon technikai kérdésekre.
Itt az ideje becsapódni azokba a malacka dobozokba, és visszakapni a madarak petéit !!!!