Tartalomjegyzék:
- 1. lépés: Anyagok
- 2. lépés: Prototípuskészítés
- 3. lépés: A tok lézeres vágása
- 4. lépés: Arcade gombok forrasztása
- 5. lépés: Halmozza fel a gombokat, és csatlakoztassa őket a táblához
- 6. lépés: A pokol kódolása
- 7. lépés: Minden működik
Videó: Plug and Play Arcade gombok: 7 lépés (képekkel)
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:43
Nemrég kezdtem el használni az Arduino -t a projektjeim elkészítéséhez. Tervezőként szeretek egyedi felületeket készíteni a játékaimhoz/interaktív projektjeimhez.
Az egyetlen probléma, amellyel találkoztam, hogy a soros kommunikáció használata meglehetősen bonyolult, és hajlamos a problémákra és hibákra, és gyors és egyszerű megoldást akartam, hogy külső gombokat használhassak a játékaim vezérléséhez.
Mivel plug and play eszközt szerettem volna, amelyet azonnal használhat bármilyen számítógéppel, vettem egy Arduino Leonardót. Majdnem azonos az Unóval, de néhány különbséggel. A fő különbség, amit ebben a projektben a magam javára fogok használni, az, hogy képes HID -ként működni. A HID vagy emberi interfész eszköz egy USB -protokoll, amely lehetővé teszi, hogy számítógépe felismerje és elfogadja a billentyűzetről és a számítógépes egérről származó bevitelt anélkül, hogy minden eszközhöz egyedi illesztőprogramokat kellene telepítenie.
Megjegyzés: Uno -t is használhat, ha frissíti a firmware -t, amint az itt látható.
1. lépés: Anyagok
Ehhez a projekthez szüksége lesz:
1x HID -kompatibilis mikrokontroller (van néhány, például Arduino micro, Due & Leonardo, az Arduino Leonardo -t fogom használni)
1x USB - arduino kábel (a Leonardo esetében ez az USB micro)
3x Arcade gomb (ezeket vettem)
1x forrasztás nélküli kenyeretábla
3x 10k ohmos ellenállások
3x 220 ohmos ellenállások
Jumper vezetékek
Természetesen további gombokat is hozzáadhat, vagy mindent forraszthat egy kenyérlapra, hogy állandóbbá tegye a dolgokat.
2. lépés: Prototípuskészítés
Tehát mielőtt megvásároltam a használni kívánt árkádgombokat, ezt szabványos nyomógombokkal teszteltem. Vegye fel a gombokat szabványos módon, úgy vélem, hogy 10K ohmos ellenállásokat használtam.
A programozás a Leonardo -nak köszönhetően nagyon egyszerű. Fel kell vennie a Billentyűzet könyvtárat. A kód alapjául az Arduino szabványos "Billentyűzetüzenet" példáját használtam.
Most az a kérdés, hogyan szeretné, hogy a gombok működjenek. Alapvetően két választási lehetősége van: egyetlen gombnyomás és folyamatos betűfolyam, ha megnyomják. Valójában a projektjétől függ, hogy mit szeretne.
Ha azt szeretné, hogy egyetlen gombnyomással történjen valami, például egy ugrás vagy egy ki/be kapcsoló, akkor válassza az egyetlen nyomómódot. Ezzel a módszerrel nézi a gomb állapotát, fel vagy le? Akkor összehasonlítod az előző állapottal, volt már fent vagy lefelé? Ha az előző gombállapot megegyezik a jelenlegi gombbal, semmi sem történik. De ha a gomb állapota megváltozik, például a gomb megnyomásakor vagy elengedésekor történik valami. A kódomban csak akkor ír be betűt, amikor megnyomja a gombot, nem pedig elengedéskor, de ezt megváltoztathatja.
#include "Keyboard.h"
const int gombLeft = A0; // bemeneti csap a nyomógombhoz
const int gombJog = A1; const int gombUp = A2;
int previousButtonStateLeft = HIGH; // nyomógomb állapotának ellenőrzésére
int previousButtonStateRight = HIGH; int previousButtonStateUp = HIGH;
void setup () {
// a nyomógomb gombjának bemenetévé tétele: pinMode (buttonLeft, INPUT); pinMode (buttonRight, INPUT); pinMode (buttonUp, INPUT); // a billentyűzet feletti vezérlés inicializálása: Keyboard.begin (); }
void loop () {
// olvassa el a nyomógombot: int buttonStateLeft = digitalRead (buttonLeft); // ha a gomb állapota megváltozott, if ((buttonStateLeft! = previousButtonStateLeft) // és jelenleg le van nyomva: && (buttonStateLeft == HIGH)) {// írjon be egy üzenetet Keyboard.print ("a"); } // az aktuális gombállapot mentése összehasonlítás céljából legközelebb: previousButtonStateLeft = buttonStateLeft;
// olvassa el a nyomógombot:
int buttonStateRight = digitalRead (buttonRight); // ha a gomb állapota megváltozott, if (((buttonStateRight! = previousButtonStateRight) // és jelenleg le van nyomva: && (buttonStateRight == HIGH)) {// írjon be egy üzenetet Keyboard.print ("w"); } // az aktuális gombállapot mentése összehasonlítás céljából legközelebb: previousButtonStateRight = buttonStateRight;
// olvassa el a nyomógombot:
int buttonStateUp = digitalRead (buttonUp); // ha a gomb állapota megváltozott, if (((buttonStateUp! = previousButtonStateUp) // és jelenleg le van nyomva: && (buttonStateUp == HIGH)) {// írjon be egy üzenetet Keyboard.print ("d"); } // az aktuális gombállapot mentése összehasonlítás céljából legközelebb: previousButtonStateUp = buttonStateUp; }
Ha azt szeretné, hogy valami folyamatosan történjen mindaddig, amíg a gombot lenyomják, ahogy szeretné, ha balra vagy jobbra mozogna, akkor hagyja, hogy írjon egy betűt anélkül, hogy ellenőrizné az előző gombállapotot. Ne felejtse el hozzáadni egy kis késleltetést, hogy megakadályozza az őrültséget, és hogy megakadályozza a gombok esetleges ugrálását. Vannak elegánsabb módszerek a probléma megoldására, de ez egyszerű és gyors.
#include "Keyboard.h"
const int gombLeft = A0; // bemeneti csap a nyomógombhoz
const int gombJog = A1; const int gombUp = A2;
void setup () {
// hogy a pushButton pin legyen bemenet: pinMode (buttonLeft, INPUT); pinMode (buttonRight, INPUT); pinMode (buttonUp, INPUT); // a billentyűzet feletti vezérlés inicializálása: Keyboard.begin (); }
void loop () {
// olvassa el a nyomógombot: int buttonStateLeft = digitalRead (buttonLeft); if (buttonStateLeft == HIGH) // ha a gombot megnyomják {// írja be az üzenetet Keyboard.print ("a"); késleltetés (50); // Késleltetés a visszapattanáshoz és a számítógép felzárkózásához}
// olvassa el a nyomógombot:
int buttonStateRight = digitalRead (buttonRight); if (buttonStateRight == HIGH) // ha a gombot megnyomják {// írja be az üzenetet Keyboard.print ("w"); késleltetés (50); // Késleltetés a visszapattanáshoz és a számítógép felzárkózásához}
// olvassa el a nyomógombot:
int buttonStateUp = digitalRead (buttonUp); if (buttonStateUp == HIGH) // ha a gombot megnyomják {// írja be az üzenetet Keyboard.print ("d"); késleltetés (50); // Késleltetés a visszapattanáshoz és a számítógép felzárkózásához}}
Mindig mindkét módszer kombinációját használhatja, attól függően, hogy mi felel meg leginkább az Ön igényeinek.
3. lépés: A tok lézeres vágása
A tokhoz 3 mm -es mdf -t használtam, 2 mm -es plexi betéttel. Hozzáadtam a betétet, mivel később szeretnék hozzáadni néhány LED -et a tok belsejébe, hogy szép és ragyogó legyen.
Beírtam a méreteket a makercase -be, és letöltöttem az svg fájlt. Kinyitottam az Illustratorban, és hozzáadtam a lyukakat, ahol akartam. Ha nincs Illustrator, használhatja az Inkscape -et ehhez a lépéshez.
Természetesen nem kell lézervágót használni, mivel ez egy egyszerű doboz, néhány lyukkal. Elég egyszerűnek kell lennie létrehozni hagyományosabb elektromos szerszámokkal (vagy akár kéziszerszámokkal!). Csak nagyon lusta vagyok, és hozzáférhettem egy lézervágóhoz.
4. lépés: Arcade gombok forrasztása
Az arcade gomb (vagy legalábbis az enyém) három részből áll. A műanyag burkolat, a LED -tartó (LED -el benne) és a mikrokapcsoló. A mikrokapcsoló a gomb tényleges gombrésze, és ehhez szüksége lesz az Arduino -hoz való csatlakozáshoz. A mikrokapcsolón három csatlakozó található (fém bitek, amelyek kilógnak, ahol forraszthatja a vezetékeket). A tetején lévő (vagy alul lévő, amit akar) a talaj. A másik két terminál a normál nyitott (NO) és a normál zárt (NC). A NO azt jelenti, hogy ha lenyomja a kapcsolót, akkor létrejön a kapcsolat. Az NC azt jelenti, hogy ha megnyomja a gombot, megszakítja a kapcsolatot. Ebben a projektben a NO -t fogjuk használni. A képeken a mikrokapcsolómon a földet, a NO -t és az NC -t címkéztem.
A gombjaim világítanak, így a vezetékeket a LED -tartóhoz forrasztottam. Feltétlenül színezze be a vezetékeket, hogy tudja, melyik oldal az anód és melyik a katód (a LED pozitív és negatív oldala).
A fejrészeket forrasztottam a vezetékeimre, hogy könnyen használhatók legyenek forrasztás nélküli deszkával. Most forrasztottam a vezetéket egy csatlakozócsapra, és egy kis hőre zsugorodó csövet tettem körbe, hogy rugalmasabbak legyenek.
5. lépés: Halmozza fel a gombokat, és csatlakoztassa őket a táblához
Most itt az ideje, hogy összerakja az ügyességi gombokat a tokjában. Távolítsa el a rögzítőgyűrűt a műanyag burkolatról, és illessze át a tokon lévő lyukon. A gomb rögzítéséhez rögzítse a zárógyűrűt a másik oldalon. Ragassza be a LED -tartóba, és csavarja el, hogy rögzítse a helyére. Rángassa be a mikrokapcsolókat (kis gombok és lyukak vannak egymáshoz igazítva, hogy a helyükön maradjanak).
A kapcsolók a táblához való csatlakoztatásához távolítsa el a nyomógombokat, amelyeket esetleg hozzáadott. Csatlakoztassa a mikrokapcsoló földjétől vezető vezetéket az Arduino földjéhez és az ellenálláshoz (ahol a nyomógomb lába volt). Csatlakoztassa a mikrokapcsoló NO -jából vezető vezetéket az Arduino 5V -hoz.
A LED -vezetékeknél csatlakoztassa a negatív vezetéket a földhöz, a pozitívot 220OHM ellenálláson keresztül az 5V -hoz. Ha így csatlakoztatja őket, akkor mindig bekapcsolva lesznek. Ha szeretné, hozzáadhatja őket a kódhoz, és kérheti, hogy a gombokkal szinkronban be- és kikapcsoljanak.
6. lépés: A pokol kódolása
Tehát most a régi kódhoz csatolta a képzeletbeli új gombjait, és hirtelen már nem működik úgy, ahogy kellene. A betűk egyszerre kettőt vagy hármat jelennek meg, és nem működik úgy, mint az egyszerű HTML5 -játékoknál. Üdvözöljük a pokolban.
Először is. A kód, amit a prototípus készítésekor írtunk? jól működik és egyszerű, de nem elegáns. Ha további gombokat szeretne hozzáadni, másolja ki és illessze be a kódrészleteket, és módosítsa az összes értéket. Ha elfelejt egyet közülük, belép a hibajavító pokolba. Felismer egy témát itt? A kódolás pokol, de nagyon szórakoztató, problémamegoldó pokol.
Szép, rövid kódot akarunk. Tehát minden egyes gomb egész számot tömbre cserélünk. Ily módon, ha további gombokat szeretne hozzáadni, akkor csak a gombok mennyiségét, a gombok helyét és a kimenetét kell megváltoztatnia. A kulcsbemeneteket ASCII -re is megváltoztatjuk, mert… jobban működik?
Most, ha olyan vagy, mint én, leírsz egy egyszerű és egyszerű módot a gombok használatára, és nem fog úgy működni, ahogy szeretnéd. Tehát új verziókat hoz létre (emlékezzen a gyerekekre, növekvő biztonsági mentésekre!), Próbáljon ki különböző dolgokat, írjon folyamatosan bonyolultabb kódokat, amelyek még mindig nem működnek jól, és végül térjen vissza az egyszerű kódhoz, amelyet órákkal ezelőtt írt, ÉS észrevesz egy kis hibát, amely azonnal mindent helyrehoz.
Hadd kíméljek meg ettől az utazástól, íme a működőkód:
Jogi nyilatkozat: ezt a szöveget több órányi kódolás és hibajavítás után írták, egy nagyon egyszerű kódot. Kérjük, hagyja figyelmen kívül a csalódás jeleit, és koncentráljon az alább közzétett munkakódra;)
#tartalmazza a "Keyboard.h" #define gombot3
int buttonPin = {
A0, A1, A2}; // Hol vannak a gombok? int asciiLetter = {97, 100, 119}; // Betűk ASCII -ben, itt: a, d, w int buttonState [buttonAmount]; // Nyomva van a gomb vagy sem?
void setup () {
for (int i = 0; i <buttonAmount; i ++) {// ciklusban a pinMode (buttonPin , INPUT); // állítsa be az összes tüskét bemenetre}}
void loop () {
for (int i = 0; i <buttonAmount; i ++) // ciklus a tömbön keresztül {buttonState = digitalRead (buttonPin ); // Mit csinálnak a gombok? if (buttonState == HIGH) {// Ha megnyomja a gombot Keyboard.press (asciiLetter ); // küldje el a megfelelő betűt} else // ha a gombot nem nyomja meg {Keyboard.release (asciiLetter ); // elengeded a levelet}}
}
7. lépés: Minden működik
Élvezze a plug & play egyéni vezérlőt!
Ha tetszett ez az oktatható, akkor fontolja meg, hogy szavaz rám!
Ajánlott:
ESP32 kapacitív érintéses bemenet gombok "fém lyuk dugóival": 5 lépés (képekkel)
ESP32 kapacitív érintőbemenet gombok "fém lyuk dugóinak" használatával: A tervezési döntések véglegesítésekor egy közelgő ESP32 WiFi Kit 32 alapú projekthez, amely háromgombos bemenetet igényel, az egyik észrevehető probléma az volt, hogy a WiFi Kit 32 nem rendelkezik egyetlen mechanikus nyomógombbal, mégis egyedül három mechanikus gomb, f
Az Arduino menüje és a gombok használata: 10 lépés (képekkel)
Az Arduino menüje és a gombok használata: Az Arduino 101 bemutatójában megtanítom a környezet beállítására a Tinkercad alkalmazásban. Azért használom a Tinkercad -ot, mert ez egy nagyon hatékony online platform, amely lehetővé teszi számomra, hogy számos készséget mutassak be a diákoknak áramkörök építéséhez. Bátran
2-4 játékos Plug and Play Raspberry Pi Arcade: 11 lépés
2-4 játékos Plug and Play Raspberry Pi Arcade: Plug and play, nem csak egy kifejezés azokra a vacak műanyag játékkonzolokra, amelyeket a helyi Walmartban vásárolt. Ez a Plug and Play árkádszekrény működik, egy Raspberry Pi 3 Retropie -t futtatva, ez a gép teljes testreszabási képességekkel büszkélkedhet
Plug 'n' Play Retro Arcade konzol: 5 lépés (képekkel)
Plug 'n' Play Retro Arcade Console: A Plug 'n' Play Retro Arcade Console sok kedvenc klasszikus konzolját és játékát egyetlen eszközbe csomagolja. A legjobb az egészben az, hogy mindössze annyit kell tennie, hogy csatlakoztatja a konzolt a TV videobemenetéhez és egy áramforráshoz, hogy élvezze az összes
Forrasztás nélküli kenyeretábla elrendezési lapok (plug and play elektronika): 3 lépés (képekkel)
Solderless Breadboard Layout Sheets (Plug and Play Electronics): Itt egy szórakoztató rendszer, amelyet úgy terveztek, hogy gondoskodjon az áramkör kenyérszemlézésével járó fejfájásokról. Ez egy egyszerű sablonfájl -készlet, amely valós világméretű elektronikus alkatrészekkel van méretezve. Egy vektoros rajzoló program segítségével egyszerűen mozgathatja a c