Buhay

Paano Gumawa ng isang Arduino Pinball Machine: 15 Steps (na may Mga Larawan)

Wooden Pinball + Arduino DIY (40x40cm mini size)

Wooden Pinball + Arduino DIY (40x40cm mini size)

Talaan ng mga Nilalaman:

Anonim

Kung ikaw ay tulad ng sa akin, gusto mo pinball, ngunit walang pera upang bumili o puwang upang magkasya sa isang buong laki ng laro. Kaya bakit hindi mo itatag ang iyong sarili?

Dito, lalakarin namin kung paano lumikha ng iyong sariling pasadyang laro Pinball na pinapatakbo ng isang Arduino. Ang laro ay may mga ilaw, tunog, nagtatampok ng mga tunay na bahagi ng pinball, kabilang ang mga bumper, drop target, at slingshot, at kahit may rampa.

Ang proyektong ito ay nangangailangan ng isang napakalaking halaga at iba't ibang mga materyal, kaya kumunsulta sa bawat susunod na seksyon para sa mga bagong materyales na kailangan upang makumpleto ang bawat hakbang. Bilang isang panimula, ito ay lubhang kapaki-pakinabang kung mayroon kang access sa isang pamutol ng laser o CNC router pati na rin ang pangunahing electronic at hardware toolkits.

Tala ng may-akda: Ang itinuturo na ito ay kamakailan-lamang na nai-publish at hindi lahat ng mga disenyo at software file ay ganap na nakaayos. Kung nagplaplano na gamitin ang aming mga file, mangyaring mag-iwan ng komento upang masiguro namin na ang lahat ay nasa pinaka-up-to-date na estado nito.

Mga Kagamitan:

Hakbang 1: Disenyo

Ang larawan sa itaas ay isang disenyo ng Solidworks ng playfield at sumusuporta sa pagpupulong. Ang playfield ay purong custom, ngunit ang mga linya ng pagbaril (tulad ng curve ng back looping shot) ay dinisenyo batay sa tunay na pinball machine upang matiyak ang makinis na pag-play. Ang isang kahirapan dito ay ang, dahil sa kanilang pagiging kumplikado, ang mga aktwal na mga bahagi ng pinball (hal. Ang mga bumper at ang mga drop na target) ay hindi na-modelo, ngunit kailangan pa rin ang pangangalaga upang matiyak na ang lahat ay magkasya sa ilalim ng playfield - ang mga bahagi ay mas malaki sa ilalim ng itaas.

Ang mga file ay kasama sa repository, kaya huwag mag-atubiling upang ayusin ang disenyo upang umangkop sa iyong magarbong.

Ang ilang mga highlight ng disenyo:

Ang playfield ay 42 "sa pamamagitan ng 20.25" na pulgada, eksaktong laki ng mga laro ng estilo ng Bally ng 1980. Ito ay ginawa ng ½ "playwud, na kung saan ay karaniwan at hindi dapat mabago habang ang pinball part assemblies ay dinisenyo para sa kapal na ito. Ang mga dingding dito ay binubuo ng ½ "layer sa ibabaw ng isang ¼" layer. Sa unang tularan, ½ lamang ang "dingding ang isinama, ngunit ang mga ito ay napatunayan na masyadong maikli at maaaring pop ang pinball sa hangin sa mga partikular na firm shot. Pangalawa, ang disenyo na ito ay nagpapahintulot para sa bahagyang itataas tagabaril linya (nakalarawan sa itaas) na nagbibigay-daan sa bola sa drop bahagyang sa playfield, ngunit hindi pabalik sa.

Ang rampa ay dinisenyo na may malinaw na acrylic at naka-print na suporta sa 3d. Tinatawid nito ang playfield upang bigyan ang manlalaro ng pagkakataon na matumbok ang rampa ng maraming beses mula sa kaliwang flipper. Kung gayon, ang malinaw na acrylic ay ginagamit upang hindi mapigil ang tanawin ng manlalaro ng talahanayan:

Sa wakas, ang playfield ay sinusuportahan ng mga maikling pader sa apat na sulok, na panatilihin ang playfield sa standard na 6.5 degrees ng slope. Ang likod na pader ay may ilalim na "istante" na maaaring alisin at ginagamit upang i-mount ang electronics. Nagreresulta ito sa isang laro na may isang buong-laki ng playfield, ngunit mas mas compact kaysa sa isang tipikal na laro at maaaring dalhin sa pamamagitan ng kamay ng isang tao. Dahil ang playfield ay isang standard na laki, gayunpaman, ang mga suporta na ito ay maaaring alisin kung nais mong ilagay ang playfield sa isang standard na pinball cabinet. Upang gawin ito, maaaring gusto mong isaalang-alang ang pagdaragdag ng ball return assembly, na hindi kasama sa disenyo na ito.

Hakbang 2: Kunin ang Kahoy

Upang i-cut ang mga layer ng playfield, gumamit kami ng isang laser cutter. Gayunpaman, ang isang pamutol ng laser na may sapat na lakas upang i-cut ang ½ "playwud ay mahirap mahahanap, nangangailangan ng mataas na kalidad na playwud, at maaaring panganib na magsisimula ng apoy kung hindi ka maingat. Ang karaniwang mga playfield ay pinutol gamit ang isang CNC router - habang ang ilan sa mga sulok ay maaaring hindi tulad ng malutong, dapat mo pa ring makamit ang disenteng mga resulta. Para sa pagiging simple, ang mga hakbang sa ibaba ay ipalagay na mayroon kang access sa parehong laser cutter na aming ginawa. May ilang mga tao na nagkaroon ng disenteng mga resulta gamit lamang ang isang drill at lagari, ngunit dapat kang maging maingat at napaka-pasyente kung pumunta ka sa rutang ito.

Ang unang hakbang sa paglikha ng playfield ay pag-convert ng disenyo sa mga file na DXF na maaaring ma-fed sa isang pamutol ng laser. Halimbawa, ang playfield na file na DXF ay nakalarawan sa ibaba. Ang mga file na ginamit sa proyektong ito ay kasama sa aming imbakan.

Gamit ang pamutol ng laser, pinutol namin ang mga hugis para sa playfield, ang ¼ "intermediate layer (ginamit namin ang duron, isang mas murang materyal na prototyping na kahoy, ngunit ang ¼" plywood ay gagana rin), ang ½ "top layer, at ang ½" ay sumusuporta.

Kailangan ang mga materyales:

  • ½ "playwud para sa playfield at base
  • ¼ "playwud o duron para sa intermediate wall layer
  • ½ ", ¾", at 1 "mga tornilyo sa kahoy
  • Access sa isang CNC router o laser cutter

Hakbang 3: Magtipon ng Playfield

Magsimula sa pamamagitan ng clamping ang mga piraso mula sa ¼ "duron layer papunta sa playwud sa kani-kanilang mga lokasyon. Paggamit ng isang hand-drill, unang drill pilot butas gamit ang isang 3/32 "bit, at pagkatapos ay gamitin ang flat-ulo ¾" kahoy Turnilyo upang i-attach ang ¼ "layer sa playfield Mahalaga na gawin ito mula sa top-down (ie kaya ang tornilyo ay unang napupunta sa pamamagitan ng ¼ "layer, pagkatapos ay sa ½" base), dahil ang ¼ "bahagi ay maliit at manipis at liko ang layo mula sa base layer kung drilled sa kabaligtaran direksyon. Mahalaga rin na tiyakin na ang mga ulo ng tornilyo ay mag-flush sa ¼ "layer at huwag magbigay ng anumang karagdagang kapal.

Isang huling tala: ang mga tornilyo na ito ay maaaring pumunta halos kahit saan, dahil ang layer na ito ay halos hindi nakikita sa player kapag ang playfield ay binuo. Ngunit may isang pagbubukod - huwag ilagay ang mga screws sa lane ng tagabaril. (Una naming ginawa ang pagkakamali na ito).

Susunod, ilakip ang mga dingding sa gilid, at gamitin ang pinakamahabang mga tornilyo sa kahoy upang mag-drill sa mga ito mula sa tuktok ng board, muli tulad na ang mga tornilyo ulo ay flush sa tuktok. Sa sandaling tapos na, i-clamp ang ½ "layer na piraso sa tuktok ng duron, at i-screw ang mga ito sa tulad ng dati, maliban sa oras na ito screwing mula sa ibaba gamit ang 1" Turnilyo.Since ang tuktok layer ay ½ "makapal, ito ay mas malamang upang yumuko mula sa base, at ang screwing mula sa ibaba ay tumitiyak na ang mga screws ay mananatiling hindi nakikita sa player.

Panghuli, ilakip ang block ng tagabaril (nakalarawan sa itaas, may tagabaril) sa pamamagitan ng pag-screwing mula sa ilalim na bahagi gamit ang 2 screws upang ang bloke ay hindi madaling i-twist. Ang block ng tagabaril ay may isang "U" na hugis slot na umaangkop sa tagabaril, na maaaring mai-install sa pamamagitan ng pagpigpit ng nut sa kabilang panig. Maaari mo ring gamitin ang pampadulas upang mabawasan ang alitan sa pagitan ng pagbaril pamalo at ang bola.

Maaaring kailanganin ng disenyo ang ilang mga pag-aayos sa puntong ito. Halimbawa, sa aming disenyo, ang pagputol para sa mga target ng drop ay masyadong makitid at kailangang palawakin gamit ang dremel. Kung ginagamit ang aming mga file bilang higit sa isang reference, subukan na makipag-ugnay sa mga may-akda na maaaring magbigay ng na-update na mga file. Mahusay ding ideya na mag-buhangin ng anumang mga magaspang na lugar, lalo na kung saan nakikipagkita ang dalawang piraso ng kahoy.

Sa karamihan ng bahagi, ito ay nagtatapos sa woodworking, at maaari naming ilipat upang ilagay sa mga bahagi.

