Satura rādītājs:
- 1. solis: materiāli
- 2. solis: prototipēšana
- 3. darbība: korpusa griešana ar lāzeru
- 4. solis: Arcade pogu lodēšana
- 5. solis: salieciet pogas un savienojiet tās ar savu dēli
- 6. darbība: elles kodēšana
- 7. solis: viss darbojas
Video: Plug and Play arkādes pogas: 7 soļi (ar attēliem)
2024 Autors: John Day | [email protected]. Pēdējoreiz modificēts: 2024-01-30 10:57
Es nesen sāku izmantot Arduino savu projektu veidošanai. Kā dizainerei man patīk veidot pielāgotas saskarnes savām spēlēm/interaktīviem projektiem.
Viena problēma, ar kuru es saskāros, bija tā, ka sērijveida sakaru izmantošana ir diezgan sarežģīta un pakļauta problēmām un kļūdām, un es gribēju ātru un vienkāršu risinājumu, lai ļautu man izmantot ārējās pogas, lai kontrolētu savas spēles.
Tā kā es gribēju plug and play ierīci, kuru varētu uzreiz izmantot ar jebkuru datoru, es nopirku Arduino Leonardo. Tas ir gandrīz identisks Uno, taču ar dažām atšķirībām. Galvenā atšķirība, ko es izmantošu savā labā šim projektam, ir tā spēja darboties kā HID. HID jeb cilvēka saskarnes ierīce ir USB protokols, kas ļauj datoram atpazīt un pieņemt ievadi no tastatūrām un datora peles, neinstalējot katrai ierīcei pielāgotus draiverus.
piezīme: jūs varat arī izmantot Uno, ja atjaunināt programmaparatūru, kā parādīts šeit.
1. solis: materiāli
Šim projektam jums būs nepieciešams:
1x HID spējīgs mikrokontrolleris (ir daži, piemēram, Arduino micro, Due & Leonardo, es izmantošu Arduino Leonardo)
1x USB arduino kabelis (Leonardo tas ir USB micro)
3x arkādes pogas (es tās nopirku)
1x bez lodēšanas maizes dēlis
3x 10k omu rezistori
3x 220 omi rezistori
Jumper vadi
Jūs, protams, varat pievienot vairāk pogu vai lodēt visu uz maizes dēļa, lai padarītu lietas pastāvīgākas.
2. solis: prototipēšana
Tātad, pirms es nopirku arkādes pogas, kuras vēlējos izmantot, es to pārbaudīju ar standarta spiedpogām. Pievienojiet pogas standarta veidā, es uzskatu, ka izmantoju 10K omu rezistorus.
Programmēšana, pateicoties Leonardo, ir diezgan vienkārša. Jums ir jāiekļauj tastatūras bibliotēka. Kā koda pamatu es izmantoju Arduino standarta piemēru "Tastatūras ziņojums".
Tagad jautājums ir par to, kā vēlaties, lai pogas darbotos. Būtībā jums ir divas izvēles iespējas: vienas pogas nospiešana un nepārtraukta burtu plūsma, ja tiek nospiesta. Tas tiešām ir atkarīgs no jūsu projekta, ko vēlaties.
Ja vēlaties nospiest kādu taustiņu, piemēram, lēcienu vai ieslēgšanas/izslēgšanas slēdzi, tad notiktu tikai viens gadījums, tad izvēlieties vienu spiediena metodi. Izmantojot šo metodi, jūs skatāties uz pogas stāvokli, vai tā ir uz augšu vai uz leju? Tad jūs salīdzināt to ar iepriekšējo stāvokli, vai tas jau bija uz augšu vai uz leju? Ja iepriekšējais pogas stāvoklis ir tāds pats kā pašreizējais pogas stāvoklis, nekas nenotiek. Bet, ja pogas stāvoklis mainās, piemēram, nospiežot vai atlaižot pogu, kaut kas notiek. Manā kodā tas raksta burtu tikai tad, kad poga tiek nospiesta, nevis atlaižot, bet jūs to varētu mainīt.
#include "Keyboard.h"
const int buttonLeft = A0; // spiedpogu ievades tapa
const int poga Tiesības = A1; const int pogaUp = A2;
int previousButtonStateLeft = HIGH; // spiedpogas stāvokļa pārbaudei
int previousButtonStateRight = HIGH; int previousButtonStateUp = HIGH;
void setup () {
// padarīt spiedpogas tapu par ievadi: pinMode (buttonLeft, INPUT); pinMode (buttonRight, INPUT); pinMode (buttonUp, INPUT); // inicializēt tastatūras vadību: Keyboard.begin (); }
void loop () {
// lasīt spiedpogu: int buttonStateLeft = digitalRead (buttonLeft); // ja pogas stāvoklis ir mainījies, if ((buttonStateLeft! = previousButtonStateLeft) // un tas pašlaik ir nospiests: && (buttonStateLeft == HIGH)) {// ierakstiet ziņojumu Keyboard.print ("a"); } // saglabājiet pašreizējo pogas stāvokli salīdzināšanai nākamreiz: previousButtonStateLeft = buttonStateLeft;
// lasīt spiedpogu:
int buttonStateRight = digitalRead (buttonRight); // ja pogas stāvoklis ir mainījies, if ((buttonStateRight! = previousButtonStateRight) // un tas pašlaik ir nospiests: && (buttonStateRight == HIGH)) {// ierakstiet ziņojumu Keyboard.print ("w"); } // saglabājiet pašreizējo pogas stāvokli salīdzināšanai nākamreiz: previousButtonStateRight = buttonStateRight;
// lasīt spiedpogu:
int buttonStateUp = digitalRead (buttonUp); // ja pogas stāvoklis ir mainījies, ja ((buttonStateUp! = previousButtonStateUp) // un tas pašlaik ir nospiests: && (buttonStateUp == HIGH)) {// ierakstiet ziņojumu Keyboard.print ("d"); } // saglabājiet pašreizējo pogas stāvokli salīdzināšanai nākamreiz: previousButtonStateUp = buttonStateUp; }
Ja vēlaties, lai kaut kas nepārtraukti notiktu, kamēr poga tiek nospiesta, kā jūs vēlētos, lai kustētos pa kreisi vai pa labi, vienkārši ļaujiet tai uzrakstīt vēstuli, nepārbaudot iepriekšējo pogas stāvokli. Neaizmirstiet pievienot nelielu aizkavi, lai tas nenotiktu un neveiktu pogas. Ir vairāk elegantu šīs problēmas risināšanas veidu, taču tas ir viegli un ātri.
#include "Keyboard.h"
const int buttonLeft = A0; // spiedpogu ievades tapa
const int poga Tiesības = A1; const int pogaUp = A2;
void setup () {
// padarīt spiedpogas tapu par ievadi: pinMode (buttonLeft, INPUT); pinMode (buttonRight, INPUT); pinMode (buttonUp, INPUT); // inicializēt tastatūras vadību: Keyboard.begin (); }
void loop () {
// lasīt spiedpogu: int buttonStateLeft = digitalRead (buttonLeft); if (buttonStateLeft == HIGH) // ja poga ir nospiesta {// ierakstiet ziņojumu Keyboard.print ("a"); kavēšanās (50); // Atlēciena aizkavēšanās un datora panākšana}
// lasīt spiedpogu:
int buttonStateRight = digitalRead (buttonRight); if (buttonStateRight == HIGH) // ja poga ir nospiesta {// ierakstiet ziņojumu Keyboard.print ("w"); kavēšanās (50); // Atlēciena aizkavēšanās un datora panākšana}
// lasīt spiedpogu:
int buttonStateUp = digitalRead (buttonUp); if (buttonStateUp == HIGH) // ja poga ir nospiesta {// ierakstiet ziņojumu Keyboard.print ("d"); kavēšanās (50); // Atlēciena aizkavēšanās un datora panākšana}}
Jūs vienmēr varat izmantot abu metožu kombināciju, atkarībā no tā, kas vislabāk atbilst jūsu vajadzībām.
3. darbība: korpusa griešana ar lāzeru
Korpusam es izmantoju 3 mm mdf ar 2 mm plexiglas ieliktni. Es pievienoju ieliktni, jo vēlos vēlāk korpusa iekšpusē pievienot dažas gaismas diodes, lai padarītu to jauku un mirdzošu.
Es ievadīju savus izmērus lielos burtos un lejupielādēju svg failu. Es to atvēru Illustratorā un pievienoju caurumus, kur tos vēlējos. Ja jums nav Illustrator, šai darbībai varat izmantot Inkscape.
Protams, jums nav jāizmanto lāzera griezējs, jo šī ir vienkārša kaste ar dažiem caurumiem. Tam vajadzētu būt pietiekami vienkāršam, lai to izveidotu, izmantojot tradicionālākus elektroinstrumentus (vai pat rokas instrumentus!). Es esmu tikai ļoti slinks un man bija pieeja lāzera griezējam.
4. solis: Arcade pogu lodēšana
Arkādes poga (vai vismaz mana) sastāv no trim daļām. Plastmasas korpuss, LED turētājs (ar LED tajā) un mikro slēdzis. Mikro slēdzis ir pogas faktiskā pogas daļa, un tas būs nepieciešams, lai izveidotu savienojumu ar savu Arduino. Mikro slēdzim ir trīs termināļi (metāla uzgaļi, kas izliekas, kur jūs lodēsit vadus). Tas, kas atrodas augšpusē (vai apakšā, tas, ko vēlaties), ir zeme. Pārējie divi termināļi ir Normal Open (NO) un Normal Closed (NC). NĒ nozīmē, ka, nospiežot slēdzi, tiek izveidots savienojums. NC nozīmē, ka, nospiežot pogu, tas pārtrauc savienojumu. Šim projektam mēs izmantosim NĒ. Attēlos uz sava mikro slēdža atzīmēju zemi, NO un NC.
Manas pogas ir izgaismotas, tāpēc es pielodēju vadus pie LED turētāja. Noteikti krāsojiet vadus ar krāsu kodu, lai jūs zināt, kura puse ir anods un kura katode (gaismas diodes pozitīvās un negatīvās puses).
Savos vados es lodēju galvenes tapas, lai tās būtu ērti lietot ar bezlodēšanas maizes dēli. Es tikko pielodēju vadu pie galvenes tapas un ievietoju nedaudz termiski saraušanās caurules, lai padarītu tās elastīgākas.
5. solis: salieciet pogas un savienojiet tās ar savu dēli
Tagad ir pienācis laiks sakrāt savas arkādes pogas savā lietā. Noņemiet bloķēšanas gredzenu no plastmasas korpusa un izbīdiet to caur korpusa atveri. Aptiniet bloķēšanas gredzenu otrā pusē, lai poga nostiprinātos vietā. Ievietojiet LED turētāju un pagrieziet to, lai tas nofiksētos vietā. Pagrieziet mikro slēdžus (ir nelielas nūjas un caurumi, kas izlīdzinās viens ar otru, lai to noturētu vietā).
Lai savienotu slēdžus ar plāksni, noņemiet spiedpogas, kuras, iespējams, esat pievienojis. Pievienojiet vadu, kas ved no mikro slēdža zemes, līdz Arduino un rezistora zemei (kur atradās spiedpogas kāja). Pievienojiet vadu, kas ved no mikro slēdža NO uz Arduino 5V.
LED vadiem savienojiet negatīvo vadu ar zemi un pozitīvo caur 220OHM rezistoru pie 5V. Ja jūs tos savienojat, tie vienmēr būs ieslēgti. Ja vēlaties, varat tos pievienot kodā un likt tiem ieslēgt un izslēgt sinhronizēti ar pogām.
6. darbība: elles kodēšana
Tātad, tagad jūs esat pievienojis savas izdomātās jaunās pogas savam vecajam kodam un pēkšņi tas vairs nedarbojas kā vajadzētu. Burti parādās divi vai trīs vienlaikus, un tas nedarbojas, kā vajadzētu ar vienkāršām HTML5 spēlēm. Laipni lūdzam debounce ellē.
Vispirms pirmās lietas. Kods, ko rakstījām prototipu veidošanas laikā? tas darbojas labi un ir vienkāršs, bet tas nav elegants. Ja vēlaties pievienot vairāk pogu, jums ir jākopē un jāielīmē koda fragmenti un jāmaina visas vērtības. Ja aizmirstat vienu no tiem, jūs nokļūstat kļūdu labošanas ellē. Vai noteikt tēmu šeit? Kodēšana ir elle, bet ļoti jautra, problēmu risinoša elle.
Mēs vēlamies skaistu, īsu kodu. Tāpēc mēs mainīsim visus atsevišķos pogu veselos skaitļus uz masīviem. Tādā veidā, ja vēlaties pievienot vairāk pogu, jums ir jāmaina tikai pogu daudzums, tapas, kur tās atrodas, un to izvade. Mēs arī mainām galvenās ievades uz ASCII, jo… tas darbojas labāk?
Tagad, ja jūs esat tāds kā es, jūs uzrakstīsit vienkāršu un vienkāršu veidu, kā izmantot pogas, un tas nedarbosies tik labi, kā vēlaties. Tātad jūs izveidojat jaunas versijas (atcerieties bērnus, papildu rezerves kopijas!), Izmēģiniet dažādas lietas, pastāvīgi rakstiet sarežģītāku kodu, kas joprojām nedarbojas labi, un galu galā atgriežaties pie vienkāršā koda, kuru rakstījāt pirms stundām, un pamanāt nelielu kļūdu, kas uzreiz visu izlabo.
Ļaujiet man saudzēt jūs no šī ceļojuma, šeit ir darba kods:
Atruna: šis teksts tika uzrakstīts pēc dažu stundu kodēšanas un kļūdu labošanas ar ļoti vienkāršu kodu. Lūdzu, neņemiet vērā vilšanās pazīmes un koncentrējieties uz zemāk publicēto darba kodu;)
#iekļaut "Keyboard.h" #definēt poguSumma 3
int buttonPin = {
A0, A1, A2}; // Kur ir pogas? int asciiLetter = {97, 100, 119}; // Burti ASCII, šeit: a, d, w int buttonState [buttonAmount]; // Vai poga ir nospiesta vai nē?
void setup () {
for (int i = 0; i <buttonAmount; i ++) {// cikls pa masīvu pinMode (buttonPin , INPUT); // iestatiet visas tapas ievadīšanai}}
void loop () {
for (int i = 0; i <buttonAmount; i ++) // cikls pa masīvu {buttonState = digitalRead (buttonPin ); // Ko dara pogas? if (buttonState == HIGH) {// Ja poga tiek nospiesta Keyboard.press (asciiLetter ); // nosūtīt atbilstošo burtu} else // ja poga nav nospiesta {Keyboard.release (asciiLetter ); // atlaid vēstuli}}
}
7. solis: viss darbojas
Izbaudiet savu plug & play pielāgoto kontrolieri!
Ja jums patika šī pamācība, lūdzu, apsveriet iespēju balsot par mani konkursā!
Ieteicams:
Kā noteikt Plug and Play satelīta radio: 6 soļi
Plug and Play satelīta radio labošana: pirms darba sākšanas jums ir jānosaka labākā satelīta radio uzstādīšanas vieta informācijas panelī vai kolonnā, un jums būs nepieciešams ligzdas draiveris, skrūvgriezis un stieples griezēji
Plug & Play Tiny Raspberry Pi tīkla serveris: 6 soļi (ar attēliem)
Plug & Play Tiny Raspberry Pi tīkla serveris: nesen es pa rokai saņēmu divus Raspberry Pi 1 Model A+ modeļus. Ja neesat dzirdējis par Pi modeli A, tas ir viens no agrākajiem Raspberry Pi formas faktoriem, kas ir lielāks par Pi Zero un mazāks par standarta Raspberry Pi. Es vienmēr gribu
2-4 spēlētāju Plug and Play Raspberry Pi Arcade: 11 soļi
2-4 spēlētāju Plug and Play Raspberry Pi Arcade: Plug and play, ne tikai apzīmējums tām niecīgajām plastmasas spēļu konsolēm, kuras iegādājāties vietējā Walmart. Šim plug and play arkādes skapim ir darbi, ko darbina Raspberry Pi 3, kas darbojas ar Retropie, šī iekārta lepojas ar pilnām pielāgošanas spējām
Plug 'n' Play retro arkādes konsole: 5 soļi (ar attēliem)
Plug 'n' Play retro arkādes konsole: Plug 'n' Play retro arkādes konsole vienā ierīcē iesaiņo daudzas iecienītākās klasiskās konsoles un spēles. Labākais ir tas, ka viss, kas jums nepieciešams, ir savienot savu konsoli ar televizora video ieeju un barošanas avotu, lai izbaudītu visu savu
Lodmetāla maizes dēļa izkārtojuma lapas (plug and Play Electronics): 3 soļi (ar attēliem)
Lodmetāla maizes dēļa izkārtojuma lapas (plug and Play Electronics): šeit ir jautra sistēma, kas paredzēta, lai rūpētos par dažām galvassāpēm, kas saistītas ar ķēdes maizes dēļu izvietošanu. Tas ir vienkāršs veidņu failu kopums, kas mērogā izveidots ar reālās pasaules elektroniskajiem komponentiem. Izmantojot vektoru zīmēšanas programmu, jūs vienkārši pārvietojat c