Všechno to začalo malou hrou z doby temna zvanou „Mario“, od doby, kdy byl malý malý kluk skákající na kachny, aby zachránil moji princeznu, až se stal mužným hezkým princem potulujícím se v Persii (princ z Persie) bojujícím proti temnotě Abych zachránil svůj svět za sebou, byl jsem velkým fanouškem hraní videoher a na hraní jsem vyrostl. Ale někdy se nudí a já se cítím méně zapojený. Pokročilé herní konzole dnes umožňují virtuální hraní a pomáhají nám cítit hru mnohem lépe, než dokáže klávesnice nebo myš.
Jako nadšenec Arduina jsem se unavil hraním slavné hry s názvem „Angry Birds“ pomocí klávesnice a myši a rozhodl jsem se postavit svůj vlastní herní ovladač pomocí snímače Flex a potenciometru. Když zatáhnete za flex senzor, vytáhne se také pták na katapultu a pomocí potenciometru můžete nastavit směr, ve kterém má být spuštěn. Poté, co uvolníte snímač flexu, bude pták spuštěn. Docela se mi to líbilo, takže pokud se chystáte stavět něco velmi podobného, bude tento návod užitečný. Tento výukový program bude také užitečný při ovládání kurzoru myši pomocí potenciometru.
Softwarové a hardwarové požadavky:
Software:
- Arduino IDE
- Zpracování IDE
- Hra Angry Birds na počítači
Hardware:
- Arduino (libovolná verze)
- Potenciometr
- Flex senzor
- 47K ohm rezistor
- Připojení vodičů
- Nepájivá deska
Koncept za:
Deska Arduino čte hodnoty z potenciometru a Flex Senor a přenáší je do notebooku / PC přes USB COM port přes normální funkci Serial.write () . Tyto informace pak přečteme pomocí Zpracování a ovládáme kurzor myši pomocí třídy Robot v Javě, která je podporována zpracováním IDE. Naprogramovali jsme IDE zpracování takovým způsobem, že když je senzor Flex zatažen, dojde k kliknutí myší a na základě toho, jak moc je natažen, se ukazatel myši bude pohybovat ve směru X. Poté na základě hodnoty z potenciometru posuneme kurzor myši ve směru Y, tímto způsobem můžeme nastavit směr, ve kterém by měl být pták spuštěn.
Kruhový diagram:
Obvod pro hraní Angry Bird pomocí Flex senzoru a potenciometru je snadný.
K analogovým vstupům (A0, A1) Arduina jsme jednoduše připojili potenciometr a snímač flexu. Výstup senzoru Flex je také stažen pomocí 47K stahovacího rezistoru.
Můžete jej přímo připojit na prkénko nebo je připájet k desce Perf a sestavit na rukavice nebo něco, aby byla kreativnější. Jednoduše jsem použil prkénko pro připojení, jak je uvedeno níže:
Program Arduino:
Kompletní Arduino kód je uveden na konci tohoto tutoriálu. Níže je vysvětleno několik důležitých řádků.
Inicializujeme program tak, aby pracoval s přenosovou rychlostí 9600 a začal číst hodnoty ze snímače Flex a potenciometru. Jak víme, funkce serial.write () může odeslat pouze jeden bajt dat najednou. Protože jeden bajt má 8 bitů a 2 ^ 8 = 256. Budeme moci posílat hodnoty od 0 do 256. Musíme tedy komprimovat hodnoty výstupu snímače Flex a výstupu potenciometru na 0 až 256.
K tomu používáme funkci map () v Arduinu. Všechny hodnoty z flex senzoru jsou převedeny z 5 na 100, takže když ohneme senzor, zvýší se od 5 a po uvolnění se vrátí zpět na 5. Chcete-li zmínit kliknutí myší, použije se hodnota 1 a 0. Po odeslání 1 se stiskne myš a při odeslání 0 se myš uvolní.
if (FlexValue> = 65 && FlexValue <= 120) // můj flex senzor se pohybuje od 65 do 120, může se lišit {FlexValue = mapa (FlexValue, 120,65,0,100); // na základě ohybu převést na 0 až 100, pokud (FlexValue> = 5) // 1 a 0 jsou použity pro kliknutí myší, takže začněte od 5 {Mclick = true; Serial.write (1); // 1 se odešle, aby se levé tlačítko myši Serial.write (FlexValue); // Flex hodnota je vzdálenost k pohybu myši ve směru X} else {Mclick = false; Serial.write (0);}}
Podobně se hodnoty z potenciometru převádějí z 101 na 200, zpívají funkci map () a odesílají se na port Laptops COM pomocí funkce Serial.write (), jak je uvedeno níže.
if (potValue <= 200) {potValue = mapa (potValue, 0,200 101 201); // Na základě zase převést na 101 až 201 Serial.write (potValue); // Hodnota potu je vzdálenost k pohybu myši ve směru Y}
Zbytek programu je vysvětlen pomocí komentářů.
Kód zpracování:
Processing je vývojová aplikace s otevřeným zdrojovým kódem a lze ji snadno stáhnout a použít k vývoji zajímavých projektů pomocí Arduina nebo jiných mikrokontrolérů. Již jsme zpracovali několik projektů pomocí Zpracování a můžete je zkontrolovat kliknutím na odkazy níže.
- DIY FM rádio pomocí zpracování
- Ovládání virtuální reality / gest pomocí Arduina
- Soukromá chatovací místnost pomocí Arduina.
- Radarový systém Arduino využívající zpracování APP a ultrazvukový senzor
- Detekce a sledování tváře v reálném čase pomocí Arduina
- DIY rychloměr pomocí Arduina a zpracování
- Ping Pong hra pomocí akcelerometru Arduino
- Dvojnohý robot využívající Arduino
- DIY Arduino termální zobrazovací kamera
V tomto projektu jsme použili zpracování IDE ke čtení hodnot portů COM a ovládání ukazatele myši na základě hodnot přijatých přes port COM. Kompletní kód pro zpracování dat této Rozzlobený Bird herní ovladač lze stáhnout z níže uvedeného odkazu:
- Zpracování kódu pro tento herní ovladač Angry Bird (klikněte pravým tlačítkem a 'Uložit odkaz jako')
Program Arduino najdete na konci tohoto tutoriálu. Zpracovatelský kód byl upraven tak, aby vyhovoval našemu účelu, z kódu zadaného yoggy na jeho stránce GitHub.
Data přicházející z portu COM by měla být čtena ve stejné přenosové rychlosti, v jaké byla odeslána z Arduina. Pomocí správce zařízení také zkontrolujte, který port COM je připojen k vašemu Arduinu. Můj Arduino byl připojen k COM3 a bylo k 0. ročník Port v mém počítači a přenosová rychlost v Arduino bylo 9600, takže kód je následující
port = new Serial (this, Serial.list (), 9600);
Jakmile začneme číst hodnoty, odlišíme je tím, že je rozpoznáme na základě jejich hodnoty podle toho, jak jsme poslali z Arduina. Hodnoty jsou opět mapovány od 0 do 100, takže budeme moci ovládat myš na základě této hodnoty.
if (port.available ()> 0) {data = port.read (); println (data); // Načtěte data z portu COM a uložte je do dat} if (data> = 101 && data <= 201) // Pokud je hodnota if od 101 do 201, pak musí být z potenciometru {Turn = int (map (data 101,201,0,100)); // Tuto hodnotu použijte k otočení catapullt} if (data> = 5 && data <= 100) // Pokud je hodnota if od 5 do 100, pak musí být z Flex Sensor {Pull = int (mapa (data, 5 100, 0,100));} // Tuto hodnotu použijte k vytažení katapultu if (data == 1) click = true; // Tuto hodnotu použijte ke stisknutí tlačítka myši if (data == 0) click = false; // Tuto hodnotu použijte k uvolnění tlačítka myši
Jakmile kategorizujeme data, můžeme myš ovládat pomocí třídy Java Robot ve zpracování. Příkaz robot.mouseMove (crntX-Pull, crntY + Turn); lze použít k přesunutí myši do libovolné požadované polohy a čar robot.mousePress (InputEvent.BUTTON1_DOWN_MASK); a robot.mouseRelease (InputEvent.BUTTON1_DOWN_MASK); lze použít ke stisknutí nebo uvolnění tlačítka myši.
if (click == false) // když není zatažen Flex Sesnor {crntX = (int) p.getX (); crntY = (int) p.getY (); if (Pull> 50) robot.mouseRelease (InputEvent.BUTTON1_DOWN_MASK); // Uvolněte tlačítko myši} if (click == true) // při zatažení Flex Sesnor {robot.mousePress (InputEvent.BUTTON1_DOWN_MASK); // Stiskněte tlačítko myši robot.mouseMove (crntX-Pull, crntY + Turn); // Pohybujte myší na základě hodnot Flex a POT}}
Při spuštění IDE zpracování se také zobrazí malé dialogové okno, ve kterém najdete hodnoty Pull, Turn a stav kliknutí myší, jak je uvedeno níže
Tento detail lze použít k ladění Programu nebo k opravě jakýchkoli požadovaných údajů.
Pracovní:
Aby tento projekt Angry Bird fungoval pomocí poskytnutého kódu, sestavte hardware podle schématu zapojení a nahrajte daný Arduino kód. Potom si všimněte, ke kterému portu COM je vaše Arduino připojeno, proveďte potřebné změny v kódu zpracování a spusťte náčrt zpracování.
Nyní jednoduše spusťte hru na rozzlobeného ptáka a umístěte kurzor do blízkosti katapultu a zatáhněte za flex senzor, abyste vtáhli ptáka a nastavte směr pomocí potenciometru. Jakmile je směr nastaven, uvolněte snímač Flex
EEEEWWWWWEEEEEEEEEE !!!!!!!!!!……………
Váš pták bude hoden přímo do vzduchu a BOOMM !! Na prasátka. Kompletní práci najdete ve videu níže.
Doufám, že se vám projekt líbil a dokázali jste postavit něco podobného. Máte-li jakékoli pochybnosti, můžete mě kontaktovat v sekci komentářů nebo zaslat svůj dotaz na fórum pro technické dotazy.
Nyní je čas narazit do těch prasátkových krabic a dostat zpět naše ptačí vejce !!!!