Kailangan ang mga materyales:

  • 3/4 "flat head screws ng kahoy
  • Tagabaril ng pagpupulong
  • Mas mahaba (~ 1.5 ") na mga tornilyo sa kahoy
  • Kamay drill sa 3/32 "bit
  • Lubricating oil
  • 1 "flat head screws sa kahoy
  • Isang file at / o dremel, at liha

Hakbang 4: Idagdag ang Mga Bahagi

Sa puntong ito sa yugto ng disenyo, dapat kang magkaroon ng isang pangkalahatang ideya ng oryentasyon na kinakailangan upang matiyak na ang lahat ng mga sangkap ay talagang magkasya sa ilalim ng playfield. (Kung ginagamit ang aming disenyo, sanggunian ang larawan ng underside ng aming talahanayan sa itaas).

Una, i-install ang drop targets, stand-up target, at tirador na assemblies sa pamamagitan ng paglalagay ng ½ "kahoy Turnilyo sa pamamagitan ng mounting butas sa pagpupulong. Gawin ang parehong sa pop bumpers, ngunit siguraduhin na alisin ang takip muna, o ang pagpupulong ay hindi magkasya sa butas nito!

Ikalawa, i-install ang mga assemble ng flipper. Tiyaking paikutin sila sa tamang direksyon. Ang solenoid, kapag fired, ay pill ng pin sa likid, at ito ay dapat paikutin ang katawan ng post na tulad na ang flipper rotates up patungo sa playfield. Sa sandaling naka-install ang mga assemble ng flipper, ilakip ang flipper bat sa mula sa kabilang panig.Gumamit ng wrench sa lock nut sa pagpupulong upang higpitan ang mga ito sa lugar, pagkatapos ay gamitin ang tagsibol na dapat na dumating sa pagpupulong upang matiyak na ang flippers ay bulled back down kapag hindi fired.

Sa katulad na paraan, i-install ang lahat ng mga rollover switch gamit ang 1/2 "screws, tinitiyak na madali itong pinindot mula sa tuktok at pabalik sa lugar. Gamit ang 6-32 bolts, ilakip din ang switch ng gate sa itaas-kaliwa ng ang aming disenyo Ang gate switch na ito ay nagsisilbi bilang isang one-way na pagbubukas, na nagbibigay-daan sa mga shot mula sa kanang bahagi at mula sa tagabaril upang mahulog sa mga bumper. Ito ay isang aspeto ng disenyo na nagreresulta sa mga pag-shot na pumapasok sa tamang ramp at kanang loop na papunta sa iba't ibang mga lugar at nagdaragdag ng higit pang iba't-ibang sa pag-play.

Upang i-install ang mga ilaw, unang ilagay ang mga insert ng plastic sa kanilang mga butas. Ang mga pagpasok na ito ay tungkol sa ¼ "makapal. Kung gumagamit ng isang CNC router, ang wastong paraan upang i-mount ang mga ito ay upang kunin ang ¼ "layer bahagyang mas malaki kaysa sa insert hole. Sa aming disenyo, dahil ang pamutol ng laser ay hindi maaaring i-cut ang mga bahagyang layers, kami ay naka-print na mga 3D na bracket na sumusuporta sa mga pagsingit. Gamitin ang epoxy upang i-hold ang mga insert sa lugar (roughen ang mga gilid muna) at ang liha upang matiyak na ang mga pagsingit ay antas sa playfield.

Susunod, ipasok ang LEDS sa kanilang mga braket sa pamamagitan ng pagpasok at pag-twist sa mga ito sa lugar. Pagkatapos, tornilyo ang mga bracket sa lugar tulad na ang mga LEDs umupo nang direkta sa ibaba bawat insert. Ang mga light brackets na naka-link sa ibaba ay medyo manipis, at talagang sapat na manipis na ang 1/2 "screws ay maaaring tumagas sa tuktok ng talahanayan. Gumamit ng isang pares ng mga washers upang hindi ito mangyari.

Ang mga post sa playfield ay na-install gamit ang 6-32 bolts. Sa sandaling naka-install, i-wrap ang mga rubber mula sa goma kit sa palibot ng mga ito upang makagawa ng mga passive bumper. Ang mga ito ay nagbibigay ng mesa ng mas maraming "buhay" kaysa kung ang disenyo ay magiging ganap na playwud. Gamit ang parehong mga bolts, i-attach ang mga gabay ng lane sa itaas lamang ng flippers. Palamigin din ang paglipat ng end-of-game sa lugar.

Tandaan na ang karamihan sa mga laro ay may dedikadong bola na pagpupulong na katulad ng isa dito. Hindi ito kasama sa disenyo na ito, gayunpaman, lalo na dahil sa gastos. Ang trade-off, siyempre, ay na ang manlalaro ay responsable na ngayon sa paglalagay ng bola pabalik sa shooter lane sa sandaling mag-drains. Mayroon kaming isang tagabaril, bagaman, na naka-attach sa block ng tagabaril na nakalarawan nang mas maaga.

Ang mga pindutan ng flipper at pindutan ng pagsisimula ay na-install sa pamamagitan ng paglalagay sa mga ito sa mga butas at pagla-lock sa lugar na may mga palnuts. Ang switch ng dahon ng flipper ay naka-bolted sa loob ng mga pindutan gamit ang 6-32 bolts at isasara ang switch circuit kapag pinindot ang mga pindutan.

Sa puntong ito, ang iyong playfield ay (mula sa itaas) na katulad ng halos kumpletong talahanayan ng pinball! Ang lahat ng nawawala ay ang rampa. Huwag mag-atubiling sumaya sa iyong mga kaibigan tungkol sa kung paano kahanga-hangang ito hitsura habang pribado na takot tungkol sa kung magkano ang mga kable at paghihinang doon ay upang gawin.

Ang mga materyales na kailangan (ang karamihan ay binili mula sa PinballLife.com, at matatagpuan lamang sa pamamagitan ng paghahanap sa mga tuntunin sa ibaba).

  • 1 3-bank drop target assembly
  • 3x pop bumper assembly
  • 1 kaliwang flipper assembly
  • 1 kanan flipper assembly
  • 2 flipper bats
  • 2 mga pindutan ng flipper
  • 2 paltos button na flipper
  • 1 pindutan ng pagsisimula
  • 1 goma ring set
  • ~ 30 postfield star post, (1 1/16 "ginamit)
  • 2 lane guides
  • 2 flipper button switch sa dahon
  • 2 tirador pagtitipon
  • 1 standup target
  • 10 rollover switch
  • 8 LED # 44 bayonet-style lights
  • 8 bayonet-style light bracket (Miniature Bayonet Base 2-Lead Socket With Long Mounting Bracket)
  • 5 1-1 / 2 "x 13/16" na asul na arrow insert
  • 3 1 "x 3/4" malinaw na insert ng bullet
  • 6-32 bolts (2.5 ", pati na rin ang ilang mas maliit na laki), mga mani, at mga washers
  • ~ 2 "malawak na gate switch (tulad ng isa dito, ito ay maaaring maging mahirap upang mahanap, kami scrapped atin mula sa isang lumang nasira pinball ramp binili sa ebay)

Hakbang 5: Buuin ang Ramp

Upang gumawa ng ramp, gamitin ang ¼ "acrylic para sa mga base na piraso at ⅛" acrylic para sa mga dingding sa gilid. Ang malinaw na acrylic ay magbibigay ng magandang, malinis na anyo habang hindi hinarang ang pagtingin sa playfield para sa manlalaro. Ang paggamit ng mga may kulay na acrylic ay maaari ring maging isang magaling na opsyon, ngunit hindi ito inirerekomenda na gumamit ng isang ganap na opaque na materyal tulad ng kahoy.

Ang mga suporta para sa mga ramp ay 3D na naka-print gamit ang isang makerbot at bolted sa playfield at ang plastic gamit ang parehong 6-32 bolts.

Ang mga piraso ng acrylic dito ay nakadikit sa paggamit ng acrylic semento, na isang solvent na mahalagang natutunaw at hinahabi ang plastik na magkasama. Siguraduhin na gumamit ng isang maliit na halaga, at ito ay gumawa ng isang napakalakas na bono na halos hindi nakikita.

Sa pasukan ng rampa, isinama namin ang isang ramp flap tulad ng nasa litrato sa itaas. Ito ay isang manipis na piraso ng metal na nagbibigay ng isang napaka-makinis na paglipat mula sa playfield sa plastic ng ramp, sa halip na ang pinball ay kailangang "tumalon" sa ¼ "kapal ng plastic. Maaari kang bumili ng isa sa mga mura mula sa isang pinball specialty store o Ebay (ginawa namin), o gumawa ng isa sa iyong sariling sa sheet metal. Sa mga komersyal na laro, ang mga ito ay pinutol upang ang mga bolt ay hindi mananatili at makarating sa daan ng bola. Dahil wala kaming tamang kagamitan upang magawa iyon, ginawa naming siguraduhin na gamitin ang flat-head screws at maayos na chamfer ng butas sa plastic at sa metal upang makamit ang parehong epekto.

Mayroong makitid na switch sa gate na naka-attach sa mga sumusuporta sa 3D sa harap-kanang sulok ng rampa, kung saan ito ay lumiliko upang pumunta sa buong playfield. Ang switch na ito ay kung ano ang mga talaan kapag ang isang matagumpay na ramp shot ay na-hit.

Kailangan ang mga materyales:

  • 1/4 "malinaw na acrylic (12x24" sheet)
  • 1/2 "malinaw na acrylic (12x24" sheet)
  • Acrylic na semento
  • Access sa isang 3D printer at laser cutter
  • Ramp flap
  • Flat-head 6-32 bolts para sa rampa flap
  • Chamber drill bit o kamay tool
  • Maliit na paglipat ng gate

Hakbang 6: Planuhin ang Block ng Electronics at Pin Layout

(Pag-update ng may-akda: Gamit ang pinalawak na paggamit, 48V ay maaaring pumutok sa ilan sa mga transistors sa configuration na ito. Gusto ko inirerekumenda ang paggamit ng 35V o mas mababa sa mga electronics na ito, o gamit ang isang mas propesyonal na mapagkukunan ng control board tulad ng mga nakalista dito: http: // pinballmakers .com / wiki / index.php / Konstruksyon)

Ang makina na ito ay may 3 antas ng boltahe: 48V para sa kapangyarihan ng solenoid, 6.3V para sa LEDs, at 5V para sa lohika at tunog. Upang maibigay ang mga antas ng boltahe, gumamit kami ng supply ng power ng CNC para sa 48V, at mga adaptor ng off-the-shelf DC upang magbigay ng 6.3V at 5V. (Ito ay maaaring posible na gamitin lamang ang 6.3V, habang ang Arduino down-regulates ang supply boltahe nito sa 5V output pin, ngunit itinatago namin ang mga supply kapangyarihan na ihiwalay). 48V ay isang mataas na boltahe, at habang hindi nakamamatay sa pamamagitan ng kanyang sarili ay maaaring maging damaging sa mga bahagi at maaaring mabilis na maging sanhi ng mga bahagi upang magpainit kung mayroong anumang mga problema sa circuitry. Gumamit ng 5-A slow-blow fuse sa parehong input at output ng pangunahing 48V power supply upang maiwasan ang pagsisimula ng apoy kung ang alinman sa mga transistors ay maikli.

Sa Arduino shield, nag-attach kami ng mga wire na may babae na konektor ng Molex na dinisenyo na tumugma sa mga kinakailangan sa input at output ng bawat isa sa tatlong sub-board: ang solenoid driver board, ang mga ilaw / sound driver board, at ang input board.

Sa aming disenyo, mayroon kaming mga sumusunod na mga takdang pin. Siyempre, ito ay lubos na kakayahang umangkop. Ang kaliwang 0 ay naiwang bukas. (Ang mga instructables ay hindi nagpapaalam sa amin ng mga listahan ng mga numero na nagsisimula sa 0.)

  1. Buksan
  2. Buksan
  3. I-interrupt / Input Aktibong pin
  4. Naka-encode ng input pin
  5. Naka-encode ng input pin
  6. Naka-encode ng input pin
  7. Naka-encode ng input pin
  8. Naka-encode ng input pin
  9. Karapatan na output ng bumper
  10. Middle bumper output
  11. Kaliwang bumper output
  12. I-drop ang target na output
  13. Flipper master switch output
  14. Master light switch output
  15. Banayad na output pin
  16. Banayad na output pin
  17. Banayad na output pin
  18. Sound output pin
  19. Buksan

Kahit na hindi ipinatupad sa aming disenyo, ang SCL at SDA Pins ay maaaring gamitin para sa isang display at ang mga natitirang Pins ay maaaring gamitin para sa karagdagang kontrol, tulad ng pagdaragdag ng mga tampok (isang ball return) o higit pang mga kumbinasyon ng pag-iilaw.

Kailangan ang mga materyales:

  • 48V CNC power supply (tulad ng isang ito)
  • Ang 6.3V at 5V power supply ng off-the-shelf (tulad ng isang ito)
  • 5A mabagal-suntok fuse at fuse holders, at init-pag-urong patubigan para sa koneksyon
  • Mga konektor ng Molex
  • Arduino prototype shield board
  • Maraming 22AWG wire, solder, at pasensya

Hakbang 7: Gumawa ng mga Driver Boards

Ang driver board ay may pananagutan sa paggawa ng mga input mula sa Arduino, ang mga pindutan ng flipper, at ang slingshot switch sa pagpapaputok ng mga coil. Dahil ang mga senyas ay nasa antas ng 5V at ang solenoids sa 48V, mabigat na kapangyarihan MOSFETS ay kinakailangan upang maghatid ng signal. Ang mga transistors na ginamit sa ganitong disenyo ay ang mga 100V-rated MOSFETs mula sa Mouser.

May tatlong schematics na nakalarawan sa itaas, na kinabibilangan ng flippers, slingshots, at mga target na bumpers / drop. Ang bawat isa ay may bahagyang iba't ibang mga kinakailangan, ngunit sa lahat ng mga ito, kapag ang transistor ay binigyan ng isang 5V signal, isang kasalukuyang landas ay bubukas para sa solenoyde at 5-8 amps ay itinulak sa pamamagitan ng likid upang magbigay ng isang malakas na sipa. Ito ay isang pulutong ng mga kasalukuyang! Sa katunayan, magkano ang kasalukuyang ito ay magsunog ng mga sangkap kung ang transistor ay pinananatili para sa higit sa isang napaka-maikling pulso. Tiyakin, sa pagsubok sa circuit na ito gamit ang software o iba pang mga pamamaraan, upang hindi ganap na magamit ang isang solenoid para sa higit sa isang segundo.

Ang pangunahing pinagmumulan ng mga problema sa circuitry sa itaas ay pasaklaw. Ang solenoids ay malakas na inductors, at bilang maaari mong malaman, ang kasalukuyang sa inductors ay hindi maaaring baguhin instantaneously. Dahil dito, kapag ang transistor ay naka-off, may isang maikling sandali na kung saan 5-8 amps ay dumadaloy sa pamamagitan ng solenoyde, at ang lahat ng kasalukuyang mga pangangailangan sa isang lugar upang pumunta. Kung hindi bibigyan ng isang landas sa lupa, ang kasalukuyang ito ay humimok ng boltahe sa transistor patuyuin hanggang sa daan-daang mga volts at sirain ang transistor. Bukod pa rito, kapag ang transistor ay nawasak, ito ay putulin ang lahat ng tatlong mga terminal, na nagiging sanhi ng amps ng tuloy-tuloy na kasalukuyang daloy at maaaring sirain ang solenoid kung walang tamang fuse na naka-install. (Nawasak kami ng 8 transistors sa aming pagtuklas at mga pagtatangka upang harapin ang problemang ito, ngunit sa kabutihang palad walang solenoids dahil palagi kaming mabilis na manu-mano tanggalin ang kapangyarihan).

Mayroong dalawang mga paraan upang maiwasan ang pasaklaw sipa: una, ang bawat pinball assembly ay dapat na may isang diode na tumuturo mula sa transistor maubos pabalik sa supply. Ito, sa teorya, ay dapat na maiwasan ang transistor alisan ng tubig mula sa kailanman paglampas sa supply boltahe, bilang isang beses na mangyayari ang diode ay i-on at maubos ang lahat ng natitirang enerhiya mula sa inductor. Sa kasamaang palad, sa katunayan ang mga diode na nag-iisa ay hindi magbubukas ng sapat na mabilis upang sugpuin ang pasaklaw na sipa sapat sa pamamagitan ng kanilang sarili.

Upang malutas ang problema, nagdagdag kami ng Circuit 'snubber' circuit. Ang circuit na ito ay nagtatampok ng isang kapasitor sa serye na may isang risistor. Ang kapasitor ay sumisipsip ng sapat na kasalukuyang mula sa inductor tulad na ang diode ay may oras upang i-on at gawin ang function nito. Para sa karagdagang impormasyon sa RC snubber circuits, tingnan dito.

Ang bumper / droptarget solenoid driver circuit ay medyo simple at mayroon lamang ang transistor, ang solenoid, ang snubber, at isang koneksyon upang matanggap ang input mula sa Arduino. Sa ganitong board at kasunod na mga boards, siguraduhin na kawad ang solenoid tulad na ang diode (na kung saan ay hindi ipinapakita sa eskematiko) puntos patungo sa mataas na boltahe gilid.

Ang flipper driver circuit ay medyo mas kumplikado para sa tatlong dahilan. Una, upang magkaroon ng isang mabilis na reaksyon sa pagitan ng pindutan ng pindutin at ang pagkilos ng flipper, inirerekomenda na likhain ang tugon na direkta sa circuitry sa halip na bilang magkahiwalay na mga input at mga output na hawakan ng Arduino. Ang pagkaantala na dulot ng Arduino ay maliit, ngunit ang isang nakaranas na manlalaro ay makapagsasabi agad at mabibigo sa kawalan ng kontrol.

Pangalawa, ang mga sirkito ay nagtatampok ng dalawang magkakaibang mga coil (isang mababang kapangyarihan at isang mataas na kapangyarihan na likid) na isang end-of-stroke switch na nagpapalit kapag ang flipper ay mataas. Ang paglipat na ito ay nagsisilbi sa mahalagang pag-andar na nagpapahintulot sa mataas na kuryente upang sunugin ang una upang magbigay ng isang malakas na stroke, ngunit lumilipat sa mababang kapangyarihan likawin (~ 130 ohms kumpara sa 4 ohms) na nagbibigay ng sapat na lakas upang panatilihin ang flipper na gaganapin 'up' bilang hangga't ang pindutan ay inilagay, ngunit hindi gumuhit kaya magkano ang kasalukuyang bilang paso ang solenoyde. Sa larawan sa ibaba, ang EOS switch ay karaniwang sarado, ngunit ang aming pagpupulong ay may isang normal na bukas na paglipat at nangangailangan ng isa pang transistor upang i-convert iyon sa isang normal na closed signal.

Sa ikatlo, habang gusto namin ang pindutan upang kontrolin ang mga flippers nang direkta, kasama rin namin ang isang 'master' switch signal mula sa Arduino na maaaring i-activate o i-deactivate ang flippers depende kung ang bola ay nasa pag-play. Nagreresulta ito sa paggamit ng ikatlong transistor sa circuit.

Katulad nito, ang slingshot board ay may sariling komplikasyon. Habang gumagamit lamang ito ng isang transistor, ito, tulad ng mga flippers, ay dapat kontrolado ng direkta sa mga switch switch (na kung saan namin wired sa serye) para sa isang mabilis na tugon pati na rin hindi nangangailangan ng karagdagang output pin sa Arduino. Sa kasamaang palad, kung ang gate ng transistor ay konektado sa direktang paglipat, ang sagot ay masyadong mabilis upang magkaroon ng higit sa isang bahagyang-kapansin-pansing sipa dahil ang switch ay hindi mananatiling sarado para sa napakatagal. Upang magkaroon ng isang mas malakas na sipa (ibig sabihin na ang tirador solenoid "sundin"), nagdagdag kami ng isang diode at isang malaking risistor sa gate ng transistors, na nagbibigay-daan para sa isang mabilis na tugon ngunit lumilikha ng isang malaking oras pare-pareho ng boltahe pagkabulok sa node na kaya na ang gate ay nananatiling malapit sa 5V (at ang transistor sa) sapat na mahaba upang magkaroon ng isang kapansin-pansin na sipa, kahit na pagkatapos ng slingshot switch ay muling binuksan. Ang isa pang komplikasyon ay ang pagpapadala ng input na ito sa Arduino, dahil ang input board (tulad ng makikita natin sa ibang pagkakataon) ay nangangailangan mababa inputs, at ang slingshot ay nagpapatakbo kapag ang isang input ay hunhon mataas. Upang malutas ang problemang ito, isinama namin ang isang ikatlong transistor na magsasara kapag ang alinman sa input napupunta mataas, at sa gayon ay maaaring tratuhin tulad ng anumang iba pang mga input lumipat sa playfield

Ang driver board (talagang dalawang board) ay binubuo ng dalawang driver ng flipper, dalawang driver ng tirador, at apat na single-switch driver para sa natitirang solenoids. Kaysa sa panghinang nang direkta, ginamit namin ang 0.1 "molex connectors upang ilakip ang board na ito sa solenoids, power supply, at switch, upang ang anumang pag-aayos o pagsasaayos ay maaaring mas madaling gawin.

Ginamit namin ang mga solderable breadboards para sa aming mga disenyo, ngunit ang pagdidisenyo ng mga aktwal na PCB na may mga function na ito ay magkakaroon ng isang mas malinis na resulta at makakatulong sa pagaanin ang gulo ng mga wires na ang mga machine na hindi maaaring hindi magkaroon.

Mga Materyales:

  • 12 100V-rated power transistors
  • 10-50 uF capacitors (nonpolar kung maaari)
  • 300, 5k, at 500k, at 3M resistors
  • 1 mas maliit na transistor para sa slingshot switch
  • Maraming 1N4004 diodes
  • Prototype solderable breadboards (o, kahit na mas mahusay, disenyo ng iyong sariling mga PCBs)

Hakbang 8: Gumawa ng Sensor Input Board

Dahil kami ay gumagamit lamang ng isang Arduino, kami ay limitado sa 20 mga digital na pin. Ang pinball machine, gayunpaman, ay may ilang dosenang natatanging mga input switch, hindi upang banggitin ang mga output na kailangan para sa mga ilaw, tunog, at pagmamaneho solenoids. Upang mapaliit ang problemang ito, ginawa namin ang palagay na walang dalawang input ang ma-trigger nang sabay-sabay (sa gayo'y nililimitahan namin ang paggamit lamang ng 1 bola). Ang palagay na ito ay nagbibigay-daan sa amin na 'i-encode' ang mga input ng switch sa pamamagitan ng pag-convert sa mga ito sa isang 5-bit na rehistro ng binary na may ika-6 na pin na nag-trigger ng isang pag-abala tuwing may wastong input switch ang natanggap. Upang magawa ito, gumamit kami ng isang cascade ng 8-to-3 encoder upang makagawa ng 24-to-5 encoder gamit ang encoder na ito sa layout na ipinapakita sa mga larawan sa itaas.

Ito ang isa sa pinakamahalagang mga pagpapaunlad ng proyektong ito, dahil pinapayagan tayong dagdagan ang pagiging kumplikado ng aming makina mula sa aming unang plano ng pagkakaroon lamang ng flippers, bumpers, at isa o dalawang mga target.

Ang isang pangalawang plano ng board ay ginamit upang ilagay ang bawat isa sa 24 lalaki Molex connectors; ang bawat switch sa playfield ay magkakaroon ng isang babae connector sa dulo ng isang mahabang wire na plugs sa board na ito. Ang drop targets ay isang natatanging kaso na maaaring hawakan sa maraming paraan. Ang ginawa namin ay ang wire sa bawat drop target na lumipat sa serye, upang ang input ay sarado kapag sila ay lahat down at nagbibigay-daan sa Arduino upang magpadala ng isang senyas sa solenoyde upang sunog ang drop target back up.

Mga Materyales:

  • 4 3-estado-na-priority output 8-to-3 encoder

Hakbang 9: Gumawa ng Lupon ng Liwanag / tunog / puntos sa Peripheral Board

Upang i-save ang mga pin sa katulad na paraan sa encoder, ginamit namin ang isang 3-to-8 decoder upang makontrol ang aming mga ilaw. Nagbigay ito sa amin ng limitasyon na hindi kami maaaring magaan ng higit sa isang liwanag sa anumang oras, ngunit iyon ay isang katanggap-tanggap na tradeoff upang palayain ang mga pin para sa iba pang mga elemento. Kasama rin namin ang ika-4 na "master" light output na makokontrol ang lahat ng mga ilaw nang sabay-sabay. Halimbawa, ito ay maaaring magpahintulot sa amin na i-flash ang lahat ng mga ilaw ilang beses kapag ang laro ay unang naka-on (na nagbibigay ng isang malakas na indikasyon na ang isang bagay ay aktwal na nangyayari sa player kapag siya ay pinindot ang start button, kung saan ay kung hindi man mahirap na walang ball labangan o makukulay na display).

Ang itaas na eskematiko ay nagtatampok ng transistor circuit na katulad ng mga driver, ngunit mas simple ang mas mababang voltages sa play (6.3V para sa mga ilaw) na kailangan ang mas maliit na mga transistors at hindi nangangailangan ng mas maraming circuitry ng proteksyon. Ginamit namin ang isang diode O gate para sa mga transistors upang paghiwalayin ang master switch signal at ang indibidwal na signal ng ilaw. Ito ay nagbibigay-daan sa amin upang magamit lamang ang isang transistor sa bawat ilaw sa halip na dalawa, at pinipigilan ang Arduino at ang encoder chips mula sa 'pakikipaglaban' sa pinagmulan o lababo ang kasalukuyang.

Habang ginagamit namin ang mga kasalukuyang LED na ilaw para sa bawat isa sa mga ilaw sa playfield (ang mga nasa ilalim ng pagsingit), ang pindutan ng pagsisimula at ang 3 mga bumper na pop bawat ay may mga maliwanag na bombilya na gumuhit ng tungkol sa 250mA bawat isa. Ang mga transistors ay na-rate para sa 530mA ng tuloy-tuloy na kasalukuyang, upang hindi lumampas na ito, ginawa namin sigurado na lamang ng dalawang incandescent kailanman nagpunta sa pamamagitan ng isang solong transistor.

Naglagay din kami ng passive 5V piezo buzzer na nagpapahintulot sa amin upang i-play ang hindi pa ganap na tunog sa board na ito.

Maaaring i-program ang mga custom na ilaw at sound sequence gamit ang mga function light_sequence + sound_sequence o sa pamamagitan ng interface ng Pinball Language.

  • 10 lighting transistors (ginamit namin ang mga ito)
  • 5V Piezo buzzer

Hakbang 10: Hakbang 11: Idisenyo ang Mga Panuntunan sa Iyong Mga Laro

Mayroong dalawang mga pagpipilian para sa pagtukoy sa mga panuntunan ng pinball game. Maaari kang makipag-ugnay sa laro gamit ang napapasadyang dokumento ng pinball, o mga panuntunan ng laro ng hard code. Ang mga tuntunin ng laro na hard-code ay nagbibigay-daan para sa higit na kakayahang umangkop, kabilang ang mga sunud-sunod na shot at nag-time na bonus, habang ginagamit ang pinball document / parser system ay nagbibigay-daan para sa mas nababaluktot, ngunit mas simple na mga panuntunan. Magsisimula kami sa interface para sa na-configure na laro, at pagkatapos ay i-detalye ang ilan sa mga tuntunin ng laro na hard-code upang mapili mo kung aling configuration ang gusto mo para sa iyong sariling laro ng pinball.

Tingnan ang repository ng github dito para sa mga file na isinangguni sa proyektong ito.

Bahagi 1. Idisenyo ang iyong mga panuntunan sa laro

Ang default na makina ng estado para sa laro ng pinball ay ibinigay sa larawan.

Ito ay ibinigay sa default starter code. Mayroon ka na ngayong dalawang pagpipilian - alinman upang isulat ang iyong sariling code para sa makina, o gamitin ang tinukoy na pag-format para sa laro ng pinball.

Hakbang 11: Pagpipilian 1. Isulat ang Iyong Sariling Pinball.txt File

Sa dokumento ng pinball-text, makakahanap ka ng tatlong seksyon: isa para sa mga bahagi, isa para sa "estado" at isa para sa "mga aksyon". Dito, maaari mong tukuyin ang mga tukoy na pagkilos para sa bawat sangkap. Para sa karamihan ng mga sangkap, malamang na gusto mong manatili sa isang makina ng isang estado na estado. Halimbawa, kung ang bawat bumper ay pindutin, ang manlalaro ay dapat na puntos ng higit pang mga puntos, mag-light up ng ramp light, at puntos ang 100 puntos, at pagkatapos ay ang diagram ng estado ay magiging hitsura ng Figure 1 sa katumbas na code. Kung nais mo ang isang sangkap upang magkaroon ng maramihang estado ng estado machine, sabihin, gusto mo ng isang ilaw upang i-on kapag ang isang bumper ay pindutin, at pagkatapos ay i-off kapag ito ay pindutin muli, ang iyong estado diagram / kaukulang mga estado ay magiging hitsura Figure 2 Ang aming partikular na makina ay nagbibigay ng mga istruktura, tulad ng sa Figure 3, kung saan maaari mong tukuyin ang mga panuntunan. Ang kanilang mga pangalan, mga panloob na coded macros (na hindi mo kailangang mag-alala tungkol sa ngunit maaaring maging kapaki-pakinabang kung magpasya kang siyasatin ang source code), at matakpan ang mga code ay ibinigay sa Figure 3. Ang Larawan 4 ay nagkokonekta sa mga pangalang ito sa mga bahagi ng playfield.

Mga tip para sa pagsusulat ng iyong pinball game
Dahil ang mga bahagi ng laro ay nakatali sa mga partikular na interrupts (ipinahiwatig ng field na "pos") na tinutukoy ng hardware, hindi namin inirerekomenda ang pagbabago ng seksiyong "bahagi" sa labas ng larangan ng "mga estado." reserbang estado 0 at aksyon 0 para sa mga bahagi na walang mga epekto sa pagmamarka, tulad ng start button at switch ng laro. Ang hitsura ng aming code ay nakalarawan sa Figure 5.

Hakbang 12: Tukuyin ang mga Banayad at Mga Pagkakasunud-sunod ng Tunog

Ang walong ilaw sa board ay kinokontrol na gamit ang isang 3-to-8 decoder + isang master switch, tulad ng naunang inilarawan. Ang mga tiyak na ilaw ay maaaring lit sa pamamagitan ng pagsulat ng mga pin na nakaayon sa binary na naka-encode na bersyon ng bahagi ng code na mataas. Ang function ng helper light_sequence ay nagbibigay ng isang interface para sa gumagamit na tukuyin ang liwanag na gusto niyang sindihan, at ang mga macro ay tinukoy sa dokumento ng state_machine_headers.h. Ang isang table na muli ay ibinigay para sa iyong kaginhawahan sa programming. Tulad ng para sa Sound, ginamit namin ang library ng tono ng Arduino sa mga short sequence ng programa para sa iba't ibang mga kaganapan sa laro. Mayroon kaming apat na pre-made na mga tunog na maaari mong piliin mula sa (gamit ang executeSound (<# ng tunog na gusto mo>)). Ang mga tunog ay tumutugma sa isang mahaba, masayang pagkakasunud-sunod, maikling masayang pagkakasunud-sunod, maikling malungkot na pagkakasunud-sunod, at mahabang malungkot na pagkakasunud-sunod. Kung nais mong mag-program ng iyong sariling mga tunog, maaari kang tumingin dito para sa kung paano gawin ito (pitch.h ay kasama sa repository): http://www.arduino.cc/en/Reference/Tone

Hakbang 13: Mag-load ng Pinball.txt File sa Arduino

Sa sandaling tapos ka na magsulat ng FSM, narito kung paano i-load ang iyong laro papunta sa iyong Arduino (Ipinagpapalagay na ginagamit mo ang Mac). Ang lahat ng mga file ay matatagpuan sa github repository.

  1. Unzip ang arduino-serial zip file.
  2. Mag-navigate sa arduino-serial file, at i-save ang iyong config file ng laro dito. Ang "Pinball.txt" ay nagbibigay ng sample na template na magagamit mo.
  3. Buksan ang Arduino. Mag-upload ng sketch ng pinball game.
  4. Buksan ang terminal, at i-type ang sumusunod na mga utos:
    • gumawa
    • ./arduino-serial -b 9600 -p pinball.txt
  5. Ngayon, dapat naming pagbabasa at pag-iimbak ng data sa panloob na memorya ng Arduino. Kung mayroong anumang mga malformed na linya, ang Arduino ay mag-print ng isang mensahe ng error at maaari mong piliin na muling ipadala ang file.
  6. Kapag tapos ka na sa pag-upload ng code gamit ang terminal, hal. kapag ang Arduino ay naka-print ng isang "tapos" na mensahe, maaari mong buksan ang Serial Arduino upang basahin ang mga mensahe mula sa laro na isinasagawa.

Mga karaniwang problema / pag-optimize para sa laro ng software

  1. Hard-coded vs. configurable games - Napansin namin na ang mga nagambala sa hard-code na laro ay tumugon nang mas tumpak kaysa sa isa sa napapasadyang laro. Ito ay maaaring dahil ang napapasadyang laro ay may maraming pangkalahatang-layunin na mga pag-andar na nangangailangan ng mga kondisyong pahayag. Pinabagal nito ang nabasa na bilis ng loop, na naging sanhi sa amin na makaligtaan ng ilang mga nagambala at apektado ang pangkalahatang bilis ng pagpapatakbo ng laro. Upang malutas ang problemang ito, binawasan namin ang ilan sa mga customizability ng laro ng config file upang makamit ang katanggap-tanggap na mga oras ng pagtugon sa circuit. Una naming pinag-isipan ang RAM ng kapasidad ng Arduino at kung magkano ang mga panuntunan ng laro na maaari itong iimbak, ngunit ito ay naging mas mababa ng isang problema kaysa sa orihinal na inaasahan at ito ang bilis ng loop na ang mas malaking limitasyon na kadahilanan.
  2. Ang debouncing interrupts - dahil sa mga mabilis na pagkilos ng laro ng pinball, nagkaroon kami ng ilang mga kaso na kung saan ang matakpan ang pin ay nakakatanggap ng maraming mga interrupts para sa pinball na humagupit lamang ng isang bahagi ng laro. Bukod pa rito, dahil ang mga interrupts ay natanggap bago ang oras ng encoder upang maayos na basahin ang lahat ng mga input, ang mga interrupts ay maiugnay sa mga hindi tamang mga bahagi. Upang malutas ang problemang ito, gumamit kami ng isang panlabas na debouncing library na tumugon sa 1ms matapos ang unang pag-abala ay natanggap, na nagbibigay ng oras para sa mga pin ng encoder upang maabot ang mataas bago mababasa ng laro ang input code.
  3. Display - Kahit na ang serial display ay nagbibigay-daan para sa laro upang mag-print ng mga detalyadong mensahe, mahirap para sa isang manlalaro na basahin ang mga mensahe ng output kapag nagpe-play ng mabilis na laro ng pinball. Ito rin ay mahirap gamitin para sa manlalaro na maglaro ng laro gamit ang computer na nakalakip. Sa hinaharap inaasahan naming ipatupad ang isang digital display na maaaring ipakita ang iskor at iba pang impormasyon ng laro sa isang display na madaling makita ng gumagamit, tulad ng isang LED matrix o isang 7-segment na display.

Hakbang 14: Pagpipilian 2: Payo sa Hard-coding ng Iyong Sariling Laro

Una - basahin sa pamamagitan ng dokumento ng state_machine_headers.h upang maunawaan ang mga istruktura ng pandaigdigang data na nagtatabi ng impormasyon tungkol sa makina ng estado. Dapat mong simulan ang mga kaayusan ng data na ito sa iyong mga panuntunan sa laro sa loob ng Arduino IDE bago i-load sa code ng Arduino. Ang mga sumusunod na istraktura ng data ay ibinigay:

Mga structs ng Laro upang humawak ng impormasyon tungkol sa bawat bahagi Estado upang humawak ng impormasyon tungkol sa mga transisyon ng estado Mga aksyon upang humawak ng impormasyon tungkol sa mga aksyon upang maisagawa Ang mga istrukturang ito ay may populasyon ng nabasa na file. Tukuyin ang mga input / output para sa lahat ng pin. Makakagambala pin ay dapat na tinukoy bilang INPUT Pins.

Sa loob ng pangunahing loop, suriin ang bawat cycle upang makita kung ang isang pag-abala ay na-fired para sa bawat bahagi ng laro. Tukuyin ang bawat bahagi ng laro sa loob ng isang pahayag ng switch.

Ang function ng Helper executeState ang kasalukuyang estado ng bahagi, at gumaganap ng mga aksyon batay sa in-naka-code na impormasyon.

Ang hard-code na unang bersyon ng code ng laro ay matatagpuan sa file na "simplepinballgame.ino"

Hakbang 15: Ikonekta ang Lahat

Upang ma-interface ang Arduino sa aming mga board ng pagmamaneho, gumamit kami ng protoshield upang mas madaling ma-access ang mga pin sa iba pang mga board. Mayroong maraming mga wire, kaya maging maingat! Sundin ang layout na ibinigay sa Electronic Pins at Layout upang ikonekta ang iyong mga outlet sa Arduino sa kanilang kaukulang mga pin. Ang mga connectors ng Molex ay dapat makatulong sa isang pulutong sa pag-uunawa kung saan ang mga konektor ay nakakonekta sa kung saan.

Narito ang isang maikling FAQ sa pag-troubleshoot kung sakaling tumakbo ka sa alinman sa mga karaniwang problema na aming ginawa:

Ang likas na katangian ng encoder ng input ay mayroong 6 input pins sa Arduino: 5 na kung saan magkasama ipakita kung aling input ang na-trigger, at isang ika-6 na pin na napupunta mataas kung ang anumang nag-iisang input ay na-trigger. Nakikita lamang ng code na nakasulat kapag ang ika-anim na pin ay nagbabago mula sa mababa hanggang mataas. Kaya kung ang Arduino ay hindi tumatanggap ng anumang mga input, at sigurado ka na ang lahat o hindi bababa sa karamihan ng mga switch gumagana, suriin upang makita kung ang anumang switch ay natigil sarado. Halimbawa, kung ang lahat ng drop target ay bumaba at hindi na-fired back up, iyon ay isang closed switch at pinipigilan ang Arduino mula sa pagtanggap ng anumang iba pang mga input.

Tiyaking siguraduhin na ang kulay ng nuwes na hawak ang tagabaril sa lugar ay ganap na tightened, o na ang tagabaril block ay hindi maluwag. Bilang kahalili, langis ang baril ng tagabaril.

Maaaring ito ay isang mekanikal / disenyo ng problema kung ang mga switch ay inilagay sa masyadong malawak na isang lane, na nagpapahintulot sa bola upang pumunta 'sa paligid' sa kanila. Kung hindi man, maaari itong maging resulta ng masyadong mahabang pagkaantala sa isang lugar sa code. Kung, halimbawa, ikaw ay abala sa pag-play ng isang tono gamit ang library ng tono at pagkaantala () na pahayag, ang Arduino ay hindi makakakuha ng mga input sa panahong iyon. Ang isang workaround na ginamit namin ay naglalaro lamang ng mga tunog para sa ramp shot, standup target, start button, at end-of-game switch, tulad ng alam namin kung gaano karaming oras ang makukuha namin pagkatapos ng mga pag-shot bago ang isang bagong input ay malamang na ma-trigger .

Tinatanggap na hindi kami nagtalaga ng mga tukoy na header para sa mga tukoy na ilaw o mga tukoy na solenoid, ibig sabihin na ang unang pagkakataon na i-plug mo ang lahat ng bagay sa (o kasunod na mga oras kung hindi mo ito ipi-label), ang mga output pin (o output light encoding) ay konektado sa arbitrary order. Gumamit ng pagsubok-at-error upang malutas kung aling mga pin tumutugma sa kung aling output at ayusin ang code nang naaayon. Para sa mga ilaw at mga bumper, ito ay hindi masama - ngunit tiyak na lagyan ng label ang lahat ng mga input at isulat kung saan ay kung saan, bilang na proseso ay maaaring magkaroon ng hanggang sa 24 mga halaga at aabutin ng kaunti na upang i-calibrate.

Ang encoder ay may kapus-palad na ari-arian ng minsan pulsing ang tagapagpahiwatig pin mataas bago ang 5 encoder pin ganap na malutas ang kanilang mga halaga. Para sa amin, alam namin na nangyari ito nang ang bilang ng paglipat na pinindot ay isa-isa lamang, ngunit maaaring ipakita ito nang naiiba para sa iyo. Nalutas namin ang problemang ito sa pamamagitan ng paggamit ng isang debouncing library upang lumikha ng isang maliit na bit ng pagkaantala sa pagitan ng kapag napansin namin na ang isang inilipat ay nagbago at kapag nag-record namin kung aling lumipat ito ay. Gayunpaman, maingat na ang pag-antala (higit sa 15-20mS) ay maaaring magdulot sa iyo ng lubos na pag-miss ng mga input.

Paumanhin, ngunit hindi namin talaga nakilala ang isang mahusay na solusyon para sa isang ito pa.