Živeti

Kako zgraditi stroj za flipe Arduino: 15 korakov (s slikami)

Wooden Pinball + Arduino DIY (40x40cm mini size)

Wooden Pinball + Arduino DIY (40x40cm mini size)

Kazalo:

Anonim

Če ste mi všeč, vam je všeč fliper, vendar nimate denarja za nakup ali prostor za igro v polni velikosti. Zakaj ne bi zgradili svojega?

Tukaj bomo prehodili, kako ustvariti svojo lastno igro fliperja, ki jo poganja Arduino. Igra ima luči, zvoke, značilnosti pravega fliperja, vključno z odbijači, padajočimi cilji in pračkami, in ima celo rampo.

Ta projekt zahteva zelo veliko količino in raznolikost materiala, zato se posvetujte z vsakim naslednjim oddelkom za nove materiale, potrebne za dokončanje vsakega koraka. Za začetek je zelo koristno, če imate dostop do laserskega rezalnika ali CNC usmerjevalnika, pa tudi do osnovnih elektronskih in strojnih orodij.

Opomba avtorja: Ta instructable je bil pred kratkim objavljen in niso bili v celoti urejeni v vseh oblikah in programskih datotekah. Če nameravate uporabljati naše datoteke, pustite komentar, da bomo lahko zagotovili, da je vse v najnovejšem stanju.

Dobave:

Korak 1: Oblikovanje

Na zgornji sliki je Solidwork dizajn igralnega polja in podpornega sklopa. Igrišče je povsem običajno, vendar so bile črte strele (kot na primer krivulja zadnjega zaporednega posnetka) zasnovane na resničnih fliperjih, da bi zagotovili nemoteno igro. Ena od težav je, da zaradi svoje kompleksnosti dejanski deli fliperja (npr. Odbijači in padci) niso bili modelirani, vendar je treba paziti, da se bo vse ujemalo pod igralnim poljem - deli so veliko večji. spodaj kot zgoraj.

Datoteke so vključene v repozitorij, zato prilagodite obliko tako, da bo ustrezala vašim željam.

Nekaj ​​poudarkov zasnove:

Igrišče je 42 palcev za 20,25 palcev, kar je pravzaprav velikost iger Bally v stilu iz leta 1980. t Narejen je iz ½ ”vezanega lesa, ki je standarden in se ne sme spreminjati, saj so sklopi fliperjev zasnovani za to debelino. Stene so sestavljene iz ½ ”plasti na vrhu ¼” plasti. V prvem prototipu je bilo vključenih le ½ ”sten, ki pa so se izkazale za prekratke in so lahko še posebej trdno posnele fliper v zrak. Drugič, ta zasnova omogoča rahlo dvignjeno strelčevo linijo (na sliki zgoraj), ki omogoča, da se žoga rahlo spusti v igralno polje, vendar se ne zopet vrne.

Rampa je zasnovana z jasnimi akrilnimi in 3D-tiskanimi nosilci. Prečka igrišče tako, da daje igralcu možnost, da večkrat zaporedoma udari po rampi od levega plavalca. Čist akril se uporablja za preprečevanje pogleda igralca na tabelo:

Končno, igrišče je podprto s kratkimi stenami na štirih vogalih, ki igrišče obdržijo pri standardnih 6,5 stopinjah nagiba. Zadnja stena ima spodnjo “polico”, ki jo je mogoče odstraniti in se uporablja za montažo elektronike. Rezultat je igra z igranjem v polni velikosti, vendar je veliko bolj kompaktna kot tipična igra in jo lahko ročno prenaša ena oseba. Ker je igralno polje standardne velikosti, je mogoče te opore odstraniti, če želite postaviti igralno polje v standardni kabinet za fliper. V ta namen boste morda želeli razmisliti o dodajanju krogle, ki ni vključena v to zasnovo.

2. korak: Cut Wood

Za rezanje plasti igralnega polja smo uporabili laserski rezalnik. Vendar pa je laserski rezalnik, ki je dovolj močan, da reže ½ ”vezanega lesa, težko najti, zahteva visoko kakovostne vezane plošče in lahko ogrozi zagon ognja, če niste previdni. Tipična igralna polja so izrezana z uporabo CNC usmerjevalnika - medtem ko nekateri vogali morda niso tako jasni, bi morali še vedno doseči dostojne rezultate. Zaradi poenostavitve bodo spodnji koraki predvidevali, da imate dostop do istega laserskega rezalnika, kot smo ga naredili. Obstaja nekaj ljudi, ki so imeli dostojne rezultate z uporabo samo vaje in sestavljanke, vendar morate biti zelo previdni in zelo potrpežljivi, če greste po tej poti.

Prvi korak pri ustvarjanju igralnega polja je pretvorba zasnove v .DXF datoteke, ki se lahko vnesejo v laserski rezalnik. Datoteka playfield .DXF je na primer prikazana spodaj. Datoteke, uporabljene v tem projektu, so vključene v naše skladišče.

