Tartalomjegyzék:

Arduino vezérlők: 10 lépés (képekkel)
Arduino vezérlők: 10 lépés (képekkel)

Videó: Arduino vezérlők: 10 lépés (képekkel)

Videó: Arduino vezérlők: 10 lépés (képekkel)
Videó: Arduino keretrendszer telepítése 2024, November
Anonim
Arduino vezérlők
Arduino vezérlők
Arduino vezérlők
Arduino vezérlők

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

Amire szüksége lesz
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

Építés: a konzol hub, a pajzs beállítása
É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

Épület: a konzol hub, a pajzs bekötése
Épület: a konzol hub, a pajzs bekötése
Épület: a konzol hub, a pajzs bekötése
Épület: a konzol hub, a pajzs bekötése
Épület: a konzol hub, a pajzs bekötése
Épület: 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

Építés: a vezérlők, az alkatrészek beállítása
Építés: a vezérlők, az alkatrészek beállítása
Építés: a vezérlők, az alkatrészek beállítása
Építés: a vezérlők, az alkatrészek beállítása
Építés: a vezérlők, az alkatrészek beállítása
É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.

  1. Csíkozza és ónozza a szalagkábelt
  2. 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

Választható: burkolatok
Választható: burkolatok
Választható: burkolatok
Választható: burkolatok
Választható: burkolatok
Választható: burkolatok

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

Programozás: Arduino
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

A program futtatása
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: