Sisällysluettelo:
- Vaihe 1: Materiaalit
- Vaihe 2: Prototyyppien luominen
- Vaihe 3: Kotelon leikkaaminen laserilla
- Vaihe 4: Arcade -painikkeiden juottaminen
- Vaihe 5: Pinoa napit ja yhdistä ne taulullesi
- Vaihe 6: Helvetin koodaus
- Vaihe 7: Kaikki toimii
Video: Plug and Play Arcade -painikkeet: 7 vaihetta (kuvilla)
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:03
Aloin äskettäin käyttää Arduinoa projektien tekemiseen. Suunnittelijana rakastan mukautettujen rajapintojen luomista peleilleni/interaktiivisille projekteilleni.
Yksi ongelma, jonka törmäsin siihen, että sarjaliikenteen käyttäminen on melko monimutkaista ja altis ongelmille ja bugeille, ja halusin nopean ja helpon ratkaisun, jonka avulla voin käyttää pelejäni ulkoisten painikkeiden avulla.
Koska halusin plug and play -laitteen, jota voit käyttää heti minkä tahansa tietokoneen kanssa, ostin Arduino Leonardon. Se on lähes identtinen Unon kanssa, mutta siinä on muutamia eroja. Suurin ero, jota hyödyn tässä projektissa, on sen kyky toimia HID: nä. HID eli ihmisen käyttöliittymä on USB -protokolla, jonka avulla tietokoneesi voi tunnistaa ja hyväksyä näppäimistöjen ja tietokoneen hiiren syötteet ilman, että sinun on asennettava mukautettuja ohjaimia kullekin laitteelle.
Huomautus: voit myös käyttää Unoa, jos päivität laiteohjelmiston, kuten tässä on esitetty.
Vaihe 1: Materiaalit
Tätä projektia varten tarvitset:
1x HID -yhteensopiva mikrokontrolleri (muutamia, kuten Arduino micro, Due & Leonardo, käytän Arduino Leonardoa)
1x USB -arduino -kaapeli (Leonardo -laitteelle se on USB -mikro)
3x Arcade -painikkeet (ostin nämä)
1x juoton leipälauta
3x 10k ohmin vastukset
3x 220 ohmin vastukset
Hyppyjohdot
Voit tietysti lisätä lisää painikkeita tai juottaa kaiken leipälautaan tehdäksesi asioista pysyvämpiä.
Vaihe 2: Prototyyppien luominen
Joten ennen kuin ostin arcade -painikkeita, joita halusin käyttää, testasin tämän tavallisilla painikkeilla. Johdotkaa painikkeet normaalilla tavalla, uskon käyttäneeni 10K ohmin vastuksia.
Ohjelmointi on Leonardon ansiosta melko yksinkertaista. Sinun on sisällytettävä näppäimistökirjasto. Käytin koodini perustana Arduinon vakiomallia "Näppäimistöviesti".
Nyt kysymys on, miten haluat painikkeidesi toimivan. Sinulla on periaatteessa kaksi vaihtoehtoa, yksittäiset painikkeet ja jatkuva kirjainvirta, jos niitä painetaan. Se riippuu todella projektistasi, mitä haluat.
Jos haluat yhden tapahtuman tapahtuvan, jos jotain näppäintä painetaan, kuten hyppy tai virtakytkin, valitset yhden painalluksen. Tällä menetelmällä katsot painikkeen tilaa, onko se ylös vai alas? Sitten vertaat sitä edelliseen tilaan, oliko se jo ylös tai alas? Jos edellinen painikkeen tila on sama kuin nykyinen painikkeen tila, mitään ei tapahdu. Mutta jos painikkeen tila muuttuu, jotain tapahtuu, kun painat tai vapautat painikkeen. Koodissani se kirjoittaa vain kirjaimen, kun painiketta painetaan, ei vapautettaessa, mutta voit muuttaa tätä.
#include "Keyboard.h"
const int -painikeVasen = A0; // painonapin tulotappi
const int -painikeOikea = A1; const int -painikeUp = A2;
int previousButtonStateLeft = HIGH; // painikkeen tilan tarkistamiseksi
int previousButtonStateRight = HIGH; int previousButtonStateUp = HIGH;
void setup () {
// tehdä pushButton -nastasta tulo: pinMode (buttonLeft, INPUT); pinMode (buttonRight, INPUT); pinMode (buttonUp, INPUT); // näppäimistön hallinnan alustaminen: Keyboard.begin (); }
void loop () {
// lukee painike: int buttonStateLeft = digitalRead (buttonLeft); // jos painikkeen tila on muuttunut, if ((buttonStateLeft! = previousButtonStateLeft) // ja sitä painetaan tällä hetkellä: && (buttonStateLeft == HIGH)) {// kirjoita viesti Keyboard.print ("a"); } // tallenna painikkeen nykyinen tila vertailua varten seuraavan kerran: previousButtonStateLeft = buttonStateLeft;
// lue painike:
int buttonStateRight = digitalRead (buttonRight); // jos painikkeen tila on muuttunut, if ((buttonStateRight! = previousButtonStateRight) // ja sitä painetaan tällä hetkellä: && (buttonStateRight == HIGH)) {// kirjoita viesti Keyboard.print ("w"); } // tallenna painikkeen nykyinen tila vertailua varten seuraavan kerran: previousButtonStateRight = buttonStateRight;
// lue painike:
int buttonStateUp = digitalRead (buttonUp); // jos painikkeen tila on muuttunut, if ((buttonStateUp! = previousButtonStateUp) // ja sitä painetaan tällä hetkellä: && (buttonStateUp == HIGH)) {// kirjoita viesti Keyboard.print ("d"); } // tallenna painikkeen nykyinen tila vertailua varten seuraavan kerran: previousButtonStateUp = buttonStateUp; }
Jos haluat jotain tapahtuvan jatkuvasti niin kauan kuin painiketta painetaan, kuten haluat vasemmalle tai oikealle liikkeelle, anna sen kirjoittaa kirje tarkistamatta edellisen painikkeen tilaa. Muista lisätä pieni viive estääksesi sen menemästä hulluksi ja estämään painikkeidesi mahdolliset pomppimiset. On olemassa enemmän tyylikkäitä tapoja ratkaista tämä ongelma, mutta tämä on helppoa ja nopeaa.
#include "Keyboard.h"
const int -painikeVasen = A0; // painonapin tulotappi
const int -painikeOikea = A1; const int -painikeUp = A2;
void setup () {
// tehdä pushButton -nastasta tulo: pinMode (buttonLeft, INPUT); pinMode (buttonRight, INPUT); pinMode (buttonUp, INPUT); // näppäimistön hallinnan alustaminen: Keyboard.begin (); }
void loop () {
// lukee painike: int buttonStateLeft = digitalRead (buttonLeft); if (buttonStateLeft == HIGH) // jos painiketta painetaan {// kirjoita viesti Keyboard.print ("a"); viive (50); // Pudotuksen viivästyminen ja tietokoneen saaminen kiinni}
// lue painike:
int buttonStateRight = digitalRead (buttonRight); if (buttonStateRight == HIGH) // jos painiketta painetaan {// kirjoita viesti Keyboard.print ("w"); viive (50); // Pudotuksen viivästyminen ja tietokoneen saaminen kiinni}
// lue painike:
int buttonStateUp = digitalRead (buttonUp); if (buttonStateUp == HIGH) // jos painiketta painetaan {// kirjoita viesti Keyboard.print ("d"); viive (50); // Pudotuksen viivästyminen ja tietokoneen saaminen kiinni}}
Voit aina käyttää molempien menetelmien yhdistelmää tarpeidesi mukaan.
Vaihe 3: Kotelon leikkaaminen laserilla
Kotelossa käytin 3 mm mdf: tä ja 2 mm: n pleksilasilevyä. Lisäsin lisäosan, koska haluan lisätä joitain LED -valoja kotelon sisäpuolelle myöhemmin, jotta se olisi mukava ja hehkuva.
Kirjoitin mittani makercaseen ja latasin svg -tiedoston. Avasin sen Illustratorissa ja lisäsin reiät haluamiini paikkoihin. Jos sinulla ei ole Illustratoria, voit käyttää Inkscapea tähän vaiheeseen.
Sinun ei tietenkään tarvitse käyttää laserleikkuria, koska tämä on yksinkertainen laatikko, jossa on muutama reikä. Sen luomisen pitäisi olla riittävän helppoa perinteisillä sähkötyökaluilla (tai jopa käsityökaluilla!). Olen vain hyvin laiska ja minulla oli pääsy laserleikkuriin.
Vaihe 4: Arcade -painikkeiden juottaminen
Arcade -painike (tai ainakin minun) koostuu kolmesta osasta. Muovikotelo, LED -pidike (jossa on LED) ja mikrokytkin. Mikrokytkin on painikkeen varsinainen painikeosa, ja sinun on muodostettava yhteys Arduinoosi. Mikrokytkimessä on kolme liitintä (metalliset bitit, jotka tarttuvat ulos, joissa juotat johdot). Ylhäällä (tai alhaalla, mitä haluat) oleva on maa. Muut kaksi liitintä ovat Normaali auki (NO) ja Normaali suljettu (NC). EI tarkoittaa, että jos kytkintä painetaan, se muodostaa yhteyden. NC tarkoittaa, että jos painiketta painetaan, se katkaisee yhteyden. Käytämme EI: tä tähän projektiin. Merkitsin kuvissa mikrokytkimen maahan, NO ja NC.
Painikkeeni ovat valaistut, joten juotin johdot LED -pidikkeeseen. Muista värikoodata johdot, jotta tiedät kumpi puoli on anodi ja mikä katodi (LEDin positiiviset ja negatiiviset puolet).
Juotin otsikkotappeja lankoihini, jotta niitä olisi helppo käyttää juotottoman leipälevyn kanssa. Juotin juuri langan otsatappiin ja laitoin hieman lämpökutistusletkua ympärille, jotta ne olisivat joustavampia.
Vaihe 5: Pinoa napit ja yhdistä ne taulullesi
Nyt on aika pinota arcade -painikkeet koteloosi. Irrota lukitusrengas muovikotelosta ja työnnä se kotelon reiän läpi. Kierrä lukitusrengas toisella puolella kiinnittääksesi painikkeen paikalleen. Kiinnitä LED -pidike ja kiristä se paikalleen kiertämällä sitä. Heiluta mikrokytkimiä (on pieniä nobs ja reikiä, jotka ovat linjassa toistensa kanssa pitämään se paikallaan).
Voit kytkeä kytkimet piirilevyyn poistamalla painikkeet, joita olet lisännyt tai joita et ole lisännyt. Liitä mikrokytkimen maasta johtava johto Arduinon maahan ja vastukseen (jossa painikkeen jalka oli). Liitä mikrokytkimen NO: sta johtava johto Arduinon 5 volttiin.
Liitä LED -johtoihin negatiivinen johto maahan ja positiivinen 220OHM -vastuksen kautta 5 volttiin. Jos kytket ne näin, ne ovat aina päällä. Voit lisätä ne koodiin ja saada ne kytkeytymään päälle ja pois päältä synkronoituna painikkeiden kanssa, jos haluat.
Vaihe 6: Helvetin koodaus
Joten nyt olet liittänyt hienot uudet painikkeet vanhaan koodiin ja yhtäkkiä se ei enää toimi niin kuin pitäisi. Kirjaimet näkyvät kaksi tai kolme kerrallaan, eikä se toimi niin kuin pitäisi yksinkertaisten HTML5 -pelien kanssa. Tervetuloa purkamaan helvettiä.
Ensimmäiset asiat ensin. Koodi, jonka kirjoitimme prototyyppien valmistuksen aikana? se toimii hyvin ja on yksinkertainen, mutta se ei ole tyylikäs. Jos haluat lisätä muita painikkeita, sinun on kopioitava ja liitettävä koodinpätkiä ja muutettava kaikki niiden sisällä olevat arvot. Jos unohdat yhden heistä, pääset virheenkorjaukseen. Tunnistatko teeman täältä? Koodaus on helvettiä, mutta erittäin hauska, ongelmanratkaisun helvetti.
Haluamme kauniin, lyhyen koodin. Joten muutamme kaikki yksittäiset painikkeen kokonaisluvut matriiseiksi. Tällä tavalla, jos haluat lisätä muita painikkeita, sinun tarvitsee vain muuttaa painikkeiden määrää, nastoja ja niiden ulostuloa. Vaihdamme myös avaintulot ASCII: ksi, koska… se toimii paremmin?
Jos olet kuten minä, kirjoitat yksinkertaisen ja helpon tavan käyttää painikkeita, eikä se toimi niin hyvin kuin haluat. Joten luot uusia versioita (muista lapset, lisävarmuuskopiot!), Kokeile erilaisia asioita, kirjoita jatkuvasti monimutkaisempaa koodia, joka ei vieläkään toimi hyvin, ja palaat lopulta takaisin yksinkertaiseen koodiin, jonka kirjoitit tunteja sitten JA huomaat pienen virheen, joka korjaa heti kaiken.
Anna minun säästää tämä matka, tässä on työkoodi:
Vastuuvapauslauseke: tämä teksti on kirjoitettu tuntien koodauksen ja erittäin yksinkertaisen koodin korjaamisen jälkeen. Älä ota huomioon turhautumisen merkkejä ja keskity alla olevaan työkoodiin;)
#sisältää "Keyboard.h" #define -painikeMäärä 3
int -painikePin = {
A0, A1, A2}; // Missä painikkeet ovat? int asciiLetter = {97, 100, 119}; // ASCII -kirjaimet, tässä: a, d, w int buttonState [buttonAmount]; // Onko painiketta painettu vai ei?
void setup () {
for (int i = 0; i <buttonAmount; i ++) {// selaa matriisin pinMode läpi (buttonPin , INPUT); // aseta kaikki nastat syötettäväksi}}
void loop () {
for (int i = 0; i <buttonAmount; i ++) // selaa taulukkoa {buttonState = digitalRead (buttonPin ); // Mitä painikkeet tekevät? if (buttonState == HIGH) {// Jos painiketta painetaan Keyboard.press (asciiLetter ); // lähetä vastaava kirjain} else // jos painiketta ei paineta {Keyboard.release (asciiLetter ); // vapauta kirje}}
}
Vaihe 7: Kaikki toimii
Nauti mukautetusta plug & play -ohjaimesta!
Jos pidit tästä ohjeesta, harkitse minun äänestämistä kilpailussa!
Suositeltava:
Plug and Play -satelliittiradion korjaaminen .: 6 vaihetta
Plug and Play -satelliittiradion korjaaminen: Ennen kuin aloitat, sinun on määritettävä paras paikka asentaa satelliittiradio kojelautaan tai sarakkeeseen, ja tarvitset pistorasia -ajurin, ruuvimeisseli ja lankaleikkurit
Plug & Play Pieni Raspberry Pi -verkkopalvelin: 6 vaihetta (kuvilla)
Plug & Play Pieni Raspberry Pi -verkkopalvelin: Sain äskettäin halvalla kaksi Raspberry Pi 1 -mallia A+. Jos et ole kuullut Pi -mallista A, se on yksi Raspberry Pi: n varhaisimmista muodoista, joka on suurempi kuin Pi Zero ja pienempi kuin tavallinen Raspberry Pi. Haluan aina
2-4 pelaajan Plug and Play Raspberry Pi Arcade: 11 vaihetta
2-4 pelaajan Plug and Play Raspberry Pi Arcade: Plug and play, ei vain termi niille surkeille muovipelikonsoleille, jotka ostit paikalliselta Walmartilta. Tässä plug and play arcade -kaapissa on töitä, ja sen voimanlähteenä on Raspberry Pi 3 -käyttöinen Retropie, ja tämä kone tarjoaa täydelliset mukautusominaisuudet
Plug 'n' Play Retro Arcade -konsoli: 5 vaihetta (kuvilla)
Plug 'n' Play Retro Arcade -konsoli: Plug 'n' Play Retro Arcade -konsoli sisältää monia klassisia suosikkikonsolejasi ja -pelejäsi yhdelle laitteelle. Parasta on, että tarvitset vain konsolin liittämisen television videotuloon ja virtalähteeseen, jotta voit nauttia kaikista laitteistasi
Solderless Breadboard Layout Sheets (plug and Play Electronics): 3 vaihetta (kuvilla)
Solderless Breadboard Layout Sheets (plug and Play Electronics): Tässä on hauska järjestelmä, joka on suunniteltu huolehtimaan joistakin päänsärkyistä, jotka liittyvät piirilevyn leikkuulautaan. Vektorin piirto -ohjelmaa käyttämällä siirrät yksinkertaisesti c