INHOUDSOPGAWE:
- Stap 1: materiaal
- Stap 2: Prototipering
- Stap 3: Lasersny die kas
- Stap 4: Soldeer Arcade -knoppies
- Stap 5: stapel die knoppies en koppel dit aan u bord
- Stap 6: Koderende hel
- Stap 7: Alles werk
Video: Plug and Play Arcade -knoppies: 7 stappe (met foto's)
2024 Outeur: John Day | [email protected]. Laas verander: 2024-01-30 07:27
Ek het onlangs Arduino begin gebruik om my projekte te maak. As ontwerper hou ek daarvan om persoonlike koppelvlakke te maak vir my speletjies/interaktiewe projekte.
Die enigste probleem wat ek ondervind het, is dat die gebruik van seriële kommunikasie redelik ingewikkeld en geneig is tot probleme en foute, en ek wou 'n vinnige en maklike oplossing hê om eksterne knoppies te gebruik om my speletjies te beheer.
Aangesien ek 'n plug and play -toestel wou hê wat u onmiddellik met enige rekenaar kon gebruik, het ek 'n Arduino Leonardo gekoop. Dit is amper identies aan 'n Uno, maar met 'n paar verskille. Die belangrikste verskil wat ek tot my voordeel vir hierdie projek sal gebruik, is die vermoë om as 'n HID op te tree. 'N HID of 'n menslike koppelvlak -toestel is 'n USB -protokol waarmee u rekenaar insette van sleutelborde en 'n rekenaarmuis kan herken en aanvaar sonder om persoonlike bestuurders vir elke toestel te hoef te installeer.
let wel: u kan ook 'n Uno gebruik as u die firmware opdateer, soos hier getoon.
Stap 1: materiaal
Vir hierdie projek benodig u:
1x HID -geskikte mikrobeheerder (daar is 'n paar soos Arduino micro, Due & leonardo, ek gebruik die Arduino Leonardo)
1x USB na arduino -kabel (vir die Leonardo is dit USB -mikro)
3x Arcade -knoppies (ek het dit gekoop)
1x soldeerlose broodbord
3x 10k ohm weerstande
3x 220 ohm weerstande
Springdrade
U kan natuurlik meer knoppies byvoeg, of alles aan 'n broodbord soldeer om dinge meer permanent te maak.
Stap 2: Prototipering
Dus, voordat ek die arcade -knoppies gekoop het wat ek wou gebruik, het ek dit met standaard drukknoppies getoets. Verbind die knoppies op die standaard manier, ek glo ek het 10K ohm weerstande gebruik.
Danksy die Leonardo is die programmering redelik eenvoudig. U moet die sleutelbordbiblioteek insluit. Ek het die standaard voorbeeld van 'Arduino' 'Sleutelbordboodskap' as basis vir my kode gebruik.
Nou is die vraag hoe u wil hê dat u knoppies moet werk. U het basies twee keuses, enkele knoppies druk en 'n deurlopende stroom letters as u dit druk. Dit hang regtig van u projek af wat u wil hê.
As u wil hê dat 'n enkele geval van iets moet gebeur as u op 'n sleutel druk, soos 'n sprong of 'n aan/uit -skakelaar, kies u die enkele drukmetode. Met hierdie metode kyk u na die toestand van die knoppie, is dit op of af? Dan vergelyk u dit met die vorige toestand, was dit al op of af? As die vorige knoppie toestand dieselfde is as die huidige knoppie, gebeur niks. Maar as die knoppie se toestand verander, soos tydens die druk of los van 'n knoppie, gebeur daar iets. In my kode tik dit slegs 'n letter as u op die knoppie druk, nie as u dit loslaat nie, maar u kan dit verander.
#sluit "Keyboard.h" in
const int buttonLeft = A0; // invoerpen vir drukknop
const int buttonRight = A1; const int buttonUp = A2;
int previousButtonStateLeft = HOOG; // om die toestand van 'n drukknop na te gaan
int previousButtonStateRight = HOOG; int previousButtonStateUp = HOOG;
ongeldige opstelling () {
// maak die pushButton -pen 'n invoer: pinMode (buttonLeft, INPUT); pinMode (buttonRight, INPUT); pinMode (buttonUp, INPUT); // begin beheer oor die sleutelbord: Keyboard.begin (); }
leemte -lus () {
// lees die drukknop: int buttonStateLeft = digitalRead (buttonLeft); // as die knoppie se toestand verander het, ((buttonStateLeft! = previousButtonStateLeft) // en dit word tans gedruk: && (buttonStateLeft == HOOG)) {// tik 'n boodskap Keyboard.print ("a") in; } // stoor die huidige knoppie toestand vir vergelyking volgende keer: previousButtonStateLeft = buttonStateLeft;
// lees die drukknop:
int buttonStateRight = digitalRead (buttonRight); // as die knoppie se toestand verander het, ((buttonStateRight! = previousButtonStateRight) // en dit word tans gedruk: && (buttonStateRight == HIGH)) {// tik 'n boodskap Keyboard.print ("w") in; } // stoor die huidige knoppiestatus vir 'n vergelyking volgende keer: previousButtonStateRight = buttonStateRight;
// lees die drukknop:
int buttonStateUp = digitalRead (buttonUp); // as die knoppie se toestand verander het, (((buttonStateUp! = previousButtonStateUp) // en dit word tans gedruk: && (buttonStateUp == HOOG)) {// tik 'n boodskap Keyboard.print ("d") in; } // stoor die huidige knoppiestatus vir 'n vergelyking volgende keer: previousButtonStateUp = buttonStateUp; }
As u wil hê dat iets voortdurend moet gebeur, solank die knoppie ingedruk word, soos u sou wou vir 'n linker- of regterbeweging, laat dit net 'n brief skryf sonder om na die vorige knoppie te kyk. Onthou om 'n klein vertraging by te voeg om te verhoed dat dit mal word en om die weerkaatsing van u knoppies te voorkom. Daar is meer elegante maniere om hierdie probleem op te los, maar dit is maklik en vinnig.
#sluit "Keyboard.h" in
const int buttonLeft = A0; // invoerpen vir drukknop
const int buttonRight = A1; const int buttonUp = A2;
ongeldige opstelling () {
// maak die pushButton -pen 'n invoer: pinMode (buttonLeft, INPUT); pinMode (buttonRight, INPUT); pinMode (buttonUp, INPUT); // begin beheer oor die sleutelbord: Keyboard.begin (); }
leemte -lus () {
// lees die drukknop: int buttonStateLeft = digitalRead (buttonLeft); if (buttonStateLeft == HOOG) // as die knoppie ingedruk word {// tik 'n boodskap Keyboard.print ("a") in; vertraging (50); // Vertraag vir weerkaatsing en laat jou rekenaar inhaal}
// lees die drukknop:
int buttonStateRight = digitalRead (buttonRight); if (buttonStateRight == HIGH) // as die knoppie ingedruk word {// tik 'n boodskap Keyboard.print ("w") in; vertraging (50); // Vertraag vir weerkaatsing en laat jou rekenaar inhaal}
// lees die drukknop:
int buttonStateUp = digitalRead (buttonUp); if (buttonStateUp == HOOG) // as die knoppie ingedruk word {// tik 'n boodskap Keyboard.print ("d") in; vertraging (50); // Vertraag vir weerkaatsing en laat jou rekenaar inhaal}}
U kan altyd 'n mengsel van beide metodes gebruik, afhangende van wat die beste by u behoeftes pas.
Stap 3: Lasersny die kas
In die geval gebruik ek 3 mm mdf, met 'n 2 mm -pleksiglas -insetsel. Ek het die insetsel bygevoeg omdat ek later 'n paar LED's aan die binnekant van die omhulsel wil byvoeg om dit mooi en glansend te maak.
Ek het my afmetings ingevoer om die svg -lêer te maak en dit af te laai. Ek het dit in Illustrator oopgemaak en die gate bygevoeg waar ek dit wou hê. As u nie Illustrator het nie, kan u Inkscape vir hierdie stap gebruik.
U hoef natuurlik nie 'n lasersnyer te gebruik nie, want dit is 'n eenvoudige boks met 'n paar gate daarin. Dit moet maklik genoeg wees om dit te maak met meer tradisionele elektriese gereedskap (of selfs handgereedskap!) Ek is net baie lui en het toegang tot 'n lasersnyer gehad.
Stap 4: Soldeer Arcade -knoppies
'N Arcade -knoppie (of ten minste myne) bestaan uit drie dele. Die plastiekomhulsel, die LED -houer (met LED daarin) en die mikroskakelaar. Die mikroskakelaar is die werklike knoppie van die knoppie en dit is wat u nodig het om aan u Arduino te koppel. Daar is drie terminale (metaalstukke wat uitsteek, waar u u drade soldeer) op die mikroskakelaar. Die een bo -op (of onder, wat u wil hê) is die grond. Die ander twee terminale is die normale oop (NO) en normaal geslote (NC). NEE beteken dat as daar op die skakelaar gedruk word, 'n verbinding gemaak word. NC beteken dat as die knoppie ingedruk word, die verbinding verbreek word. Ons sal die NEE vir hierdie projek gebruik. Ek het die grond, NO en NC op my mikroskakelaar op die foto's gemerk.
My knoppies is verlig, en ek het drade aan die LED -houer gesoldeer. Maak seker dat u u drade met 'n kleur kodeer, sodat u weet watter kant die anode is en watter katode (positiewe en negatiewe sye van die LED).
Ek het kopstukke aan my drade gesoldeer om dit maklik te maak om met 'n soldeerlose broodbord te gebruik. Ek het die draad net aan 'n koppen vasgesoldeer en 'n bietjie krimpbuis gesit om dit meer veerkragtig te maak.
Stap 5: stapel die knoppies en koppel dit aan u bord
Nou is dit tyd om u arcade -knoppies in u tas te stapel. Verwyder die sluitring uit die plastiekomhulsel en steek dit deur die gat in die omhulsel. Ryg die sluitring aan die ander kant vas om die knoppie vas te maak. Plak die LED -houer vas en draai dit om dit vas te maak. Wikkel in die mikroskakelaars (daar is klein nobies en gaatjies wat in lyn is met mekaar om dit vas te hou).
Om die skakelaars aan die bord te koppel, verwyder die drukknoppies wat u al dan nie bygevoeg het. Verbind die draad wat vanaf die grond van die mikroskakelaar lei, na die grond van die Arduino en die weerstand (waar die been van die drukknop was). Koppel die draad wat van die NO van die mikroskakelaar lei, na die 5v van die Arduino.
Vir die LED -drade verbind die negatiewe draad met die grond en die positiewe via 'n 220OHM weerstand na die 5v. As u hulle so opdraai, sal hulle altyd aan wees. U kan dit by die kode voeg en dit laat sinkroniseer met die knoppies as u wil.
Stap 6: Koderende hel
Dus, nou het u u nuwe knoppies aan u ou kode geheg, en dit werk skielik nie meer soos dit moet nie. Die letters verskyn twee of drie op 'n slag en dit werk nie soos dit moet met eenvoudige HTML5 -speletjies nie. Welkom om die hel te ontwrig.
Eerste dinge eerste. Die kode wat ons tydens prototipering geskryf het? dit werk goed en is eenvoudig, maar dit is nie elegant nie. As u meer knoppies wil byvoeg, moet u stukke kode kopieer en plak en al die waardes daarin verander. As u een daarvan vergeet, betree u die foutoplossende hel. Ontdek 'n tema hier? Kodering is 'n hel, maar 'n baie prettige probleemoplossende hel.
Ons wil 'n mooi, kort kode hê. Dus verander ons al die individuele knoppie heelgetalle na skikkings. Op hierdie manier, as u meer knoppies wil byvoeg, hoef u slegs die hoeveelheid knoppies, die penne waar hulle geleë is en die uitset daarvan te verander. Ons verander ook die belangrikste insette na ASCII omdat … dit beter werk?
As u nou soos ek is, skryf u 'n eenvoudige en maklike manier om die knoppies te gebruik, en dit werk nie so goed soos u wil nie. So skep u nuwe weergawes (onthou kinders, inkrementele rugsteun!), Probeer verskillende dinge, skryf voortdurend meer ingewikkelde kode wat steeds nie goed werk nie, en gaan uiteindelik terug na die eenvoudige kode wat u ure gelede geskryf het EN let op 'n klein foutjie maak alles onmiddellik reg.
Laat ek u die reis spaar, hier is die werkskode:
Disclaimer: hierdie teks is geskryf na ure se kodering en foutoplossing van 'n baie eenvoudige kode. Let op alle tekens van frustrasie en fokus op die onderstaande werkskode;)
#sluit "Keyboard.h" in#definieer knoppie Bedrag 3
int buttonPin = {
A0, A1, A2}; // Waar is die knoppies? int asciiLetter = {97, 100, 119}; // Letters in ASCII, hier: a, d, w int buttonState [buttonAmount]; // Is die knoppie gedruk of nie?
ongeldige opstelling () {
for (int i = 0; i <buttonAmount; i ++) {// blaai deur die skikking pinMode (buttonPin , INPUT); // stel al die penne in om in te voer}}
leemte -lus () {
for (int i = 0; i <buttonAmount; i ++) // blaai deur die skikking {buttonState = digitalRead (buttonPin ); // Wat doen die knoppies? if (buttonState == HOOG) {// As die knoppie ingedruk word Keyboard.press (asciiLetter ); // stuur die ooreenstemmende letter} anders // as die knoppie nie ingedruk word nie {Keyboard.release (asciiLetter ); // los die brief}}
}
Stap 7: Alles werk
Geniet u plug -and -play pasgemaakte kontroleerder!
As u van hierdie instruksies gehou het, oorweeg dit om vir my in die wedstryd te stem!
Aanbeveel:
Plug & Play Tiny Raspberry Pi Network Server: 6 stappe (met foto's)
Plug & Play Tiny Raspberry Pi Network Server: Onlangs het ek twee Raspberry Pi 1 Model A+ goedkoop in die hande gekry. As u nog nie van Pi Model A gehoor het nie, is dit een van die vroegste vormfaktore van die Raspberry Pi wat groter is as 'n Pi Zero en kleiner as 'n standaard Raspberry Pi. Ek wil altyd
2-4 Player Plug and Play Raspberry Pi Arcade: 11 stappe
2-4 Player Plug and Play Raspberry Pi Arcade: Plug and play, nie net 'n term vir die slegte plastiese spelkonsoles wat u by u plaaslike Walmart gekoop het nie. Hierdie plug and play arcade -kabinet het die werke, aangedryf deur 'n Raspberry Pi 3 met Retropie, en hierdie masjien spog met volledige aanpassingsvermoëns en
Plug 'n 'Play Retro Arcade -konsole: 5 stappe (met foto's)
Plug 'n 'Play Retro Arcade Console: The Plug 'n' Play Retro Arcade Console verpak baie van jou gunsteling klassieke konsoles en speletjies in een toestel. Die beste deel is dat alles wat u nodig het, is om u konsole aan te sluit op die video -ingang van u TV en in 'n kragbron om al u fasiliteite te geniet
DIY bou mini -USB -plug & play -luidsprekers (met mikrofoonopsie): 3 stappe (met foto's)
DIY bou mini -USB -plug & play -luidsprekers (met mikrofoonopsie): Hallo ouens.! Ek wou vir jou 'n eenvoudigste metode wys wat ek vir die draagbare luidspreker gebruik het. Hierdie metode is regtig baie uniek, want " daar is geen tutoriaal oor hierdie soort sprekersonderwerpe nie ". 'N Paar redes: Het u ooit te kampe gehad met
Soldeerlose broodborduitlegblaaie (plug and Play Electronics): 3 stappe (met foto's)
Soldeerlose broodborduitlegblaaie (plug and Play Electronics): Hier is 'n prettige stelsel wat ontwerp is om 'n paar hoofpyne wat verband hou met broodplankry op 'n stroombaan te versorg. Deur 'n vektortekenprogram te gebruik, skuif u eenvoudig die