Tartalomjegyzék:
- 1. lépés: Amire szüksége lesz
- 2. lépés: Építés: a konzol hub, a pajzs beállítása
- 3. lépés: Építés: a konzol hub, a pajzs bekötése
- 4. lépés: Építés: a vezérlők, az alkatrészek beállítása
- 5. lépés: Választható: Mellékletek
- 6. lépés: Programozás: Arduino
- 7. lépés: Programozás: HTML
- 8. lépés: Programozás: P5.js és Javascript
- 9. lépés: A program futtatása
- 10. lépés: Továbblépés
Videó: Arduino vezérlők: 10 lépés (képekkel)
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:43
Arduino játékvezérlő rendszer az Arduino és a p5.js könyvtár használatával. Ennek célja egy olyan Arduino projekt létrehozása, amely könnyen reprodukálható és bővíthető. A vezérlőcsatlakozásokat úgy tervezték, hogy egy csomó különböző érzékelőt és bemenetet használjon, amelyek az egyes vezérlőktől függően cserélhetők.
Ez a projekt a p5.js JavaScript könyvtár és a p5.js számára tervezett p5.play könyvtár együttes felhasználására is készült. Ezek a könyvtárak lehetővé teszik számunkra, hogy könnyedén programozzuk játékainkat. A p5.play webhelyen rengeteg oktatóanyag és példa található, amelyekkel a felhasználók játékokat készíthetnek. Ez a projekt lehetővé teszi a felhasználók számára, hogy gyakorolják hardver- és szoftverfejlesztési készségeiket.
1. lépés: Amire szüksége lesz
Eszközök:
- Forrasztópáka
- Forrasztó
- Huzalcsupaszítók
- Oldalvágók
- Fogó
Hardver:
- Arduino kompatibilis tábla (én Sparkfun Redboardot, valamint Arduino Unót és Leonardo -t használtam)
-
Perf tábla:
- 8 cm x 6 cm -es zöld perforációs táblák
- Aduino Uno pajzs parfüm tábla
-
Különféle érzékelők
- Joystickok
- Gombok (ellenállásokkal, 10k ohm, velük együtt)
- Potenciométerek
- Flex érzékelők
- Nyomásérzékelők
- Stb…
-
Huzal:
- Egy vezeték (26 AWG szilárdtestet használtam)
- Szalaghuzal és krimpek
- Break Away fejlécek (ebből legalább 20)
-
Opcionális hardver (ehelyett használhat kartont és gyorsragasztót/cipzárat):
- Kenyeretábla és jumper kábelek a prototípus készítéséhez
- 3D nyomtatott burkolatok
- Hardveres rögzítők (én M2.5 csavarokat használtam)
Szoftver:
- Arduino IDE
-
p5.js könyvtár
P5.játékkönyvtár is
- p5.serialcontrol
- Node.js
2. lépés: Építés: a konzol hub, a pajzs beállítása
Forrasztja a fejléceket az Arduino Uno pajzs perf táblához.
- A pajzsfejlécekkel kezdtem (tápellátás, analóg bemenet és digitális)
- Következnek a 2x5 fejlécek. Használhat 2x5 fejlécet, vagy csak 2 sor 5 leválasztható fejlécet. Ezeket függőlegesen A3 -mal és A4 -el sorakoztattam, és hagytam közöttük 2 szóközt.
3. lépés: Építés: a konzol hub, a pajzs bekötése
Ezután vezetékeinket szeretnénk a pajzson vezetni. Könnyebb a huzalokat a tetején vezetni, de ha tisztább megjelenést szeretne, futtathatja az alján.
A vezetékek vezetésekor figyelni kell a vázlatra (az Eagle sematikája letölthető). Megtekintheti a színes útmutatót is, hogy segítsen ebben.
Ennek az árnyékolásnak az az elképzelése, hogy minden analógból 3 analóg és 5 digitális bemenet engedélyezhető. Ez teljes mértékben kihasználja az Arduino Uno összes analóg bemenetét, valamint a szalagkábel többi vezetékét.
4. lépés: Építés: a vezérlők, az alkatrészek beállítása
A vezérlő felépítésének első lépése az, hogy meg kell tervezni, hogy mely érzékelőket használja. Példáimban van egy eléggé szabványos vezérlőm joystick -al és néhány gombbal. Van egy vezérlőm is, két csúszó potenciométerrel.
Ha meg szeretné ismételni ezt, megtekintheti a képeimet elhelyezésre.
A következő lépés a szalagkábel forrasztása a perforációs táblához.
- Csíkozza és ónozza a szalagkábelt
- Forrasztja a szalagkábelt a perf -tábla felső közepére.
A következő lépés a vezetékek vezetése. Először azzal kezdtem, hogy a tápfeszültséget (5V/piros vezeték) és a földet (barna vezeték) bekötem az érzékelőkbe. Ezután bekötöttem az analóg bemeneteket. Könnyűnek találtam a narancssárga kábelt (A0 vagy A3 analóg) vízszintes mozgáshoz, a sárga kábelt (A1 vagy A4 analóg) függőleges mozgáshoz.
Annak érdekében, hogy a dolgok következetesek legyenek, egy kis nyomógombot is lilára kötöttem az összes vezérlőmön. Ez hasznos lehet például a soros port bezárásakor (ezt később átnézem), valamint a menükben vagy a beállításokban.
Feltöltöttem egy gyors vázlatot a joystick vezérlőmről, ha meg szeretné nézni ezt. A pin-out diagramból láthatja az egyes vezérlők csatlakoztatásának lehetőségét (3 analóg bemenet és 5 digitális).
5. lépés: Választható: Mellékletek
Ez a lépés opcionális, de ha hozzáfér a 3D nyomtatóhoz, a projekt eredménye egy kicsit kifinomultabbnak és befejezettebbnek tűnik. Amint az a prototípusaimon is látható, egyszerű kartonpapírt használtam, hogy megakadályozzam, hogy a perforációs táblák alján lévő forrasztási kötések az ujjait piszkálják.
A 3D -s modelljeimet ehhez a lépéshez csatolja. Létrehoztam a hub burkolatait mind az Arduino Uno/Leonardo, mind a Sparkfun RedBoard számára (ez a tábla valamivel szélesebb és mini USB -t használ).
A vezérlőknél ezeket M2.5 csavarokkal rögzítheti. Az anyát a NYÁK oldalán tartottam, alátétet és alján lévő csavart használok.
Az általam használt potenciométerek forgatógombjainak 3D modelljét is mellékeltem.
Az összes 3D fájlt megtalálhatja a GitHubon.
6. lépés: Programozás: Arduino
Kezdjük azzal, hogy beállítunk egy egyszerű vázlatot a teszteléshez. Azt javaslom, hogy használja az ITP által a NYU -n készített oktatóanyagot, amelyet itt talál. A bemutató elvégzéséhez telepítenie kell a p5.serialcontroll és a node.js fájlokat. Ebben az oktatóanyagban bemutatjuk az Arduino beállítását soros adatok küldésére, amelyeket a javascript könyvtárunk, a p5.js. használhat. Ehhez használhatja az elõzõ lépésekben létrehozott hubot és vezérlõt, vagy megismételheti az oktatóanyagban bemutatott áramköröket. Ez az oktatóanyag az Arduino Uno A0 analóg bemeneti érintkezőjét használja, amely az első vezérlő narancssárga vezetékéhez van hozzárendelve.
A következő oktatóanyag, amelyet követni szeretne, itt található. Ez az oktatóanyag végigvezeti Önt több bemenet beállításán és azok használatán a p5.js -ben. Az oktatóanyagban az A0 és A1 analóg bemeneteket használják. Ezek a rendszerünk 1. vezérlőjének narancssárga és sárga vezetékeinek felelnek meg.
Miután végigment a fenti oktatóanyagokon, programozhatjuk az Arduino programot. Az alábbi kódot szeretnénk használni:
// vezérlő 1const int dig2 = 2; // blue const int dig3 = 3; // lila const int dig4 = 4; // szürke const int dig5 = 5; // fehér const int dig6 = 6; // fekete // vezérlő 2 const int dig7 = 7; // blue const int dig8 = 8; // lila const int dig9 = 9; // szürke const int dig10 = 10; // fehér const int dig11 = 11; //fekete
void setup () {
Sorozat.kezdet (9600); while (Serial.available () <= 0) {Serial.println ("hello"); // kezdő üzenet küldése késleltetés (300); // várjon 1/3 másodpercet} pinMode (dig2, INPUT); pinMode (dig3, INPUT); pinMode (dig4, INPUT); pinMode (dig5, INPUT); pinMode (dig6, INPUT); pinMode (dig7, INPUT); pinMode (dig8, INPUT); pinMode (dig9, INPUT); pinMode (dig10, INPUT); pinMode (dig11, INPUT); }
void loop () {
if (Serial.available ()> 0) {// olvassa el a bejövő bájtot: int inByte = Serial.read (); // olvasd el az érzékelőt:
ANALOG vezérlő 1
int analog0 = analogRead (A0); int analóg1 = analógRead (A1); int analog2 = analogRead (A2); // ANALOG Controller 2 int analog3 = analogRead (A3); int analog4 = analogRead (A4); int analog5 = analogRead (A5); // DIGITAL Controller 1 int digital2 = digitalRead (dig2); int digital3 = digitalRead (dig3); int digital4 = digitalRead (dig4);
int digital5 = digitalRead (dig5);
int digital6 = digitalRead (dig6); // DIGITAL Controller 2 int digital7 = digitalRead (dig7); int digital8 = digitalRead (dig8); int digital9 = digitalRead (dig9); int digital10 = digitalRead (dig10); int digital11 = digitalRead (dig11); // az eredmények nyomtatása: Serial.print (analóg0); // [0] Serial.print (","); Serial.print (analóg1); // [1] Serial.print (","); Soros.nyomtatás (analóg2); // [2] Serial.print (","); // Start Controller 2 data Serial.print (analóg3); // [3] Serial.print (","); Serial.print (analóg4); // [4] Serial.print (","); Soros.nyomtatás (analóg5); // [5] Serial.print (","); Soros.nyomat (digitális2); // [6] Serial.print (","); Soros.nyomat (digitális3); // [7] Serial.print (","); Serial.print (digital4); // [8] Sorozat.nyomtatás (","); Serial.print (digitális5); // [9] Serial.print (","); Soros.nyomat (digitális6); // [10] Serial.print (","); // Indítsa el a vezérlő 2 adatait Serial.print (digital7); // [11] Serial.print (","); Soros.nyomat (digitális8); // [12] Serial.print (","); Serial.print (digitális9); // [13] Serial.print (","); Serial.println (digital10); // [14] Sorozat.nyomtatás (","); Serial.println (digital11); // [15]}}
Ez a kód elküldi a soros adatokat mindkét vezérlőnkből 16 számból álló tömbként. E számok közül az első 6 az analóg bemenetünk (0-1023 tartományban), a fennmaradó 10 érték pedig a digitális értékünk (0 vagy 1).
Miután feltöltöttük a kódunkat, tesztelhetjük ezt a soros monitor megnyitásával, és egy érték beírásával a soros monitorunkba, ahogy azt az ITP 2. oktatóanyagában tettük. Értékeink sorát vesszővel kell elválasztanunk.
7. lépés: Programozás: HTML
Miután beállítottuk és működtetjük az Arduino -t, elkezdhetjük a webes dolgaink programozását. A HTML kód nagyon egyszerű.
test {párnázás: 0; margó: 0;}
A html kód egyszerűen összekapcsolja a javascript fájljainkat. Kódunk nagy része valójában a vázlat.js fájlban fog megjelenni.
8. lépés: Programozás: P5.js és Javascript
Miután beállítottuk a HTML -t, dolgozhatunk a JavaScript -en. Ha még nem tette meg, akkor most töltse le a p5.js és a p5.play fájlokat, és adja hozzá ezeket a könyvtárak könyvtárához a webhelye könyvtárában.
- p5.js
- p5.játék
Előző lépésünkben beállítottuk HTML fájlunkat a p5.js és p5.play könyvtáraink meghívására. Azt is beállítottuk, hogy a sketch.js fájlunkat használja, ahol a legtöbb programozást elvégezzük. Az alábbiakban a csontvázunk kódja található. Itt is megtalálhatja.
// Serial Variablesvar serial; // változó a soros port könyvtár egy példányának tárolására var portName = 'COM4'; // itt írja be a soros port nevét // Globális játékváltozók ---------------
// Beállítási funkció ----------------------
függvénybeállítás () {createCanvas (640, 480); soros = új p5. SerialPort (); // új példány létrehozása a serialport könyvtárból serial.on ('lista', printList); // visszahívási funkció beállítása a serialport listal eseményhez serial.on ('connected', serverConnected); // visszahívás a szerverhez való csatlakozáshoz serial.on ('open', portOpen); // visszahívás a port megnyitására serial.on ('data', serialEvent); // visszahívás, amikor új adatok érkeznek serial.on ('hiba', serialError); // hibák visszahívása serial.on ('bezár', portClose); // visszahívás a portzáró serial.list (); // soros portok listázása serial.open (portName); // soros port megnyitása} // Draw Funkció ----------------------- function draw () {background (0); // fekete háttér} // A soros adatok értelmezése itt ---------- function serialEvent () {// olvassa el a karakterláncot a soros portról //, amíg meg nem kapja a kocsi visszatérését és az új sort: var inString = serial. readStringUntil ('\ r / n'); // ellenőrizze, hogy valóban létezik -e beállítás: if (inString.length> 0) {if (inString! == 'hello') {// ha üdvözli, figyelmen kívül hagyja azt var sensors = split (inString, ', '); // ossza szét a karakterláncot a vesszőn, ha (érzékelők.hossz> 16) {// ha tizenhat elem van (6 analóg, 10 digitális) // Itt használhatja az érzékelő adatait:
}
} serial.write ('x'); // küldjön egy bájtot további soros adatok kérésére}} // kapja meg a portok listáját: function printList (portList) {// A portList a (var i = 0; i <portList.length; i ++) soros portnevek tömbje {// Jelenítse meg a listát a konzolon: print (i + "" + portList ); }} function serverConnected () {print ('csatlakozik a szerverhez'); } function portOpen () {print ('soros port nyitva.')} function serialError (err) {print ('Valami hiba történt a soros porttal.' + err); } function portClose () {print ('A soros port zárva.'); } function closedCode () {serial.close (portName); return null; } window.onbeforeunload = záróKód;
Miután megmentette a csontvázat. Ezeket az értékeket hasonlóan használhatja, mint az ITP bemutatójában. Az Arduino -ból a 6. lépésben küldött értékeket 16 számból álló tömbként küldjük el. Az alábbiakban elemezzük ezt a tömböt.
// A soros adatok értelmezése itt ----------
function serialEvent () {// olvassa el a karakterláncot a soros portról //, amíg meg nem kapja a kocsi visszatérését és az új sort: var inString = serial.readStringUntil ('\ r / n'); // ellenőrizze, hogy valóban létezik -e beállítás: if (inString.length> 0) {if (inString! == 'hello') {// ha üdvözli, figyelmen kívül hagyja azt var sensors = split (inString, ', '); // ossza szét a karakterláncot a vesszőn, ha (érzékelők.hossz> 16) {// ha tizenhat elem van (6 analóg, 10 digitális) // Itt használja az érzékelő adatait:}} serial.write ('x'); // több soros adatot kérő bájt küldése}}
Most futtathatjuk programunkat, hogy lássuk, működik -e!
9. lépés: A program futtatása
Most futtathatjuk a programunkat, hogy lássuk, működik -e. Létrehozhatja saját játékát az előző fájlunk skeleton.js fájljával, vagy használhatja az itt található egyszerű Pipe játékot.
Az ITP Lab -hoz hasonlóan a program futtatásához az alábbi lépéseket fogjuk követni.
- Csatlakoztassa az Arduino -t a használni kívánt vezérlő (k) vel.
- Nyissa meg a 5. soros vezérlőt
- Változtassa meg a p5 vázlat portját a használt portra (ha a csontvázat használja, ez a 3. sorban van)
- Nyissa meg a p5 vázlatára hivatkozó HTML -fájlt
Ha külső adathordozóval rendelkezik, például képekkel vagy letöltött betűtípusokkal, akkor ezt kiszolgálón kell futtatnia. Futtathat egy egyszerű helyi python szervert, ha szeretné.
10. lépés: Továbblépés
Ha tovább szeretne lépni, és ehhez több játékot szeretne kifejleszteni, kövesse az itt található p5.play különféle példákat. Az alábbiakban egy példa egy bonyolultabb játékra, amelyet én készítettem. Ez egy 1 vs 1 tank shooter játék. A GitHubon megtalálhatja az összes forrást.
Ajánlott:
Útmutató: A Raspberry PI 4 fej nélküli (VNC) telepítése Rpi-képalkotóval és képekkel: 7 lépés (képekkel)
Útmutató: A Raspberry PI 4 fej nélküli (VNC) telepítése Rpi-képalkotóval és képekkel: Ezt a Rapsberry PI-t tervezem használni egy csomó szórakoztató projektben a blogomban. Nyugodtan nézd meg. Vissza akartam kezdeni a Raspberry PI használatát, de nem volt billentyűzetem vagy egér az új helyen. Rég volt, hogy beállítottam egy málnát
Redbear BLE Nano V2 egyéni vezérlők a PfodApp segítségével - nincs szükség kódolásra: 6 lépés
Redbear BLE Nano V2 egyéni vezérlők a PfodApp segítségével - Nincs szükség kódolásra: Frissítés: 2017. szeptember 15. - Ez az utasítás frissítve lett a RedBear BLE Nano, V2 legújabb verziójára. Ennek az utasításnak az előző verziója, amely a RedBear BLE Nano V1.5 -öt célozta meg, itt érhető el. Frissítés november 15 -én - 2017 tehát
Adafruit Feather NRF52 egyéni vezérlők, nincs szükség kódolásra: 8 lépés (képekkel)
Adafruit Feather NRF52 egyéni vezérlők, nincs szükség kódolásra: Frissítés 2019. április 23. - A dátum/idő ábrákhoz, amelyek csak Arduino millis () -et használnak, lásd az Arduino dátum/idő ábrázolása/naplózása Millis () és PfodApp használatával A legújabb ingyenes pfodDesigner V3.0.3610+ generált fejezze be az Arduino vázlatait az adatok ábrázolásához dátum/idő szerint
A nem támogatott vezérlők használata IOS 9.3.5 eszközön: 23 lépés
A nem támogatott vezérlők használata IOS 9.3.5 -ös eszközzel: Szükséges anyagok: PlayStation 4 -es kontroller Villámtöltő kábel Windows 10 -et futtató iPod Touch laptop Laptop megfelelő töltőkábel
Arduino alapú Nextion érintőképernyős vezérlők: 4 lépés
Arduino alapú Nextion érintőképernyős vezérlők: Egy barátja hűvös megoldást keresett autója HVAC (fűtés, szellőzés, légkondicionálás) vezérléséhez érintőképernyőn és Arduino segítségével. Az ötletet egy régebbi projektem ihlette egy feszített limuzin belső vezérléséről, de