Život

Kako izgraditi Arduino Pinball Machine: 15 koraka (sa slikama)

Arduino Pinball - Solenoid Test

Arduino Pinball - Solenoid Test

Sadržaj:

Anonim

Ako ste poput mene, volite fliper, ali nemate novca za kupnju ili prostor za igru ​​u punoj veličini. Pa zašto onda ne izgradite svoje?

Ovdje ćemo prošetati kako stvoriti vlastitu prilagođenu fliper igru ​​koju pokreće Arduino. Igra ima svjetla, zvukove, značajke pravih fliper dijelova, uključujući odbojnike, ispuštene ciljeve i praćke, pa čak ima i rampu.

Ovaj projekt zahtijeva vrlo veliku količinu i raznolikost materijala, stoga konzultirajte svaki sljedeći odjeljak za nove materijale potrebne za dovršetak svakog koraka. Kao početak, vrlo je korisno ako imate pristup laserskom rezaču ili CNC usmjerivaču, kao i osnovnim elektroničkim i hardverskim alatima.

Napomena: Autor je nedavno objavljen te nisu sve datoteke dizajna i softvera u potpunosti organizirane. Ako planirate koristiti naše datoteke, ostavite komentar kako bismo bili sigurni da je sve u najnovijem stanju.

Pribor:

Korak 1: Dizajn

Na gornjoj slici prikazan je Solidworks dizajn igrališta i pomoćnog sklopa. Igralište je čisto prilagođeno, ali linije pucnjave (kao što je krivulja zadnjeg snimka) dizajnirane su na temelju pravih flipera kako bi se osigurala glatka igra. Jedna od poteškoća je u tome što, zbog njihove složenosti, stvarni dijelovi flipera (npr. Odbojnici i meta za spuštanje) nisu bili modelirani, ali još uvijek treba paziti da se sve uklopi ispod igrališta - dijelovi su mnogo veći. ispod nego iznad.

Datoteke su uključene u spremište, pa slobodno prilagodite dizajn tako da odgovara vašem ukusu.

Nekoliko vrhunaca dizajna:

Igralište je 42 inča veličine 20,25 inča, točno veličine igara Bally u stilu iz 1980-ih. Napravljena je od ½ ”šperploče, koja je standardna i ne bi se trebala mijenjati jer su sklopovi flipera konstruirani za tu debljinu. Ovdje se zidovi sastoje od ½ ”sloja na vrhu sloja ¼. U prvom prototipu bilo je uključeno samo ½ ”zidova, ali oni su se pokazali prekratkim i mogli su izvesti fliper u zrak na posebno čvrstim snimkama. Drugo, ovaj dizajn dopušta lagano povišenu liniju pucača (na slici gore) koja omogućuje da lopta malo padne na igralište, ali ne može ponovno pasti.

Rampa je dizajnirana s jasnim akrilnim i 3D-tiskanim nosačima. Prelazi preko igrališta tako da daje igraču mogućnost da udari u rampu više puta zaredom od lijevog peraja. Kao takav, jasan akril se koristi da ne ometa pogled igrača na tablici:

Konačno, igralište je podržano kratkim zidovima na četiri ugla, koji drže igralište na standardnim nagibima od 6,5 stupnjeva. Stražnja stijenka ima donju “policu” koja se može skinuti i koristi se za montažu elektronike. To rezultira igrom s igralištem u punoj veličini, ali je mnogo kompaktnije od tipične igre i može je nositi jedna osoba. Budući da je igralište standardne veličine, međutim, te se potpore mogu ukloniti ako želite postaviti igralište u standardni kabinet za fliper. Da biste to učinili, razmislite o dodavanju sklopa za povrat lopte, koji nije uključen u ovaj dizajn.

Korak 2: Izrežite drvo

Za rezanje slojeva igrališta koristili smo laserski rezač. Međutim, laserski rezač koji je dovoljno snažan da izreže ½ ”šperploče je teško pronaći, zahtijeva visokokvalitetnu šperploču i može prouzročiti požar ako ne budete oprezni. Tipična polja za igranje su izrezana pomoću CNC usmjerivača - dok neki od uglova možda nisu tako oštri, ipak biste trebali postići pristojne rezultate. Radi jednostavnosti, koraci ispod će pretpostaviti da imate pristup istom laserskom rezaču koji smo napravili. Postoje neki ljudi koji su imali pristojne rezultate koristeći samo vježbu i slagalicu, ali morate biti vrlo oprezni i vrlo strpljivi ako krenete ovim putem.

Prvi korak u stvaranju igrališta je pretvaranje dizajna u .DXF datoteke koje se mogu ubaciti u laserski rezač. Primjerice, datoteka za reprodukciju .DXF prikazana je u nastavku. Datoteke korištene u ovom projektu uključene su u naše spremište.

