Všetko to začalo malou hrou z doby temna zvanou „Mario“, hneď od chvíle, keď bol malým chlapčekom skákajúcim na kačice, aby zachránil moju princeznú, až kým nebol mužným pekným princom, ktorý sa potuloval v Perzii (perzský princ) a bojoval proti temnote. aby som zachránil svoj svet za sebou, bol som veľkým fanúšikom hrania videohier a na tých som vyrastal. Ale niekedy sa nudia a cítim sa do toho menej zapojený. Pokročilé herné konzoly dnes umožňujú virtuálne hranie a pomáhajú nám cítiť sa z hry oveľa lepšie, ako to dokáže klávesnica alebo myš.
Ako nadšenec Arduina som sa unavil hraním slávnej hry s názvom „Angry Birds“ pomocou klávesnice a myši a rozhodol som sa vytvoriť svoj vlastný herný ovládač pomocou senzora Flex a potenciometra. Po vytiahnutí ohybového senzora sa potiahne aj vták na katapulte a pomocou potenciometra môžete nastaviť smer, v ktorom sa má vystreliť. Keď potom uvoľníte ohybový senzor, vták sa spustí. Robil som to veľmi rád, takže ak sa chystáte stavať niečo veľmi podobné, bude tento návod užitočný. Tento návod bude nápomocný aj pri ovládaní kurzora myši pomocou potenciometra.
Softvérové a hardvérové požiadavky:
Softvér:
- Arduino IDE
- Spracovanie IDE
- Hra Angry Birds na počítači
Hardvér:
- Arduino (ľubovoľná verzia)
- Potenciometer
- Flex senzor
- 47K ohm rezistor
- Pripojenie drôtov
- Nepál
Koncept za:
Arduino Board číta hodnoty z potenciometra a Flex Senor a odošle sa k notebooku / PC cez USB port COM cez normálny Serial.write () funkcie. Tieto informácie potom načítame pomocou nástroja Processing a kurzor myši ovládame pomocou triedy Robot v prostredí Java, ktorá je podporovaná spracovaním IDE. Naprogramovali sme spracovanie IDE takým spôsobom, že keď sa zatiahne senzor Flex, dôjde k kliknutiu myšou a na základe toho, ako veľmi sa potiahne, sa bude ukazovateľ myši pohybovať v smere X. Potom na základe hodnoty z potenciometra posunieme kurzor myši v smere Y, takto môžeme nastaviť smer, v ktorom má byť vták spustený.
Schéma zapojenia:
Obvod pre hranie Angry Bird pomocou Flex senzora a potenciometra je jednoduchý.
K analógovým vstupom (A0, A1) Arduina sme jednoducho pripojili potenciometer a snímač flex. Výstup senzora Flex je tiež stiahnutý pomocou 47K pull down rezistora.
Môžete ich priamo pripojiť na prkénko alebo ich spájkovať na doske Perf a zostaviť na rukavice alebo niečo, aby bola kreatívna. Jednoducho som použil prepojovacie pole na vykonanie pripojení, ako je uvedené nižšie:
Program Arduino:
Kompletný Arduino kód je uvedený na konci tutoriálu. Ďalej je vysvetlených niekoľko dôležitých riadkov.
Inicializujeme program tak, aby pracoval s prenosovou rýchlosťou 9600 a začneme načítať hodnoty zo senzora Flex a potenciometra. Ako vieme, funkcia serial.write () dokáže odoslať naraz iba jeden bajt údajov. Pretože Jeden bajt má 8 bitov a 2 ^ 8 = 256. Budeme môcť posielať hodnoty od 0 do 256. Hodnoty výstupu senzora Flex a výstupu potenciometra teda musíme skomprimovať na 0 až 256.
Použijeme na to funkciu map () v Arduine. Všetky hodnoty z flexibilného senzora sa prevedú z 5 na 100, takže keď senzor ohneme, bude sa zvyšovať od 5 a po uvoľnení sa vráti späť na 5. Aby sme spomenuli klikanie myšou, použije sa hodnota 1 a 0. Keď sa pošle 1, stlačí sa myš a keď sa pošle 0, myš sa uvoľní.
if (FlexValue> = 65 && FlexValue <= 120) // môj flex senzor sa pohybuje od 65 do 120, môže sa líšiť {FlexValue = mapa (FlexValue, 120,65,0,100); // na základe ohybu previesť na 0 až 100, ak (FlexValue> = 5) // 1 a 0 sa používajú na kliknutie myšou, takže začnite od 5 {Mclick = true; Serial.write (1); // 1 sa odošle, aby sa ľavým tlačidlom myši kliklo na Serial.write (FlexValue); // Hodnota flex je vzdialenosť, ktorou sa má myš pohybovať v smere X} else {Mclick = false; Serial.write (0);}}
Podobne sú hodnoty z potenciometra prevedené z 101 na 200, spracujte funkciu map () a posielajte ich do portu COM na laptope pomocou funkcie Serial.write (), ako je uvedené nižšie.
if (potValue <= 200) {potValue = mapa (potValue, 0,200 101 201); // Založené zase na prevode na 101 až 201 Serial.write (potValue); // Hodnota hrnca je vzdialenosť, ktorou sa má myš pohybovať v smere Y}
Zvyšok programu je vysvetlený pomocou komentárov.
Kód spracovania:
Processing je vývojová aplikácia Open-Source, ktorú je možné ľahko stiahnuť a použiť na vývoj zaujímavých projektov pomocou Arduina alebo iných mikrokontrolérov. Pomocou Spracovania sme už vykonali niekoľko projektov a môžete si ich skontrolovať kliknutím na odkazy nižšie.
- DIY FM rádio pomocou spracovania
- Ovládanie virtuálnej reality / gestami pomocou Arduina
- Súkromná chatovacia miestnosť pomocou Arduina.
- Radarový systém Arduino využívajúci spracovanie APP a ultrazvukový senzor
- Detekcia a sledovanie tváre v reálnom čase pomocou Arduina
- DIY rýchlomer pomocou Arduina a spracovania
- Hra Ping Pong pomocou akcelerometra Arduino
- Dvojnohý robot používajúci Arduino
- DIY termovízna kamera Arduino
V tomto projekte sme použili spracovávajúce IDE na čítanie hodnôt COM portu a na riadenie ukazovateľa myši na základe hodnôt prijatých cez COM port. Kompletné kód pre spracovanie dát tejto Nahnevaný Bird herný ovládač možno stiahnuť z nižšie uvedeného odkazu:
- Spracováva sa kód pre tento herný ovládač Angry Bird (kliknite pravým tlačidlom myši a „Uložiť odkaz ako“)
Program Arduino nájdete na konci tohto tutoriálu. Kód na spracovanie bol upravený tak, aby vyhovoval nášmu účelu, z kódu, ktorý zadal yoggy na svojej stránke GitHub.
Dáta prichádzajúce z portu COM by sa mali čítať v rovnakej prenosovej rýchlosti, v akej boli odosielané z Arduina. Pomocou správcu zariadení tiež skontrolujte, ktorý port COM je pripojený k vášmu Arduinu. Môj Arduino bol pripojený k COM3 a bolo k 0. ročník Port v mojom počítači a prenosová rýchlosť v Arduino bolo 9600, takže kód je nasledujúci
port = new Serial (this, Serial.list (), 9600);
Akonáhle začneme čítať hodnoty, odlíšime ich tak, že ich rozpoznáme na základe ich hodnoty podľa toho, ako sme ich poslali z Arduina. Hodnoty sú opäť mapované od 0 do 100, aby sme na základe tejto hodnoty boli schopní ovládať myš.
if (port.available ()> 0) {data = port.read (); println (dáta); // Načítajte údaje z portu COM a uložte ich do údajov} if (data> = 101 && data <= 201) // Ak je hodnota if od 101 do 201, potom musia byť z potenciometra {Turn = int (map (data 101,201,0,100)); // Pomocou tejto hodnoty otočíme catapullt} if (data> = 5 && data <= 100) // Ak je hodnota if od 5 do 100, musí to byť z nástroja Flex Sensor {Pull = int (map (data, 5,100, 0,100));} // Táto hodnota sa použije na vytiahnutie katapultu if (data == 1) click = true; // Túto hodnotu použijeme na stlačenie tlačidla myši, ak (data == 0) click = false; // Túto hodnotu použite na uvoľnenie tlačidla myši
Keď kategorizujeme údaje, môžeme pomocou myši Robot Java Class in Processing ovládať myš. Príkaz robot.mouseMove (crntX-Pull, crntY + Turn); dá sa použiť na presunutie myši do ľubovoľnej požadovanej polohy a na čiary robot.mousePress (InputEvent.BUTTON1_DOWN_MASK); a robot.mouseRelease (InputEvent.BUTTON1_DOWN_MASK); možno použiť na stlačenie alebo uvoľnenie tlačidla myši.
if (click == false) // keď nie je stiahnutý Flex Sesnor {crntX = (int) p.getX (); crntY = (int) p.getY (); if (Pull> 50) robot.mouseRelease (InputEvent.BUTTON1_DOWN_MASK); // Uvoľnite tlačidlo myši} if (click == true) // pri zatiahnutí Flex Sesnor {robot.mousePress (InputEvent.BUTTON1_DOWN_MASK); // Stlačte tlačidlo myši robot.mouseMove (crntX-Pull, crntY + Turn); // Pohybujte myšou na základe hodnôt Flex a POT}}
Keď sa IDE spracovania spustí, zobrazí sa aj malé dialógové okno, v ktorom nájdete hodnoty Pull, Turn a stav kliknutia myšou, ako je uvedené nižšie.
Tento detail je možné použiť na ladenie Programu alebo opravu akýchkoľvek požadovaných údajov.
Pracovné:
Aby tento projekt Angry Bird fungoval pomocou dodaného kódu, zostavte si hardvér podľa schémy zapojenia a nahrajte daný Arduino kód. Potom si všimnite, ku ktorému portu COM je vaše Arduino pripojené, vykonajte potrebné zmeny v kóde spracovania a spustite náčrt spracovania.
Teraz jednoducho spustite hru naštvaného vtáka a umiestnite kurzor do blízkosti katapultu a potiahnutím senzora ohybu potiahnite vtáka a nastavte smer pomocou potenciometra. Po nastavení smeru uvoľnite snímač Flex
EEEEWWWWWEEEEEEEEEE !!!!!!!!!!……………
Váš vták bude vyhodený priamo do vzduchu a BOOMM !! Na prasiatka. Kompletné fungovanie nájdete na videu uvedenom nižšie.
Dúfam, že sa vám projekt páčil a dokázali ste postaviť niečo podobné. Ak máte pochybnosti, môžete ma kontaktovať v sekcii komentárov alebo uverejniť svoju otázku vo fóre s technickými otázkami.
Teraz je čas nabúrať do tých prasiatok a dostať späť naše vtáčie vajcia !!!!