Z uporabo laserskega rezalnika izrežemo oblike za igrišče, "vmesni sloj" (uporabili smo duron, cenejši leseni prototipni material, vendar bo deloval tudi "vezan les", ½ "zgornji sloj in ½" podpira.

Potrebni materiali:

  • ½ ”vezanega lesa za igrišče in bazo
  • Or ”vezan les ali duron za vmesno stensko plast
  • ½ ”, ¾” in 1 ”lesni vijaki
  • Dostop do CNC usmerjevalnika ali laserskega rezalnika

3. korak: Zberite igralno polje

Začnite z vpetjem kosov iz sloja d ”duron na vezan les na svojih lokacijah. S pomočjo vrtalnika najprej izvrtajte pilotne luknje s 3/32 ”bitom, nato pa uporabite ravne glave ¾” lesne vijake, da pritrdite sloj ¼ ”na igralno površino. To je pomembno narediti od zgoraj navzdol (tj. tako, da bo vijak najprej šel skozi plasti layer ”, nato v ½” bazo, ker so parts ”deli majhni in tanki in se bodo upognili od osnovnega sloja, če bodo vrtani v nasprotni smeri. Pomembno je tudi zagotoviti, da so glave vijakov poravnane s slojem ¼ ”in ne zagotavljajo nobene dodatne debeline.

Še zadnja opomba: ti vijaki so lahko skoraj povsod, saj bo ta sloj igralcu večinoma neviden, ko bo igralno polje sestavljeno. Ampak obstaja izjema - ne vstavljajte vijakov v strelec. (Najprej smo naredili to napako).

Nato pritrdite stranske stene in uporabite najdaljše lesene vijake, da jih izvrtate z vrha plošče, tako da so glave vijakov poravnane z vrhom. Ko je to končano, vpnite ½ 'plasti na vrhu durona in jih privijte kot prej, razen da tokrat vijačenje z dna z uporabo 1 "vijakov. Ker je zgornji sloj ½" debel, je manj verjetno za upogibanje od podnožja in privijanje z dna zagotavlja, da vijaki ostanejo nevidni igralcu.

Na koncu pritrdite strelec (na sliki zgoraj, s strelcem) tako, da privijete s spodnje strani 2 vijaka, tako da blok ne more zlahka zasukati. Strelski blok ima režo "U", ki ustreza strelcu, ki se lahko namesti z zategovanjem matice na drugi strani. Morda boste morali uporabiti tudi mazivo, da zmanjšate trenje med palico in kroglo.

Oblika lahko na tej točki potrebuje nekaj prilagoditev. Na primer, v našem načrtu je bil rez za cilje padca preozek in ga je bilo treba razširiti z dremelom. Če uporabljate naše datoteke kot več kot referenco, poskusite stopiti v stik z avtorji, ki bi lahko posredovali posodobljene datoteke. Prav tako je dobra ideja, da obrusite vse grobe površine, zlasti tam, kjer se srečata dva lesa.

To večinoma zaključuje obdelavo lesa in lahko se premaknemo k sestavljanju.

Potrebni materiali:

  • 3/4 "leseni vijaki za les
  • Strelski sklop
  • Daljši (~ 1,5 ") lesni vijaki
  • Ročni vrtalnik s 3/32 "bitom
  • Mazalno olje
  • 1-palčni leseni vijaki
  • Datoteka in / ali dremel in brusni papir

4. korak: Dodajte komponente

Do te točke v fazi načrtovanja bi morali imeti splošno predstavo o orientaciji, ki je potrebna za zagotovitev, da so vse komponente dejansko primerne pod igralnim poljem. (Če uporabljate naš model, navedite sliko spodnje tabele zgoraj).

Najprej namestite padajoče cilje, stoječe cilje in sklope s ščurko tako, da vstavite ½ ”lesne vijake skozi montažne luknje v sklopu. Enako storite tudi z popovimi odbijači, vendar najprej odstranite pokrovček ali pa se sestava ne bo prilegala luknji!

Drugič, namestite sklopi plavuti. Prepričajte se, da se vrtijo v pravi smeri. Elektromagnet, ko je sprožen, bo pilul vtaknil v tuljavo in to bi moralo vrteti gred tako, da se plavilec vrti proti igralnemu polju. Ko so sklopi plavuti nameščeni, pritrdite lopatice na drugi strani.Uporabite ključ na ključavnici v sestavu, da jih privijete na svoje mesto, nato pa uporabite vzmet, ki naj bi prišla skupaj s sklopom, da se prepričate, da so plavuti spuščeni nazaj, ko niso odpuščeni.

Prav tako namestite vsa preklopna stikala z 1/2 "vijaki, tako da jih lahko zlahka pritisnete od vrha in vzmeti nazaj na svoje mesto. Z vijaki 6-32 pritrdite tudi stikalo za vrata na zgornjem levem kotu. To stikalo na vratih služi tudi kot enosmerna odprtina, ki omogoča, da posnetki z desne strani in strelec padejo v odbijače. različnih mestih in igra doda več raznolikosti.

Za namestitev luči najprej namestite plastične vložke v njihove luknje. Ti vložki so debeli približno ¼ ”. Če uporabljate CNC usmerjevalnik, je pravilen način, da jih namestite, da izrežete sloj ¼ ”, ki je nekoliko večji od luknje za vstavljanje. Glede na to, da laserski rezalnik ne more rezati delnih plasti, 3D-tiskamo oklepaje, ki podpirajo vložke. Uporabite epoksid za držanje vložkov na mestu (najprej rogajte robove) in brusni papir, da se prepričate, da so vložki poravnani z igralnim poljem.

Nato vstavite svetleče diode v svoje nosilce tako, da jih vstavite in jih zasučete. Nato privijte nosilce tako, da bodo te svetilke sedele neposredno pod vsak vložek. Spodnji svetlobni nosilci so precej tanki in dejansko dovolj tanki, da lahko 1/2 "vijaki preluknejo vrh mize. Uporabite nekaj podložk, da se to ne zgodi.

Položaj igrišča je nameščen z vijaki 6-32. Ko je nameščen, obložite gumice iz gumijastega kompleta okoli njih, da naredite pasivne odbijače. To daje tabeli veliko več "življenja", kot če bi bila zasnova popolnoma vezana. Z istimi vijaki pritrdite vodila za vozne pasove tik nad plavuti. Tudi stikalo za konec igre zalepite na svoje mesto.

Upoštevajte, da ima večina iger namenski sklop za vrnitev žoge, kot je ta tukaj. Ta načrt ni bil vključen, vendar predvsem zaradi stroškov. Kompromis, seveda, je, da je igralec zdaj odgovoren za to, da se žoga vrne v strelno stezo, ko se izteče. Imamo pa strelca, ki je pritrjen na strelec, kot je prikazan na sliki.

Preklopni gumbi in gumb za zagon so nameščeni tako, da jih namestite v luknje in jih zaklenete s palnuti. Stikala za krila prekrivnih gumbov so privijačena znotraj gumbov z vijaki 6-32 in bodo ob pritisku na tipke zaprla stikalno vezje.

Na tej točki bo vaše igrišče (od zgoraj) podobno skoraj popolni fliper tabeli! Manjka le rampa. Vas prosimo, da se razkrijete med svojimi prijatelji o tem, kako čudovito je videti, medtem ko se zasebno strah, kako veliko opraviti z ožičenjem in spajkanjem.

Potrebni materiali (večina je bila kupljena pri PinballLife.com in jih je mogoče najti samo z iskanjem po spodnjih izrazih).

  • 1 3-stranski ciljni sklop padca
  • 3x sklop odbijača
  • 1 levi sklop plavuti
  • 1 desni sklop plavuti
  • 2 plavuti
  • 2 gumba plavuti
  • 2 pladnji za plavuti
  • 1 gumb za zagon
  • 1 gumijast obroček
  • ~ 30 zvezdnih mest za igralna polja, (1 1/16 "uporabljeno)
  • 2 vodila
  • 2 preklopnika za listje gumbov
  • 2 sklope pračice
  • 1 standup cilj
  • 10 preklopnih stikal
  • 8 LED # 44 bajonetnih luči
  • 8 bajonetnih svetlobnih nosilcev (miniaturna bajonetna 2-vodna vtičnica z dolgo montažno konzolo)
  • 5 1-1 / 2 "x 13/16" modri vložek s puščico
  • 3 1 "x 3/4" čisti vložek za kroglo
  • 6-32 vijakov (2,5 ", kot tudi nekaj manjših velikosti), matice in podložke
  • ~ 2 "širok stikalo za vrata (kot je ta, ki ga je težko najti, smo iz naše starega zlomljenega fliperja, ki smo ga kupili na eBayu, razrezali.)

5. korak: Zgradite klančino

Za rampo uporabite ac ”akril za osnovne kose in ac” akril za stranske stene. Čist akril bo lep, čist videz in ne bo oviral pogleda na igralno polje igralca. Uporaba barvnega akrila je lahko tudi prijetna izbira, vendar ni priporočljivo uporabljati popolnoma neprozornega materiala, kot je les.

Nosilci za rampe so 3D natisnjeni z izdelovalcem in priviti na igralno polje in plastiko z enakimi 6-32 vijaki.

Akrilni kosi so tukaj zlepljeni z uporabo akrilnega cementa, ki je topilo, ki se v bistvu topi in varuje plastiko skupaj. Prepričajte se, da uporabite majhno količino in da bo zelo močna vez, ki je skoraj nevidna.

Na vhodu rampe smo vključili loputo, kot je tista na zgornji sliki. To je tanek kos kovine, ki daje zelo gladek prehod iz igralnega poligona na plastiko rampe, namesto da bi fliper moral »skočiti« na debelino plastike. Eno od teh lahko kupite poceni iz specialistične trgovine s fliperjem ali Ebay (mi), ali pa samo naredite eno od lastne pločevine. V komercialnih igrah so te zakovičene tako, da se vijaki ne držijo in se ne dotaknejo žoge. Ker nismo imeli ustrezne opreme za to, smo poskrbeli, da uporabljamo vijake s ploščato glavo in ustrezno posnemali luknjo v plastiki in v kovini, da bi dosegli enak učinek.

Na sprednjem desnem vogalu klančine je na 3D nosilcu pritrjeno ozko stikalo za vrata, kjer se obrne, da gre čez igrišče. To stikalo je tisto, kar beleži, kdaj je bil dosežen uspešen strelski oder.

Potrebni materiali:

  • 1/4 "jasen akril (12x24")
  • 1/2 "prozorni akril (12x24")
  • Akrilni cement
  • Dostop do 3D tiskalnika in laserskega rezalnika
  • Zaskočna loputa
  • Vijaki s ploščato glavo 6-32 za loputo
  • Kombinirani sveder ali ročno orodje
  • Stikalo za ozka vrata

6. korak: Načrtujte elektroniko Blok in postavitev zatičev

(Avtorjeva posodobitev: s podaljšano uporabo lahko 48V raznese nekatere tranzistorje v tej konfiguraciji. Priporočam uporabo 35V ali nižje s temi elektroniko ali uporabo bolj profesionalnih virov na nadzorni plošči, kot so tisti, ki so navedeni tukaj: http: // pinballmakers .com / wiki / index.php / Gradbeništvo)

Ta stroj ima 3 napetostne ravni: 48V za elektromagnetno moč, 6.3V za LED in 5V za logiko in zvok. Da bi zagotovili te napetostne ravni, smo uporabili CNC napajalnik za 48V in off-the-shelf DC adapterje za zagotovitev 6.3V in 5V. (Morda bi bilo mogoče uporabiti samo 6,3 V, ker Arduino regulira svojo napajalno napetost na 5V izhodni pin, vendar smo ohranjali ta napajalnik izoliran). 48V je visoka napetost, in čeprav ni smrtonosna sama po sebi lahko poškoduje dele in lahko hitro povzroči pregrevanje komponent, če obstajajo kakršne koli težave z vezjem. Uporabite 5-A varovalko na vhodu in izhodu glavnega 48V napajalnika, da se izognete požaru, če je katerikoli tranzistor kratek.

Na Arduino ščitu smo priključili žice z ženskimi Molex konektorji, ki so bili zasnovani tako, da ustrezajo vhodnim in izhodnim zahtevam vsake od treh podsklopov: elektromagnetni vozniški plošči, svetlobni / zvočni plošči in vhodna plošča.

V naši zasnovi smo imeli naslednje dodelitve pinov. To je seveda precej prilagodljivo. Pin 0 je ostal odprt. (Instructables nam ne omogoča, da opravimo številčne sezname, ki se začnejo z 0.)

  1. Odprto
  2. Odprto
  3. Prekinitev / vhod Active pin
  4. Kodiran vhodni pin
  5. Kodiran vhodni pin
  6. Kodiran vhodni pin
  7. Kodiran vhodni pin
  8. Kodiran vhodni pin
  9. Izhod desnega odbijača
  10. Izhod srednjega odbijača
  11. Izhod levega odbijača
  12. Izpustite ciljni izhod
  13. Izhod glavnega stikala plavuti
  14. Glavno izhodno stikalo luči
  15. Izhodni priključek za svetlobo
  16. Izhodni priključek za svetlobo
  17. Izhodni priključek za svetlobo
  18. Zvočni pin
  19. Odprto

Čeprav nismo vključeni v našo zasnovo, se lahko zatiči SCL in SDA uporabijo za prikaz, preostali zatiči pa se lahko uporabijo za dodatno kontrolo, kot je dodajanje funkcij (vrnitev krogle) ali več svetlobnih kombinacij.

Potrebni materiali:

  • 48V CNC napajanje (kot je ta)
  • Neprekinjeni napajalniki z napetostjo 6,3 V in 5 V (kot je ta)
  • 5A varovalke s počasnim pihanjem in držala varovalk ter toplotno skrčljive cevi za povezavo
  • Molex priključki
  • Arduino prototipna ščitna plošča
  • Veliko žice 22AWG, spajkanje in potrpljenje

7. korak: Naredite vozniške plošče

Voznikova plošča je odgovorna za obračanje vhodov iz Arduina, gumbov plavuti in pračice, ki se vklopi v žaromete. Ker so signali na 5V nivoju in solenoidi pri 48V, so močni MOSFETi potrebni za prenos signala. Tranzistorji, ki se uporabljajo pri tej zasnovi, so ti 100V-ocenjeni MOSFETi Mouser.

Zgoraj so prikazane tri sheme, ki vključujejo plavutke, pračice in odbijače. Vsak ima nekoliko drugačne zahteve, toda v vseh, ko tranzistor dobi 5V signal, se odpre tok za solenoid in 5-8 amperov se potisne skozi tuljavo, da doseže močan udarec. To je veliko trenutka! Dejstvo je, da bo toliko toka izgoreval komponente, če je tranzistor vklopljen več kot zelo kratek utrip. Pri testiranju tega vezja se prepričajte, da nikoli ne v celoti napolnite solenoida več kot približno sekundo.

Glavni vir težav v zgornjem vezju je induktivni udar. Solenoidi so močni induktorji, in kot morda veste, se tok v induktorjih ne more spremeniti v trenutku. Kot tak, ko je tranzistor izklopljen, še vedno obstaja kratek trenutek, ko 5-8 amperov teče skozi solenoid, in vse, kar potrebuje trenutni tok. Če ne dobite poti do tal, bo ta tok vozil napetost na odvodu tranzistorja do več sto voltov in uničil tranzistor. Poleg tega, ko je tranzistor uničen, prekine vse tri terminale, kar povzroči pretok amperov stalnega toka in lahko uniči solenoid, če ni vgrajena ustrezna varovalka. (V našem odkritju smo uničili 8 tranzistorjev in poskušamo rešiti ta problem, vendar na srečo ni bilo nobenih elektromagnetov, ker smo vedno hitro ročno prekinili napajanje).

Obstajata dve metodi za preprečevanje induktivnega udarca: prvič, vsak sklop fliperja mora priti z diodo, ki kaže odcep tranzistorja nazaj na oskrbo. To, v teoriji, bi morala preprečiti, da tranzistor odteče od kdaj presega napajalne napetosti, saj ko se to zgodi, se bo dioda vklopila in izpraznila preostalo energijo iz induktorja. Na žalost se te diode same po sebi ne vklopijo dovolj hitro, da bi same zadušile induktivni udar.

Da bi rešili težavo, smo dodali RC 'snubber' vezje. To vezje ima zaporedno kondenzator z uporom. Kondenzator absorbira dovolj toka iz induktorja, tako da ima dioda čas, da se vklopi in opravi svojo funkcijo. Za več informacij o RC snubber vezja, preverite tukaj.

Električni gonilnik odbijača / droptargeta je precej preprost in ima samo tranzistor, elektromagnet, snubber in povezavo za sprejem vhoda od Arduino. V tej plošči in naslednjih ploščah, poskrbite, da bo žica solenoid tako, da dioda (ki ni prikazana v shemi) kaže proti strani visoke napetosti.

Oklop gonilke je nekoliko bolj zapleten zaradi treh razlogov. Prvič, da bi imeli hiter odziv med pritiskom na gumb in delovanjem plavuti, je priporočljivo, da ustvarite ta odziv neposredno v vezju in ne kot ločene vhode in izhode, ki jih upravlja Arduino. Zamuda, ki jo povzroči Arduino, je majhna, vendar bo izkušen igralec lahko takoj povedal in bo razočaran zaradi pomanjkanja nadzora.

Drugič, plavuti imajo dve različni tuljavi (nizko močjo in visoko močno tuljavo), ki se sprožita, ko je plavut visok. To stikalo služi pomembni funkciji omogočanja visoke moči tuljave v začetku, da daje močan hod, vendar preklop na nizko moč tuljavo (~ 130 ohmov proti 4 ohmov), ki daje dovolj moči, da flipper drži "gor" kot dolgo, ko je gumb nameščen, vendar ne pripravi toliko toka, da bi izklopil solenoid. Na spodnji sliki je stikalo EOS normalno zaprto, vendar je naš sklop imel normalno odprto stikalo in je zahteval še en tranzistor, ki bi to pretvoril v normalno zaprt signal.

Tretjič, medtem ko smo želeli, da gumb neposredno nadzoruje plavuti, smo vključili tudi "master" preklopni signal Arduina, ki bi lahko aktiviral ali deaktiviral plavutke, odvisno od tega, ali je bila žoga v igri. To povzroči uporabo tretjega tranzistorja v vezju.

Podobno ima plošča za pračice svoje težave. Medtem ko uporablja samo en tranzistor, ga je treba, tako kot plavuti, nadzorovati neposredno s pomočjo vhodnih stikal (ki smo jih povezali v seriji) za hiter odziv in ne zahtevati dodatnih izhodnih zatičev na Arduinu. Na žalost, če so vrata tranzistorja priključena neposredno na stikalo, je odziv preveč hiter, da bi imel več kot komaj opazen udarec, saj stikalo ne ostane zaprto zelo dolgo. Da bi imeli močnejši udarec (npr. Izpuščeni solenoid s pomočjo prače), smo dodali diodo in velik upor na vratih tranzistorjev, kar omogoča hiter odziv, vendar ustvarja veliko časovno konstanto upada napetosti. na tem vozlišču, tako da vrata ostanejo blizu 5V (in na tranzistorju) dovolj dolgo, da imajo opazen udarec, tudi po tem, ko so bila stikala s praćkami ponovno odprta. Še en zaplet je pošiljanje tega vnosa v Arduino, saj vhodna plošča (kot bomo videli kasneje) zahteva nizko vhodi, in naprava za zaščito pred zvokom deluje, ko je vhod visok. Da bi rešili ta problem, smo vključili tretji tranzistor, ki se zapre, kadar koli je vhod visok, in se tako lahko obravnava kot vsako drugo vhodno stikalo na igralnem polju.

Voznikova plošča (dejansko dve plošči) je sestavljena iz dveh gonilnikov plavuti, dveh gonilnikov za luknjice in štirih gonilnikov za enojno stikalo za preostale solenoide. Namesto direktnega spajkanja smo uporabili 0,1-kratne molex konektorje za priključitev te plošče na solenoide, napajalnik in stikala, tako da bi bilo lažje izvesti vsa popravila ali prilagoditve.

Za naše modele smo uporabili spajkalne plošče, toda oblikovanje dejanskih PCB-jev s temi funkcijami bi imelo veliko čistejši rezultat in pomagalo ublažiti nered žic, ki jih ti stroji neizogibno imajo.

Materiali:

  • 12 močnostnih tranzistorjev z nazivno močjo 100V
  • 10-50 uF kondenzatorjev (če je mogoče nepolarno)
  • Upori 300, 5k in 500k ter 3M
  • 1 manjši tranzistor za stikalo za obešanje
  • Več diod 1N4004
  • Prototipne spajkalne plošče (ali še bolje, oblikovanje lastnih tiskanih vezij)

8. korak: Na ploščo za vnos senzorja

Ker uporabljamo samo Arduino, smo omejeni na 20 digitalnih zatičev. Stroj za fliper pa ima nekaj ducatov edinstvenih stikalnih vhodov, da ne omenjamo izhodov, ki so potrebni za luči, zvok in pogonske solenoide. Da bi to težavo ublažili, smo predpostavili, da se ne sprožita nobena dva vhoda naenkrat (s čimer se omejujemo le na uporabo 1 krogle). Ta predpostavka nam omogoča "kodiranje" vhodov stikala s pretvorbo v 5-bitni binarni register s šestim pinom, ki je sprožil prekinitev, ko je bil sprejet sprejemljiv vhodni stik. Da bi to dosegli, smo uporabili kaskado 8-to-3 kodirnikov, da naredimo 24-to-5 kodirnik z uporabo tega dajalnika v postavitvi, prikazani na zgornjih slikah.

To je bil eden od najpomembnejših dosežkov projekta, saj nam je omogočil, da smo bistveno povečali kompleksnost našega stroja od našega prvotnega načrta, da imamo samo plavute, odbijače in enega ali dva cilja.

Druga prototipna plošča je bila uporabljena za postavitev vsakega od 24 moških Molex konektorjev; vsako stikalo na igralnem polju bi imelo ženski konektor na koncu dolge žice, ki se priključi na to ploščo. Cilji padca so edinstven primer, s katerim se lahko ravna na več načinov. Kar smo naredili, je bilo zaporedno povezati vsako ciljno stikalo padca, tako da je vhod zaprt, ko so vsi navzdol in omogoča, da Arduino pošlje signal v solenoid, da sproži cilje padca nazaj.

Materiali:

  • 4 3-state-output prioritetni 8-na-3 kodirniki

9. korak: Napravite svetlobo / zvok / rezultat Peripheral Board

Da bi shranili zatiči na podoben način kot kodirnik, smo uporabili dekoder 3 do 8 za nadzor naših luči. To nam je dalo omejitev, da nismo mogli osvetliti več kot eno svetlobo naenkrat, toda to je bil sprejemljiv kompromis za sprostitev zatičev za druge elemente. Vključili smo tudi 4. »master« izhodno svetlobo, ki lahko nadzoruje vse luči naenkrat. To bi nam na primer lahko omogočilo, da smo vse luči nekajkrat prižgali, ko je bila igra prvič vklopljena (kar kaže, da se nekaj dejansko dogaja igralcu, ko pritisne gumb za zagon, ki je sicer težko brez ali barvni zaslon).

Zgornje shematične značilnosti tranzistorskega vezja podobnega gonilnikom, vendar veliko enostavnejše kot nižje napetosti v igri (6,3 V za luči) potrebujejo manjše tranzistorje in ne zahtevajo toliko zaščitnega vezja. Za tranzistorje smo uporabili diodo ALI vrata za izolacijo signala glavnega stikala in posameznega svetlobnega signala. To nam omogoča, da uporabimo le en tranzistor na svetlobo namesto dveh in preprečimo, da bi Arduino in kodirnik čipov od "boj" do izvirnega ali potopnega toka.

Medtem ko smo za vsako od igralnih luči (tiste pod vložki) uporabljali nizkotočne LED-diode, je bil vklopljen gumb za zagon in 3 pop-odbijači z žarnicami z žarilno nitko. Tranzistorji so ocenjeni na 530mA stalnega toka, tako da ne presežemo tega, smo poskrbeli, da so samo dve žarnici kdaj šli skozi en tranzistor.

Priložili smo tudi pasivni 5Z piezo zvočni signal, ki nam omogoča, da na tej plošči predvajamo osnovni zvok.

Prilagojene lučke in zvočne sekvence lahko programirate s funkcijami light_sequence + sound_sequence ali prek vmesnika Pinball Language.

  • 10 svetlobnih tranzistorjev (uporabljali smo jih)
  • 5V Piezo zvočni signal

Korak 10: Korak 11: Oblikujte pravila za igre

Obstajata dve možnosti za določanje pravil igre fliperja. Z igro lahko komunicirate s prilagodljivim dokumentom fliperja ali pravili za igro trde kode. Pravila s strogo kodiranimi igricami omogočajo večjo prilagodljivost, vključno z zaporednimi posnetki in časovnimi bonusi, medtem ko uporaba sistema dokumentov / razčlenjevalcev fliperjev omogoča bolj prilagodljiva, vendar enostavnejša pravila. Začeli bomo z vmesnikom za igro, ki jo je mogoče konfigurirati, in nato podrobno opisali nekatera pravila o igrah, ki jih je težko izbrati, tako da lahko izberete, katero konfiguracijo želite za svojo igro s fliperjem.

Oglejte si githubov repozitorij za datoteke, ki so navedene v tem projektu.

Del 1. Oblikujte pravila igre

Privzeti stanje stroja za fliper je prikazano na sliki.

To je podano v privzeti zagonski kodi. Zdaj imate dve možnosti - ali napisati lastno kodo za napravo ali uporabiti določeno oblikovanje za igro fliperja.

11. korak: Možnost 1. Napišite lastno datoteko Pinball.txt

V dokumentu z besedilom fliper boste našli tri oddelke: enega za dele, enega za »države« in enega za »dejanja«. Tu lahko določite posebne akcije za vsako komponento. Za večino komponent se boste verjetno želeli držati stroja z enim stanjem. Na primer, če je vsakič, ko je udaril odbijač, igralec dosegel še 100 točk, osvetlil rampo in dosegel 100 točk, bi bil diagram stanja podoben sliki 1 z ustrezno kodo. Če ste želeli, da ima komponenta stroj z več stanjem, recimo, da ste želeli, da se ob vklopu odbijača vklopi svetloba, nato pa jo izklopite, ko se ponovno prikaže, vaš diagram stanja / ustrezna stanja bi izgledala kot slika 2 Naš stroj zagotavlja strukture, kot je prikazano na sliki 3, za katero lahko definirate pravila. Njihova imena, notranji kodirani makri (za katere vam ni treba skrbeti, vendar bi lahko bili koristni, če se odločite za raziskovanje izvorne kode) in prekinitvene kode so prikazani na sliki 3. Slika 4 povezuje ta imena z komponentami igralnega polja.

Nasveti za pisanje fliperjev
Ker so komponente igre povezane z določenimi prekinitvami (označenimi s poljem "pos"), ki jih definira strojna oprema, ne priporočamo spreminjanja odseka »deli« preveč izven polja »države«. rezervno stanje 0 in dejanje 0 za komponente, ki nimajo učinkov na točkovanje, kot sta gumb za zagon in stikalo za igro. Naša koda izgleda na sliki 5.

12. korak: Določite zaporedja svetlobe in zvoka

Osem luči na plošči se krmili z dekoderjem 3 na 8 + glavnim stikalom, kot je opisano zgoraj. Določene luči se lahko osvetlijo tako, da se pisave, ki ustrezajo binarno kodirani različici kode dela, zapišejo visoko. Funkcija pomočnika light_sequence nudi vmesnik, ki uporabniku omogoča, da poda svetlobo, ki jo želi osvetliti, in makri so definirani v dokumentu state_machine_headers.h. Ponovno je na voljo tabela za vaše udobje pri načrtovanju. Za zvok smo uporabili knjižnico tonov Arduino za programiranje kratkih zvočnih zaporedij za različne dogodke v igri. Imamo štiri vnaprej pripravljene zvoke, ki jih lahko izberete (z uporabo executeSound (<# zvoka, ki ga želite>)). Ti zvoki ustrezajo dolgemu, veselemu zaporedju, kratkemu veselemu zaporedju, kratkemu žalostnemu zaporedju in dolgemu žalostnemu zaporedju. Če želite programirati svoje zvoke, si lahko ogledate, kako to storite (pitch.h je vključen v skladišče): http://www.arduino.cc/en/Reference/Tone

13. korak: V datoteko Arduino naložite datoteko Pinball.txt

Ko ste končali s pisanjem FDM, si oglejte kako naložite svojo igro na svoj Arduino (predpostavlja se, da uporabljate Mac). Vse datoteke je mogoče najti v skladišču github.

  1. Odprite zip datoteko arduino-serial.
  2. Pomaknite se do datoteke arduino-serial in shranite konfiguracijsko datoteko igre tukaj. »Pinball.txt« ponuja vzorčno predlogo, ki jo lahko uporabite.
  3. Odpri Arduino. Naložite igro fliperja.
  4. Odprite terminal in vnesite naslednje ukaze:
    • make
    • ./arduino-serial -b 9600 -p pinball.txt
  5. Sedaj bi morali brati in shranjevati podatke v notranjem pomnilniku Arduino. Če se pojavijo napačne linije, bo Arduino natisnil sporočilo o napaki in lahko boste ponovno poslali datoteko.
  6. Ko končate s prenosom kode z uporabo terminala, npr. ko Arduino natisne sporočilo »dokončano«, lahko odprete Arduino Serial, da berete sporočila iz igre, ki je v teku.

Pogoste težave / optimizacije za igro programske opreme

  1. Težko kodirane in konfigurabilne igre - opazili smo, da so se prekinitve v trdi kodirani igri odzvale bolj natančno kot tiste v prilagodljivi igri. To bi lahko bilo zato, ker je prilagodljiva igra imela veliko splošnih funkcij, ki so zahtevale pogojne izjave. To je upočasnilo hitrost branja zanke, zaradi česar smo zamudili več prekinitev in vplivali na celotno hitrost delovanja igre. Da bi rešili ta problem, smo zmanjšali nekaj prilagodljivosti igre konfiguracijske datoteke, da bi dosegli sprejemljive odzivne čase v vezju. Prvotno smo imeli pomisleke glede zmogljivosti RAM-a za Arduino in koliko pravil igre je mogoče shraniti, vendar se je izkazalo, da je to manjši problem, kot je bilo prvotno pričakovano, in da je bila hitrost zanke večji omejevalni dejavnik.
  2. Odpravljanje prekinitev - zaradi hitrih dejanj fliperja smo imeli več primerov, v katerih je prekinitvena igla prejela več prekinitev, da je fliper zadel samo eno komponento igre. Poleg tega, ker so bile te prekinitve prispele, preden je kodirnik imel časa za pravilno branje vseh vhodov, bi bile prekinitve povezane z nepravilnimi komponentami. Da bi rešili ta problem, smo uporabili zunanjo knjižnico osvetljevanja, ki se odzove po 1ms po prejemu prve prekinitve, kar daje čas, da se zatiči kodirnika dosežejo visoko, preden igra odčita vhodno kodo.
  3. Zaslon - Čeprav serijski zaslon omogoča, da igra natisne podrobna sporočila, igralec težko prebere izhodna sporočila, ko igra igro fliperja s hitrim tempom. Prav tako je nerodno, da mora igralec igrati igro z računalnikom. V prihodnosti upamo, da bomo uvedli digitalni zaslon, ki bo lahko prikazoval rezultat in druge informacije o igri na zaslonu, ki ga uporabnik lahko enostavno vidi, kot je na primer LED matrika ali 7-segmentni prikaz.

Korak 14: Možnost 2: Nasveti za trdo kodiranje lastne igre

Najprej preberite dokument state_machine_headers.h, da razumete globalne podatkovne strukture, ki shranjujejo informacije o stanju stroja. Te podatkovne strukture morate inicializirati v pravila igre v programu Arduino IDE, preden jih naložite v kodo Arduino. Zagotovljene so naslednje podatkovne strukture:

Strukture iger, ki vsebujejo informacije o vsakem delu Države imajo informacije o prehodih stanja Ukrepi za shranjevanje informacij o dejanjih, ki jih je treba izvesti Te strukture so poseljene z datoteko za branje. Določite vhod / izhod za vse nožice. Prekinitvene zatiče je treba definirati kot INPUT pins.

V glavni zanki preverite vsak cikel, da vidite, ali je bila prekinitev prekinjena za vsako komponento igre. Vsako komponento igre definirajte znotraj stikalnega stavka.

Pomožna funkcija executeState posodobi trenutno stanje dela in izvede dejanja, ki temeljijo na v kodiranih informacijah.

Trdo kodirano prvo različico kode igre lahko najdete v datoteki "simplepinballgame.ino"

15. korak: Povežite vse

Za povezavo z Arduino z našimi vozniškimi ploščami smo uporabili protoshield za lažji dostop do nožic na drugih ploščah. Obstaja veliko žic, zato bodite previdni! Sledite postavitvi, podani v Elektronski zatiči in postavitvi, da povežete vaše Arduino vtičnice z ustreznimi zatiči. Molex priključki bi morali veliko pomagati pri ugotavljanju, s katerimi konektorji se povezujejo.

Tukaj je kratko vprašanje za odpravljanje težav, če naletite na katero od pogostih težav, ki smo jih storili:

Narava vhodnega kodirnika je, da je v Arduino 6 vhodnih nožic: 5, ki skupaj kažejo, kateri vhod se sproži, in šesti pin, ki je visok, če se sproži posamezen vhod. Zapisana koda zazna le, če se ta šesti pin spremeni iz nizkega v visok. Torej, če Arduino ne prejema nobenih vhodov in ste prepričani, da delujejo vsa ali vsaj večina stikal, preverite, ali so stikala zaprta. Na primer, če so vse tarče padca navzdol in niso bile sprožene nazaj, je to zaprto stikalo in preprečuje, da bi Arduino prejel druge vnose.

Preverite, ali je matica, ki drži strelec na mestu, popolnoma zategnjena, ali da strelni blok ni ohlapen. Druga možnost je olje palice strelec.

To je lahko mehanski / konstrukcijski problem, če so stikala postavljena v preširoki stezi, kar omogoča, da se krog okrog njih. V nasprotnem primeru je lahko posledica predolge zamude nekje v kodi. Če ste na primer zasedeni s predvajanjem tona z uporabo knjižnice tonov in stavka za zakasnitev (), Arduino v tem času ne bo mogel prevzeti vhodov. Ena od rešitev, ki smo jo uporabili, je bila, da smo predvajali samo zvoke za posnetek na rampi, ciljno postavitev, gumb za začetek in stikalo ob koncu igre, saj smo vedeli, koliko časa bomo imeli po teh posnetkih, preden se bo verjetno sprožil nov vnos .

Res je, da za določene luči ali posebne solenoide nismo določili posebnih glav, kar pomeni, da prvič, ko vstavite vse v (ali kasnejše čase, če jih ne označite), so izhodni zatiči (ali kodiranje izhodne svetlobe) povezani poljuben vrstni red. Uporabite poskusno in-napako, da razrešite, kateri pini ustrezajo temu izhodu in ustrezno prilagodite kodo. Za lučke in odbijače to ni tako slabo - vsekakor pa označite vse vhode in si zapišite, kar je tisto, kar lahko ima do 24 vrednosti, za umerjanje pa bo trajalo malo dlje.

Kodirnik ima žalostno lastnost, da včasih utripa pin indikatorja visoko, preden 5 kodirnih zatiči popolnoma razrešijo svoje vrednosti. Za nas smo vedeli, da se je to zgodilo, ko je bilo število stikala, ki ste ga pritisnili, izklopljeno, vendar se lahko prikaže drugače. To težavo smo rešili z uporabo debouncing knjižnice, da bi ustvarili majhen zamik med tem, ko smo opazili, da se je stikalo spremenilo in ko smo zapisali, katero stikalo je bilo. Previdno, čeprav lahko preveč zakasnitve (več kot 15-20 mS) povzroči, da v celoti izgubite vnose.

Žal še nismo zaznali dobre rešitve za to.