Koristeći laserski rezač, izrezali smo oblike za igralište, (”srednji sloj (koristili smo duron, jeftiniji prototipski materijal poput drva, ali will“ šperploča će također raditi ”, ½” gornji sloj i ½ ” podržava.

Potrebni materijali:

  • ½ ”šperploča za igralište i bazu
  • Or ”šperploča ili duron za srednji zidni sloj
  • Vijci za drvo ½ ”, ¾” i 1 ”
  • Pristup CNC usmjerivaču ili laserskom rezaču

Korak 3: Sastavite igralište

Počnite sa stezanjem komada iz sloja onto ”duron na šperploču na njihovim mjestima. Pomoću ručne bušilice, prvo izbušite pilotske rupe pomoću 3/32 ”bita, a zatim pomoću ravnih glava ¾” vijaka za drvo pričvrstite sloj layer ”na igralište Važno je to učiniti odozgo prema dolje (tj. tako da vijak prvo prolazi kroz sloj ¼ ”, zatim u ½” bazu, budući da su parts ”dijelovi mali i tanki i da će se savijati od osnovnog sloja ako budu izbušeni u suprotnom smjeru. Također je važno provjeriti jesu li glave vijaka u ravnini s slojem ¼ ”i ne daju nikakvu dodatnu debljinu.

Jedna posljednja napomena: ti vijci mogu ići gotovo svugdje, jer će ovaj sloj biti uglavnom nevidljiv igraču nakon što se sastavi igralište. No postoji iznimka - ne stavljajte vijke u strijelnu traku. (U početku smo napravili tu pogrešku).

Zatim, pričvrstite bočne zidove i upotrijebite najduže vijke za drvo da ih izbušite s vrha ploče, opet tako da su glave vijaka poravnate s vrhom. Nakon što je to učinjeno, učvrstite ½ ”slojeve komada na vrhu durona, i zavijte ih kao i prije, osim što ovaj put zavrtjem od dna pomoću 1" vijaka. Budući da je gornji sloj ½ "debljine, manje je vjerojatno savijte se od podnožja, a zavrtanje s dna osigurava da vijci ostaju nevidljivi igraču.

Naposljetku, pričvrstite strijelni blok (na slici iznad, sa strijelcem) tako da zavrtite s donje strane pomoću 2 vijka tako da se blok ne može lako zakrenuti. Streljački blok ima utor u obliku slova "U" koji odgovara puccu, koji se može ugraditi pritezanjem matice s druge strane. Možda ćete također morati koristiti mazivo za smanjenje trenja između šipke i lopte.

Dizajn će možda trebati neke prilagodbe u ovom trenutku. Na primjer, u našem dizajnu, rez za ciljeve pada je bio preusak i morao se proširiti pomoću dremela. Ako koristite naše datoteke kao više od reference, pokušajte kontaktirati autore koji bi mogli pružiti ažurirane datoteke. Također je dobra ideja obrezati sva gruba područja, osobito tamo gdje se susreću dva drvena komada.

Većinom se time zaključuje obrada drva, a mi se možemo preseliti u sastavljanje komponenti.

Potrebni materijali:

  • 3/4 "vijci za drvo s ravnom glavom
  • Skupina strijelaca
  • Dulji (~ 1,5 ") vijci za drvo
  • Ručna bušilica s 3/32 "bit
  • Ulje za podmazivanje
  • 1 "vijci za drvo s ravnom glavom
  • Datoteka i / ili dremel i brusni papir

Korak 4: Dodajte komponente

Do ovog trenutka u fazi projektiranja, trebali biste imati opću ideju o orijentaciji koja je potrebna da bi se osiguralo da se sve komponente zaista smjeste ispod igrališta. (Ako koristite naš dizajn, pogledajte sliku donje tablice gore).

Prvo, postavite ciljeve za spuštanje, metu za stajanje i sklopove praćke stavljajući ½ ”vijaka za drvo kroz rupe za montažu u sklopu. Isto učinite s pop-branicima, ali prvo izvadite poklopac, ili sklop neće stati u njegovu rupu!

Drugo, instalirajte sklopove peraja. Uvjerite se da se okreću u ispravnom smjeru. Solenoid će, kada bude ispaljen, oboriti iglu u zavojnicu, a to bi trebalo okrenuti osovinu tako da se peraja okrene prema igralištu. Kada su sklopovi peraja postavljeni, pričvrstite ih na drugu stranu.Upotrijebite ključ na matici u sklopu kako biste ih učvrstili na mjestu, a zatim upotrijebite oprugu koja bi trebala doći s sklopom kako biste bili sigurni da su peraje nagurane natrag kada nisu ispaljene.

Isto tako, postavite sve prekidače za prevrtanje pomoću 1/2 "vijaka, osiguravajući da se oni mogu lako pritisnuti od vrha i opruge natrag na svoje mjesto. Koristeći vijke 6-32, također pričvrstite prekidač za vrata na gornjem lijevom uglu Ovaj ulazni prekidač služi i kao jednosmjerno otvaranje, što omogućuje da snimci s desne i sa strelice padnu u odbojnike, što je aspekt dizajna koji rezultira snimanjem ulaza u desnu rampu i desnu petlju. različitim mjestima i dodaje više raznolikosti igri.

Da biste instalirali svjetla, prvo umetnite plastične umetke u njihove rupe. Ovi umetci su debeli oko ¼ ”. Ako se koristi CNC usmjerivač, ispravan način postavljanja je rezanje sloja slightly ”koji je nešto veći od rupe za umetanje. U našem dizajnu, budući da laserski rezač ne može rezati djelomične slojeve, 3D-tiskane su zagrade koje podržavaju umetke. Upotrijebite epoksid za držanje umetaka na mjestu (prvo oštre rubove) i brusni papir kako biste bili sigurni da su umetci u ravnini s igralištem.

Zatim umetnite LED u svoje držače umetanjem i uvrtanjem. Zatim pričvrstite držače na mjesto tako da ove LED svjetiljke stanu neposredno ispod svakog umetka. Svjetlo zagrade povezano ispod su prilično tanke, i zapravo dovoljno tanke da 1/2 "vijci mogu probiti vrh stola. Koristite nekoliko podložaka tako da se to ne dogodi.

Položaji igrališta ugrađeni su pomoću vijaka 6-32. Jednom instaliran, obložiti gume iz gume kit oko njih napraviti pasivni odbojnici. Oni daju stolu puno više "života" nego ako bi dizajn trebao biti potpuno šperploča. Pomoću istih vijaka pričvrstite vodilice za trake točno iznad peraja. Također zalijepite kraj igre na mjesto.

Imajte na umu da većina igara ima namjenski sklop za povrat lopte kao ovdje. To nije uključeno u ovaj dizajn, međutim, prvenstveno zbog troškova. Naravno, kompromis je u tome što je igrač sada odgovoran za vraćanje lopte natrag u traku za pucanje, nakon što se ispusti. Imamo, međutim, strijelca, koji je pričvršćen za strijelčev blok kao na slici ranije.

Tipke za preklapanje i gumb za pokretanje postavljaju se tako da ih stavite u rupe i učvrstite ih palnutima. Prekidači krila dugmadi papučice pričvršćeni su vijcima unutar gumba pomoću vijaka 6-32 i zatvorit će sklop prekidača kada se pritisnu tipke.

U ovom trenutku, vaše igralište će (odozgo) nalikovati gotovo potpunom stolu za fliper! Nedostaje samo rampa. Slobodno uživajte među svojim prijateljima o tome kako je to sjajno izgledati dok se privatno plašite koliko je potrebno učiniti ožičenjem i lemljenjem.

Potrebni materijali (većina je kupljena od PinballLife.com, a mogu se pronaći jednostavnim pretraživanjem dolje navedenih izraza).

  • 1 3-bankni ciljni pad
  • 3x sklop odbojnika
  • 1 lijevi sklop peraja
  • 1 desni sklop peraja
  • 2 šišmiša
  • 2 gumba peraje
  • 2 plutajuća gumba
  • 1 gumb za pokretanje
  • 1 gumeni prsten
  • ~ 30 zvjezdica na igralištu, (1 1/16 "koristi se)
  • 2 vodilice
  • 2 prekidača za preklapanje gumba za preklapanje
  • 2 sklopa praćke
  • 1 standup cilj
  • 10 prekidača za prevrtanje
  • 8 LED # 44 bajonetnih svjetala
  • 8 bajonetnih svjetlosnih nosača (Miniature Bayonet Base 2-Lead Socket s dugim nosačem)
  • 5 1-1 / 2 "x 13/16" plava strelica
  • 3 1 "x 3/4" čisti umetak metka
  • 6-32 vijka (2,5 ", kao i neke manje veličine), matice i podloške
  • ~ 2 "široki prekidač vrata (kao onaj ovdje, ovo je možda teško pronaći, uklanjali smo naše s stare slomljene rampe za fliper kupljene na ebayu)

Korak 5: Izgradite rampu

Da biste napravili rampu, koristite ¼ ”akril za osnovne dijelove i ac” akril za bočne zidove. Jasan akril će dati lijep, čist izgled, a ne blokirati pogled na igralište za igrača. Upotreba obojenog akrila može biti i lijepa opcija, ali se ne preporuča upotreba potpuno neprozirnog materijala kao što je drvo.

Nosači za rampe su 3D ispisani pomoću alata za kavu i pričvršćeni na igralište i plastiku pomoću istih 6-32 vijaka.

Akrilni dijelovi ovdje se lijepe zajedno pomoću akrilnog cementa, koji je otapalo koje se u biti topi i zavaruje plastiku zajedno. Pobrinite se da koristite malu količinu i ona će napraviti vrlo jaku vezu koja je gotovo nevidljiva.

Na ulazu u rampu, uključili smo zaklopac za rampu kao onaj na slici gore. Riječ je o tankom komadu metala koji daje vrlo glatke prijelaze s igrališta na plastiku rampe, umjesto da fliper mora “skakati” na ¼ ”debljinu plastike. Jedan od njih možete kupiti jeftino od flipera ili Ebay (mi smo to učinili), ili jednostavno napraviti jedan od vlastitog lima. U komercijalnim igrama, one su zakovice tako da se vijci ne mogu zaustaviti i stati na put lopti. Budući da nismo imali odgovarajuću opremu za to, pobrinuli smo se da upotrijebimo vijke s ravnom glavom i pravilno zakosimo rupu u plastici i metalu kako bismo postigli isti učinak.

Na prednjem desnom kutu rampe nalazi se uski prekidač za vrata koji je pričvršćen za 3D oslonce, gdje se okreće kako bi prešao preko igrališta. Ovaj prekidač je ono što bilježi kada je pogodak uspješne rampe.

Potrebni materijali:

  • 1/4 "jasan akril (list 12x24")
  • 1/2 "prozirni akril (list 12x24")
  • Akrilni cement
  • Pristup 3D pisaču i laserskom rezaču
  • Zaklopka rampe
  • Vijci s ravnom glavom 6-32 za zaklopac rampe
  • Bušilica ili ručni alat
  • Prekidač za uska vrata

Korak 6: Planirajte raspored elektroničkih blokova i pinova

(Autor ažuriranje: s proširenim korištenjem, 48V može puhati neke od tranzistora u ovoj konfiguraciji. Preporučujem korištenje 35V ili niže s ovim elektronikom, ili pomoću profesionalnijeg resursa kontrolne ploče kao što su oni navedeni ovdje: http: // pinballmakers com / wiki / index.php / Construction)

Ovaj stroj ima 3 naponske razine: 48V za solenoidnu snagu, 6.3V za LED i 5V za logiku i zvuk. Da bismo osigurali te naponske razine, koristili smo CNC napajanje za 48V, te off-the-shelf DC adaptere kako bismo osigurali 6,3 V i 5 V. (To bi moglo biti moguće samo koristiti 6.3V, jer Arduino dolje regulira svoj opskrbni napon na 5V izlazni pin, ali smo držali one napajanja izolirane). 48V je visoki napon, i iako nije smrtonosan sam po sebi može biti štetan za dijelove i može brzo prouzročiti pregrijavanje komponenti ako se pojave problemi s krugovima. Upotrijebite osigurač od 5 A na ulazu i izlazu glavnog 48V napajanja kako biste izbjegli požar ako je bilo koji od tranzistora kratak.

Na Arduino štitu, pričvrstili smo žice s ženskim Molex konektorima koji su dizajnirani tako da odgovaraju ulaznim i izlaznim zahtjevima za svaku od tri pod-ploče: ploču upravljačkog sklopa solenoida, ploču za svjetla / zvuk i ulaznu ploču.

U našem dizajnu, imali smo sljedeće pin zadatke. To je, naravno, prilično fleksibilno. Pin 0 je ostao otvoren. (Instructables ne dopušta da popisujemo brojeve koji počinju s 0.)

  1. Otvorena
  2. Otvorena
  3. Prekid / ulaz Active pin
  4. Kodiran ulazni pin
  5. Kodiran ulazni pin
  6. Kodiran ulazni pin
  7. Kodiran ulazni pin
  8. Kodiran ulazni pin
  9. Izlaz desnog odbojnika
  10. Srednji izlaz odbojnika
  11. Izlaz lijevog odbojnika
  12. Ispustite ciljni izlaz
  13. Glavni izlaz prekidača
  14. Glavni izlaz prekidača svjetla
  15. Osovinica izlaznog svjetla
  16. Osovinica izlaznog svjetla
  17. Osovinica izlaznog svjetla
  18. Pin za izlaz zvuka
  19. Otvorena

Iako nisu implementirane u naš dizajn, pinovi SCL i SDA mogu se koristiti za prikaz, a preostale igle mogu se koristiti za dodatnu kontrolu, kao što je dodavanje značajki (povrat lopte) ili više kombinacija rasvjete.

Potrebni materijali:

  • 48V CNC napajanje (kao ovaj)
  • Izvanmrežni napajanja od 6,3 V i 5 V (poput ove)
  • 5A polagani osigurači i držači osigurača i cijevi za spajanje koje se skupljaju toplinom
  • Molex konektori
  • Arduino prototip štitne ploče
  • Puno žice od 22AWG, lemljenje i strpljenje

Korak 7: Napravite vozačke ploče

Upravljačka ploča je odgovorna za okretanje ulaza iz Arduino, gumba peraja i praćke koja se uključuje u ispaljivanje svitaka. Budući da su signali na 5V razini, a solenoidi na 48V, veliki MOSFET-ovi snage su potrebni za prijenos signala. Tranzistori se koriste u ovom dizajnu su ti 100V-ocijenjeno MOSFETs iz Mouser.

Gore su prikazane tri sheme, koje uključuju peraje, praćke i metere. Svaka od njih ima malo drugačije zahtjeve, ali u svim njima, kada se tranzistoru daje 5V signal, otvara se strujni put za solenoid i 5-8 amps se gura kroz zavojnicu kako bi se dobio snažan udarac. Ovo je puno struje! U stvari, toliko struje će izgoriti komponente ako se tranzistor drži na više od vrlo kratkog pulsa. Provjerite, testiranjem ovog kruga pomoću softvera ili drugih metoda, da nikada u potpunosti ne napunite solenoid više od jedne sekunde.

Glavni izvor problema u gore navedenim sklopovima je induktivni udarac. Solenoidi su snažni induktori i, kao što možda znate, struja u induktorima se ne može odmah promijeniti. Kao takav, kada je tranzistor isključen, još uvijek postoji kratak trenutak u kojem 5-8 ampera teče kroz solenoid i sve to struje treba negdje. Ako ne daje put do zemlje, ova struja će voziti napon na odvodu tranzistora do stotina volti i uništiti tranzistor. Nadalje, kada se tranzistor uništi, on prekida sva tri terminala, što uzrokuje strujanje pojačala struje i može uništiti solenoid ako nije instaliran odgovarajući osigurač. (Uništili smo 8 tranzistora u našem otkriću i pokušali riješiti taj problem, ali na sreću nema solenoida jer smo uvijek brzo ručno isključivali napajanje).

Postoje dvije metode za sprečavanje induktivnog udarca: prvo, svaki skup flipera treba doći s diodom koja pokazuje od odvoda tranzistora natrag do napajanja. To, u teoriji, treba spriječiti tranzistor odvod iz ikada prekoračenja napona napajanja, kao što se to jednom dogodi dioda će se uključiti i isprazniti sve preostale energije iz induktor. Nažalost, u stvarnosti se same te diode ne mogu uključiti dovoljno brzo da sami potisnu induktivni udarac.

Da bismo riješili problem, dodali smo RC 'snubber' sklop. Ovaj krug ima kondenzator u nizu s otpornikom. Kondenzator apsorbira dovoljno struje iz induktora tako da dioda ima vremena za uključivanje i obavljanje svoje funkcije. Za više informacija o RC snubber sklopove, provjerite ovdje.

Krug upravljačkog solenoida odbojnika / droptargeta je prilično jednostavan i ima samo tranzistor, solenoid, snubber i vezu za primanje ulaza od Arduino. U ovoj ploči i naknadne ploče, pobrinite se da žica solenoid tako da dioda (koja nije prikazana u shematski) bodova prema strani visokog napona.

Kružni sklop upravljačkog sklopa je malo složeniji iz tri razloga. Prvo, da bi se brzina reakcije između pritiska na tipke i djelovanja plastike mogla brzo reagirati, preporuča se kreiranje tog odgovora izravno u krugovima umjesto u odvojenim ulazima i izlazima kojima upravlja Arduino. Kašnjenje uzrokovano Arduinom je malo, ali iskusan igrač će moći odmah reći i biti frustriran nedostatkom kontrole.

Drugo, peraje imaju dvije različite zavojnice (niskoenergetsku i snažnu zavojnicu), prekidač na kraju hoda koji se aktivira kada je peraja visoka. Ovaj prekidač služi važnoj funkciji dopuštanja paljenja visokotonske zavojnice u početku da bi dao snažan potez, ali prebacivanje na niskoenergetsku zavojnicu (~ 130 ohma nasuprot 4 ohma) koja daje dovoljno snage da drži fliper 'gore' kao dok je gumb postavljen, ali ne povlači toliko struje da bi izgorio solenoid. Na donjoj slici, EOS prekidač je normalno zatvoren, ali naš sklop je imao prekidač normalno otvoren i zahtijevao je drugi tranzistor za pretvorbu u normalno zatvoreni signal.

Treće, dok smo željeli da gumb izravno kontrolira peraje, uključili smo i "master" signal iz Arduina koji bi mogao aktivirati ili deaktivirati peraje, ovisno o tome je li lopta bila u igri. To rezultira korištenjem trećeg tranzistora u krugu.

Isto tako, ploča praćke ima svoje vlastite komplikacije. Iako koristi samo jedan tranzistor, on bi, poput peraja, trebao biti kontroliran izravno preko ulaznih sklopki (koje smo spojili u seriju) za brzi odziv, kao i da ne zahtijevaju dodatne izlazne igle na Arduinu. Nažalost, ako su vrata tranzistora izravno spojena na prekidač, odgovor je suviše brz da bi imao više od jedva primjetnog udarca jer prekidač ne ostaje dugo zatvoren. Kako bi imali snažniji udarac (tj. Puštanje elektromagnetskog pištolja "slijedili"), dodali smo diodu i veliki otpornik na vratima tranzistora, što omogućuje brz odaziv, ali stvara veliku vremensku konstantu opadanja napona na tom čvoru, tako da vrata ostaju blizu 5V (i na tranzistoru) dovoljno dugo da imaju vidljiv udarac, čak i nakon što su prekidači praćke ponovno otvoreni. Još jedna komplikacija je slanje ovog ulaza na Arduino, jer ulazna ploča (kao što ćemo vidjeti kasnije) zahtijeva nizak ulazi, a praćka radi kad je ulaz visok. Da bismo riješili ovaj problem, uključili smo treći tranzistor koji se zatvara kad god je ulaz visok, i tako se može tretirati kao bilo koji drugi ulazni prekidač na igralištu

Upravljačka ploča (zapravo dvije ploče) sastoji se od dva vozača peraje, dva praćka i četiri jednostruka sklopka za preostale solenoide. Umjesto izravnog lemljenja, koristili smo 0,1-inčne molex konektore za pričvršćivanje ove ploče na solenoide, napajanje i prekidače, tako da se bilo koji popravci ili prilagodbe mogu lakše napraviti.

Koristili smo ploče za lemljenje za naše dizajne, ali projektiranje stvarnih PCB-a s tim funkcijama imalo bi mnogo čišći rezultat i pomoglo bi u ublažavanju nereda žica koje ovi strojevi neizbježno imaju.

materijali:

  • 12 tranzistora snage 100V
  • 10-50 uF kondenzatora (ako nije moguće ako je moguće)
  • Otpornici 300, 5k i 500k i 3M
  • 1 manji tranzistor za prekidač praćke
  • Nekoliko dioda 1N4004
  • Prototip lemljivih ploča (ili, još bolje, dizajniranje vlastitih PCB-a)

Korak 8: Napravite ploču za unos senzora

Budući da koristimo samo Arduino, ograničeni smo na 20 digitalnih pinova. Međutim, fliper ima nekoliko desetaka jedinstvenih prekidačkih ulaza, da ne spominjemo izlazne vrijednosti potrebne za svjetla, zvuk i solenoide. Da bismo ublažili ovaj problem, napravili smo pretpostavku da se ne bi pokrenula dva ulaza odjednom (čime smo ograničili samo na 1 loptu). Ova pretpostavka omogućuje nam da "kodiramo" ulaze prekidača pretvarajući ih u 5-bitni binarni registar sa šestim pinom koji pokreće prekid kad god je primljen valjani ulazni sklop. Da bismo to postigli, koristili smo kaskadu od 8 do 3 enkodera kako bismo napravili enkoder od 24 do 5 koristeći ovaj koder u rasporedu prikazanom na gornjim slikama.

To je bio jedan od najvažnijih razvoja projekta, jer nam je omogućio da uvelike povećamo složenost našeg stroja od našeg početnog plana da imamo samo peraje, odbojnike i jednu ili dvije mete.

Druga prototipna ploča korištena je za postavljanje svakog od 24 muška Molex konektora; svaki prekidač na igralištu imao bi ženski konektor na kraju duge žice koja se priključuje na ovu ploču. Ciljevi pada su jedinstven slučaj koji se može rješavati na nekoliko načina. Ono što smo učinili bilo je povezati svaki prekidač ciljnog pada u seriju, tako da je ulaz zatvoren kada su svi dolje i omogućuje Arduinu da pošalje signal solenoidu da ispaljuje ciljeve pada natrag gore.

materijali:

  • 4 3-state-output prioritet 8-to-3 enkodera

Korak 9: Napravite svjetlo / zvuk / rezultat Periferni odbor

Da bismo sačuvali pinove na sličan način kao koder, koristili smo dekoder od 3 do 8 za kontrolu naših svjetala. To nam je dalo ograničenje da nismo mogli osvijetliti više od jednog svjetla u bilo kojem trenutku, ali to je bio prihvatljiv kompromis za oslobađanje pinova za druge elemente. Uključili smo i 4. "master" izlaz svjetla koji bi mogao kontrolirati sva svjetla odjednom. To bi nam, primjerice, moglo omogućiti da sve svjetla bljesnemo nekoliko puta kada se igra prvi put uključi (dajući snažan pokazatelj da se nešto zapravo događa igraču kad on ili ona pritisnu gumb za pokretanje, što je inače teško bez žarište ili šareni zaslon).

Iznad shematski prikazuje tranzistorski sklop sličan vozačima, ali mnogo jednostavniji jer niži naponi u igri (6.3V za svjetla) trebaju manje tranzistore i ne zahtijevaju toliko zaštitne sklopove. Koristili smo diodu ILI vrata za tranzistore da izoliramo signal glavnog prekidača i pojedinačni svjetlosni signal. To nam omogućuje da koristimo samo jedan tranzistor po svjetlu umjesto dva, i sprječavamo Arduino i koder čipova od "borbe" do izvora struje ili izvora.

Dok smo koristili niske struje LED za svako od svjetala igrališta (one ispod umetaka), gumb za pokretanje i 3 pop bumpersa svaki je došao s žaruljom sa žarnom niti koje izvlače oko 250mA svaki. Tranzistori su ocijenjeni za 530mA kontinuirane struje, tako da ne prelaze ovo, pobrinuli smo se da su samo dva žarulja ikada prošla kroz jedan tranzistor.

Također smo pričvrstili pasivni 5Z piezo zumer koji nam omogućuje da na ovoj ploči reproduciramo rudimentarne zvukove.

Prilagođene sekvence svjetla i zvuka mogu se programirati pomoću funkcija light_sequence + sound_sequence ili putem sučelja Pinball Language.

  • 10 tranzistora osvjetljenja (koristili smo ih)
  • 5V Piezo zujalica

Korak 10: Korak 11: Dizajnirajte pravila igre

Postoje dvije opcije za definiranje pravila igre flipera. Možete igrati s igrom pomoću prilagodljivog dokumenta flipera ili pravila za hard code. Pravila strogo kodiranih igara omogućuju veću fleksibilnost, uključujući sekvencijalne snimke i vremenske bonuse, dok korištenje Pinball dokumenta / parser sustava omogućuje fleksibilnija, ali jednostavnija pravila. Započet ćemo s sučeljem za igru ​​koja se može konfigurirati, a zatim detaljno opisati neka od pravila pravila igre, tako da možete odabrati koju konfiguraciju želite za svoju fliper igru.

Ovdje pogledajte repozitorij github za datoteke navedene u ovom projektu.

Dio 1. Osmislite pravila igre

Na slici je naveden zadani stroj za fliper.

To je navedeno u zadanom kodu za pokretanje. Sada imate dvije mogućnosti - ili napisati vlastiti kôd za stroj, ili koristiti određeno oblikovanje za fliper.

11. korak: Opcija 1. Napišite vlastitu datoteku Pinball.txt

U dokumentu s tekstom flipera naći ćete tri odjeljka: jedan za dijelove, jedan za "stanja" i jedan za "akcije". Ovdje možete definirati određene radnje za svaku komponentu. Za većinu komponenti vjerojatno ćete se htjeti držati stroja s jednim stanjem. Na primjer, ako svaki put kad se udari branik, igrač postigne još 100 bodova, osvijetli svjetlo na rampi, i postigne 100 bodova, tada bi dijagram stanja izgledao poput slike 1 s odgovarajućim kodom. Ako ste htjeli da komponenta ima više stanje stanje stroj, recimo, da ste htjeli svjetlo da se uključi kada branik je pogodio, a zatim isključiti kada je ponovno pogodio, vaš dijagram stanja / odgovarajuće stanje će izgledati kao slika 2 Naš posebni stroj osigurava strukture, kao na slici 3, za koje možete definirati pravila. Njihova imena, unutarnji kodirani makroi (o kojima ne morate brinuti, ali bi mogli biti korisni ako se odlučite istražiti izvorni kôd) i kodove prekida prikazani su na slici 3. Slika 4 povezuje ta imena s komponentama igrališta.

Savjeti za pisanje flipera
Budući da su komponente igre povezane s određenim prekidima (koje označava polje "pos") koje su pak definirane hardverom, ne preporučamo da previše mijenjate odjeljak "dijelovi" izvan polja "država". stanje rezerviranja 0 i radnja 0 za komponente koje nemaju učinak na bodovanje, kao što su gumb za pokretanje i prekidač za igru. Naš kod izgleda kao na slici 5.

Korak 12: Definirajte sekvence svjetla i zvuka

Osam svjetala na ploči se kontrolira pomoću dekodera 3 na 8 + jednog glavnog prekidača, kao što je prethodno opisano. Specifična svjetla mogu se osvijetliti upisivanjem pinova koji odgovaraju binarno kodiranoj verziji koda dijela visoko. Pomoćna funkcija light_sequence osigurava sučelje za korisnika koje specificira svjetlo koje on / ona želi osvijetliti, a makronaredbe su definirane u dokumentu state_machine_headers.h. Ponovno je prikazana tablica za vašu pogodnost programiranja. Što se tiče zvuka, koristili smo biblioteku Arduino tonova za programiranje kratkih zvučnih sekvenci za različite događaje u igri. Imamo četiri unaprijed izrađena zvuka iz kojih možete odabrati (koristeći executeSound (<# zvuka koji želite>)). Ovi zvukovi odgovaraju dugom, veselom slijedu, kratkom veselom nizu, kratkom tužnom slijedu i dugom tužnom slijedu. Ako želite programirati vlastite zvukove, pogledajte kako to učiniti (pitch.h je uključen u spremište): http://www.arduino.cc/en/Reference/Tone

Korak 13: Umetnite datoteku Pinball.txt u Arduino

Kada završite s pisanjem FSM-a, evo kako ćete učitati igru ​​na svoj Arduino (pretpostavlja se da koristite Mac). Sve datoteke mogu se pronaći u github repozitoriju.

  1. Raspakirajte arduino-serijsku zip datoteku.
  2. Dođite do arduino-serijske datoteke i spremite konfiguracijsku datoteku igre ovdje. "Pinball.txt" pruža uzorak predloška koji možete koristiti.
  3. Otvorite Arduino. Prenesite skicu za fliper.
  4. Otvorite terminal i upišite sljedeće naredbe:
    • napraviti
    • ./arduino-serial -b 9600 -p pinball.txt
  5. Sada bismo trebali čitati i pohranjivati ​​podatke u Arduino internu memoriju. Ako postoje neispravne linije, Arduino će ispisati poruku o pogrešci i možete odabrati ponovno slanje datoteke.
  6. Kada završite s učitavanjem koda pomoću terminala, npr. kada Arduino ispiše "završenu" poruku, možete otvoriti Arduino Serial za čitanje poruka iz igre u tijeku.

Uobičajeni problemi / optimizacije za softversku igru

  1. Teško kodirane i konfigurabilne igre - primijetili smo da su prekidi u hard-kodiranoj igri mnogo točnije reagirali od one u prilagodljivoj igri. To bi moglo biti zbog toga što je prilagodljiva igra imala mnogo funkcija opće namjene koje su zahtijevale uvjetne izraze. To je usporilo brzinu čitanja petlje, zbog čega smo propustili nekoliko prekida i utjecali na ukupnu radnu brzinu igre. Da bismo riješili ovaj problem, smanjili smo dio prilagodljive igre konfiguracijske datoteke kako bismo postigli prihvatljivo vrijeme odziva u krugu. Prvobitno smo se brinuli o RAM kapacitetu Arduina i koliko pravila igre može pohraniti, ali se ispostavilo da je to manji problem nego što se prvobitno očekivalo i da je brzina petlje bila veći ograničavajući faktor.
  2. Osporavanje prekida - zbog brzih akcija flipera, imali smo nekoliko slučajeva u kojima je prekidač dobio nekoliko prekida za fliper koji je pogodio samo jednu komponentu igre. Osim toga, budući da su ti prekidi primljeni prije nego što je koder imao vremena da ispravno pročita sve ulaze, prekidi bi bili povezani s pogrešnim komponentama. Da bismo riješili ovaj problem, koristili smo vanjsku knjižnicu koja je odgovorila 1ms nakon što je primljen prvi prekid, dajući vrijeme za pinove enkodera da dosegnu visinu prije nego što igra pročita ulazni kod.
  3. Zaslon - Iako serijski zaslon omogućuje igri ispisivanje detaljnih poruka, igraču je teško čitati izlazne poruke kada igra brzu igru ​​flipera. Također je nezgodno da igrač mora igrati igru ​​s priključenim računalom. U budućnosti se nadamo da ćemo implementirati digitalni zaslon koji može prikazati rezultat i druge informacije o igri na zaslonu koji korisnik može lako vidjeti, kao što je LED matrica ili 7-segmentni prikaz.

Korak 14: Opcija 2: Savjeti za tvrdo kodiranje vlastite igre

Prvo - pročitajte dokument state_machine_headers.h da biste razumjeli globalne strukture podataka koje pohranjuju informacije o stanju stroja. Prije učitavanja u Arduino kôd trebate inicijalizirati te strukture podataka prema pravilima igre unutar Arduino IDE-a. Navedene su sljedeće strukture podataka:

Strukture igara koje sadrže informacije o svakom dijelu Države drže informacije o prijelazima stanja Radnje za čuvanje informacija o akcijama koje će se izvršiti Ove strukture popunjava datoteka za čitanje. Definirajte ulaz / izlaz za sve pinove. Prekidne pinove treba definirati kao INPUT pinove.

U glavnoj petlji, provjerite svaki ciklus kako biste vidjeli je li prekid ispaljen za svaku komponentu igre. Definirajte svaku komponentu igre u izrazu prekidača.

Pomoćna funkcija executeState ažurira trenutno stanje dijela i izvršava akcije na temelju in-coded informacija.

Hard-kodiranu prvu verziju koda igre možete pronaći u datoteci "simplepinballgame.ino"

Korak 15: Spojite sve

Za povezivanje Arduina s našim vozačkim pločama, koristili smo protoshield kako bismo lakše pristupili pinovima na drugim pločama. Ima mnogo žica, zato budite oprezni! Slijedite raspored u elektroničkim pinovima i rasporedu kako biste svoje priključke Arduino spojili na odgovarajuće igle. Molex konektori bi trebali puno pomoći u pronalaženju konektora s kojima se povezuju.

Evo kratkog FAQ-a za rješavanje problema ako naiđete na neke od uobičajenih problema koje smo učinili:

Priroda ulaznog enkodera je da postoji 6 ulaznih pinova u Arduino: 5 koji zajedno pokazuju koji se ulaz pokreće, i šesti pin koji ide visoko ako se pokrene jedan ulaz. Napisan kod otkriva samo kada se taj šesti pin mijenja od niskog do visokog. Dakle, ako Arduino ne prima nikakve ulaze, a vi ste sigurni da svi ili barem većina prekidača rade, provjerite jesu li prekidači zaglavljeni zatvoreni. Na primjer, ako su svi ciljevi pada dolje i nisu vraćeni, to je zatvoreni prekidač i sprječava Arduino da primi bilo koji drugi ulaz.

Provjerite jesu li matica koja drži strijelca na mjestu čvrsto zategnuta, ili da strijelac nije olabavljen. Alternativno, nauljite šipku.

To može biti problem s mehaničkim dizajnom ako su prekidači postavljeni u prevelikoj traci, što omogućuje da se lopta okrene oko njih. Inače, može biti rezultat predugog kašnjenja negdje u kodu. Ako ste, primjerice, zauzeti reproduciranjem tona pomoću biblioteke tonova i naredbe odgode (), Arduino neće moći preuzeti ulaze tijekom tog vremena. Jedno zaobilazno rješenje koje smo koristili bilo je samo reproducirati zvukove za snimanje na rampi, cilj stajanja, gumb za pokretanje i prekidač za kraj igre, jer smo znali koliko ćemo vremena imati nakon tih snimaka prije nego što će novi unos vjerojatno biti pokrenut ,

Doduše, nismo dodijelili određena zaglavlja za određena svjetla ili određene solenoide, što znači da prvi put kada sve uključite u (ili sljedeća vremena ako ih nekako ne označite), izlazni pinovi (ili kodiranje izlaznog svjetla) povezani su proizvoljni poredak. Upotrijebite probnu i pogrešku kako biste riješili koji pinovi odgovaraju izlazu i prilagodite ga u skladu s tim. Za svjetla i odbojnike, to nije tako loše - ali definitivno označite sve ulaze i zapišite koji je koji, jer taj proces može imati do 24 vrijednosti i potrebno je malo više vremena za kalibriranje.

Koder ima nesretno svojstvo ponekad pulsiranje indikatorskog pina visoko prije nego što 5 pinova davača u potpunosti riješe svoje vrijednosti. Za nas smo znali da se to dogodilo kada je broj prekidača pritisnut bio jedan po jedan, ali se može pojaviti drugačije za vas. Taj smo problem riješili korištenjem knjižnice za debouncing kako bismo stvorili malo kašnjenja između trenutka kada primijetimo da se promjena promijenila i kada snimamo koji je prekidač bio. Oprezno, međutim, kao i previše odgode (više od 15-20mS) može uzrokovati da propustite ulaze u cijelosti.

Nažalost, još nismo shvatili dobro rješenje za ovu.