Vivent

Com construir una màquina de pinball Arduino: 15 passos (amb imatges)

Apto o no apto para construir (pendiente de una recta)

Apto o no apto para construir (pendiente de una recta)

Taula de continguts:

Anonim

Si ets com jo, t'agrada el pinball, però no tens els diners per comprar ni un espai per adaptar-te a un joc de mida completa. Per què no construir el vostre propi?

Aquí passem per crear el vostre propi joc de pinball personalitzat amb un Arduino. El joc té llums, sons, característiques de pinball reals, incloent-hi els para-xocs, els objectius i els tiradors, i fins i tot té una rampa.

Aquest projecte requereix una gran quantitat i varietat de material, de manera que consulteu cada secció posterior per obtenir els nous materials necessaris per completar cada pas. Com a principi, és molt útil que tingueu accés a un tallador làser o un router CNC, a més d’un conjunt d'eines bàsiques d'electrònica i maquinari.

Nota de l'autor: Aquesta instructable ha estat publicada recentment i no tots els fitxers de disseny i programari s'han organitzat completament. Si teniu previst utilitzar els nostres fitxers, deixeu un comentari perquè puguem assegurar-nos que tot està en el seu estat més actualitzat.

Subministraments:

Pas 1: Disseny

A la fotografia que publiquem, es troba el disseny del camp de joc i el suport de Solidworks. El camp de joc és purament personalitzat, però les línies de tir (com la corba del tir de bucle posterior) es van dissenyar a partir de màquines de pinball reals per garantir un joc suau. Una dificultat aquí és que, a causa de la seva complexitat, les peces de pinball reals (per exemple, els paranys i els objectius de caiguda) no es van modelar, però encara cal tenir cura per assegurar-se que tot s’adapti per sota del camp de joc. per sota que a dalt.

Els fitxers s'inclouen al dipòsit, així que no dubteu a ajustar el disseny per adaptar-vos a la vostra fantasia.

Alguns aspectes destacats del disseny:

El camp de joc és de 42 "per 20.25" polzades, exactament de la mida dels jocs d'estil Bally dels anys vuitanta. Està feta de fusta contraxapada de ½ ", que és estàndard i no s'ha de canviar ja que els conjunts de pines de pinball estan dissenyats per a aquest gruix. Les parets aquí consisteixen en una capa de ½ "sobre una capa de ¼". En el primer prototip, només es van incloure parets d'1,5 ", però van resultar ser massa curtes i podrien aparèixer el pinball a l'aire en trets especialment ferms. En segon lloc, aquest disseny permet una línia de tir lleugerament elevada (a la foto de dalt) que permet que la bola caigui lleugerament al camp de joc, però no torni a caure.

La rampa està dissenyada amb suports acrílics i impresos en 3d. Es creua el camp de joc de manera que doni al jugador l'oportunitat de colpejar la rampa diverses vegades seguides des de la aleta esquerra. Com a tal, l’acrílic clar no s’utilitza per impedir la vista del jugador sobre la taula:

Finalment, el camp de joc està recolzat per parets curtes a les quatre cantonades, que mantenen el camp de joc en el pendent estàndard de 6,5 graus. La paret posterior té un "prestatge" inferior que es pot treure i s'utilitza per muntar l'electrònica. Això resulta en un joc amb un camp de joc de mida completa, però és molt més compacte que un joc típic i es pot portar a mà per una persona. Com que el camp de joc és de mida estàndard, aquests suports es poden eliminar si voleu situar el camp de joc en un gabinet de pinball estàndard. Per fer-ho, és possible que vulgueu considerar l’addició d’un conjunt de retorn de bola, que no s’inclou en aquest disseny.

Pas 2: Tallar la fusta

Per tallar les capes del camp de joc, vam utilitzar un tallador de làser. No obstant això, és difícil de trobar un tallador de làser prou potent per tallar fusta de ½ ", requereix fusta contraxapada d'alta qualitat i pot arriscar-se a iniciar un incendi si no esteu curosament. Els camps de joc típics es tallen amb un enrutador CNC, mentre que algunes de les cantonades poden no ser tan nítides, encara haureu d’obtenir resultats dignes. Per simplificar, els passos que es descriuen a continuació suposen que teniu accés a la mateixa talladora de làser que vam fer. Hi ha persones que han tingut resultats dignes utilitzant només un trepant i un trencaclosques, però heu de tenir molta cura i molta paciència si feu aquesta ruta.

El primer pas per crear el camp de joc és convertir el disseny en fitxers .DXF que es puguin alimentar en un tallador làser. Per exemple, el fitxer playfield .DXF es mostra a continuació. Els fitxers utilitzats en aquest projecte estan inclosos al nostre dipòsit.

Utilitzant el tallador làser, tallem formes per al camp de joc, la capa intermèdia de ¼ "(vam utilitzar el duró, un material de prototipat més barat de fusta, però també funcionarà la fusta de ¼"), la capa superior ½ "i la ½" suports.

Materials necessaris:

  • Fusta contraxapada de ½ "per al camp de joc i la base
  • ¼ "contraxapat o duró per a la capa de paret intermèdia
  • Cargols de fusta de ½ ", ¾" i 1 "
  • Accés a un router CNC o tallador làser

Pas 3: Muntar el camp de joc

Comenceu per fixar les peces des de la capa de ¼ "de duró a la fusta contraxapada en les seves respectives ubicacions. Utilitzeu un trepant manual, perfecteu primer els forats pilot utilitzant un bit de 3/32 "i, a continuació, utilitzeu cargols de fusta de capçal pla per connectar la capa de ¼" al camp de joc. És important fer-ho des de dalt cap avall (és a dir, de manera que el cargol passa primer per la capa de ¼ ", després cap a la base de ½", ja que les parts de ¼ "són petites i primes i es doblegaran de la capa base si s’han perforat en sentit contrari. També és important assegurar-se que els capçals dels cargols estiguin al ras de la capa de ¼ "i no proporcionin cap gruix addicional.

Una nota final: aquests cargols poden anar gairebé a qualsevol lloc, ja que aquesta capa serà majoritàriament invisible per al jugador un cop el camp de joc s'hagi reunit. Però hi ha una excepció: no col·loqueu els cargols al carril tirador. (Inicialment vam fer aquest error).

A continuació, enganxeu les parets laterals i utilitzeu els cargols de fusta més llargs per tal de penetrar-los des de la part superior del tauler, de manera que els caps del cargol estiguin al ras de la part superior. Un cop fet això, fixeu les peces de la capa de ½ "a la part superior del dur i torneu-les a cargolar com abans, excepte en aquesta ocasió, cargolant-se a la part inferior amb cargols de 1". Atès que la capa superior té un gruix de ½ ", és menys probable per doblar-vos des de la base, i cargolar-los a la part inferior asseguren que els cargols quedin invisibles per al reproductor.

Finalment, enganxeu el bloc tirador (a la imatge de dalt, amb el tirador) carregant-lo de la part inferior amb 2 cargols, de manera que el bloc no es pot girar fàcilment. El bloc de tirador té una ranura en forma de "U" que s'adapta al tirador, que es pot instal·lar estrenyent la femella a l'altre costat. També podeu utilitzar el lubricant per reduir la fricció entre la barra de tir i la pilota.

El disseny pot necessitar alguns ajustaments en aquest punt. Per exemple, en el nostre disseny, el tall per als objectius de caiguda era massa estret i calia ampliar amb un dremel. Si utilitzeu els nostres fitxers com a més d’una referència, proveu de posar-vos en contacte amb els autors que puguin proporcionar fitxers actualitzats. També és recomanable arruïnar qualsevol àrea rugosa, on es trobin dues peces de fusta.

En la seva major part, conclou el treball de la fusta i podem passar a posar components.

Materials necessaris:

  • Cargols de fusta de capçal pla de 3/4 "
  • Muntatge de tiradors
  • Cargols de fusta més llargs (~ 1,5 ")
  • Trepant manual amb 3/32 "de bit
  • Oli lubricant
  • Cargols de fusta de capçal pla de 1 "
  • Un fitxer i / o dremel i paper de vidre

Pas 4: afegiu els components

En aquest punt de la fase de disseny, haureu de tenir una idea general de l’orientació necessària per assegurar-vos que tots els components s’adapten realment sota el camp de joc. (Si utilitzeu el nostre disseny, consulteu la imatge de la part inferior de la taula anterior).

Primer, instal·leu els objectius de fixació, l’objectiu de col·locació i els esglaons, fent cargols de fusta de ½ ”a través dels forats de muntatge de l’assemblatge. Feu el mateix amb els topalls pop, però assegureu-vos de retirar primer el tap, o bé el muntatge no s'ajusti al forat.

En segon lloc, instal·leu els conjunts de flipper. Assegureu-vos que girin en la direcció correcta. La solenoide, quan es dispara, pastilla el pin a la bobina, i això hauria de fer girar l'eix de manera que la aleta girés cap al camp de joc. Un cop instal·lats els conjunts de les aletes, connecteu els ratpenats de la tapa de l'altre costat.Utilitzeu una clau metàl·lica a la rosca de fixació de l’assemblea per col·locar-los en lloc, i feu servir el moll que hauria de venir amb l’assemblea per assegurar-vos que les aletes s’enfonsin de nou quan no s’ha disparat.

De la mateixa manera, instal·leu tots els interruptors de recanvi mitjançant els cargols d’1 / 2 ", assegurant que es puguin pressionar fàcilment de la part superior i torneu a posar-los al seu lloc. Mitjançant els perns de 6 a 32, també connecteu l’interruptor de porta a l’esquerra superior de el nostre disseny. Aquest interruptor de porta també serveix com a obertura d'un sol sentit, que permet que els trets del costat dret i del tirador caiguin dins dels topalls. Aquest és un aspecte de disseny que dóna lloc a trets que entren a la rampa dreta i al bucle dret diferents llocs i afegeix més varietat a l’obra.

Per instal·lar els llums, primer poseu les plaques de plàstic als forats. Aquests inserts tenen una longitud d’uns ¼ "de gruix. Si utilitzeu un router CNC, la manera adequada de muntar-los és tallar una capa de ¼ "una mica més gran que el forat de la inserció. En el nostre disseny, ja que el tallador làser no pot tallar capes parcials, tenim suports impresos en 3D que suporten els inserts. Utilitzeu l’epoxi per mantenir les plaques inserides al lloc (primer apliqueu les vores) i la paperera de vidre per assegurar-vos que els inserts estiguin al nivell del camp de joc.

A continuació, inseriu els LED en els seus suports inserint-los i girant-los al seu lloc. A continuació, cargoleu els suports en lloc de tal manera que aquests LED se situin directament sota de cada inserció. Els suports lluminosos enllaçats a continuació són bastant prims i, en realitat, prou prims perquè els cargols de 1/2 "puguin perforar la part superior de la taula. Utilitzeu un parell de rentadores perquè això no passi.

Els missatges del camp de joc s’instal·len amb els perns de 6 a 32. Un cop instal·lat, emboliqueu els cautxús del kit de goma que hi ha al voltant per fer para-xocs passius. Aquests donen més a la taula "vida" que si el disseny fos completament contraplacat. Utilitzant els mateixos perns, fixeu les guies de carril just per sobre de les aletes. També enganxeu el canvi al final del joc.

Tingueu en compte que la majoria de jocs disposen d’un conjunt de devolució de pilota dedicat com el que hi ha aquí. Això no es va incloure en aquest disseny, però, principalment a causa del cost. El compromís, per descomptat, és que ara el jugador és responsable de posar la pilota de nou al carril tirador una vegada que es drena. Tenim un tirador, però, que s’adjunta al bloc de trets tal i com es mostra a la foto anterior.

Els botons de flipper i el botó d’arrencada s’instal·len col·locant-los en els forats i bloquejant-los en lloc de palnuts. Els interruptors de les fulles del botó de les aletes són cargolats a l'interior dels botons mitjançant 6-32 cargols i tanquen un circuit de commutació quan es pressionen els botons.

En aquest punt, el camp de joc (des de dalt) s'assembla a una taula de pinball gairebé completa! Només falta la rampa. No dubteu a felicitar-vos entre els vostres amics sobre el que sembla increïble i, de manera privada, espantar-vos quant de cablejat i soldadura hi ha de fer.

Materials necessaris (la majoria es van comprar a PinballLife.com i es poden trobar simplement buscant els termes següents).

  • 1 muntatge d’orientació de 3 bancs
  • Muntatge de para-xocs pop 3x
  • 1 conjunt de flipper esquerre
  • 1 conjunt de la aleta dreta
  • 2 ratpenats
  • 2 botons de flipper
  • 2 botons palnuts
  • 1 botó d'inici
  • 1 anell de goma conjunt
  • ~ 30 missatges amb estrelles de camp de joc, (1 1/16 "usats)
  • Guies de 2 carrils
  • 2 polsadors de fulles de botó
  • 2 assemblees de tiradors
  • 1 objectiu normal
  • 10 commutadors de bolcada
  • 8 llums LED # 44 a l'estil de baioneta
  • 8 suports de llum a la baioneta (sòcol de baioneta base en miniatura amb sòcol de muntatge llarg)
  • 5 1-1 / 2 "x 13/16" inserció de fletxa blava
  • Inserció de bala transparent de 3 "x 3/4"
  • 6-32 cargols (2,5 ", així com algunes mides més petites), femelles i volanderes
  • Interruptor de porta ampla de 2 polzades (com el que aquí es pot trobar, això pot ser difícil de trobar, vam desfer-nos d'una rampa antiga de pinball comprada a ebay)

Pas 5: Construeix la rampa

Per fer la rampa, utilitzeu ¼ "acrílic per a les peces base i ⅛" acrílic per a les parets laterals. L’acrílic transparent donarà un aspecte agradable i net mentre no bloqueja la vista del camp de joc per al jugador. L’ús d’acrílic de colors també pot ser una opció atractiva, però no es recomana utilitzar un material completament opac com la fusta.

Els suports de les rampes estan impresos en 3D utilitzant un makerbot i cargolats al camp de joc i el plàstic utilitzant els mateixos 6-32 cargols.

Les peces acríliques aquí estan enganxades amb ciment acrílic, que és un dissolvent que fonamentalment es fon i uneix el plàstic. Assegureu-vos d’utilitzar una petita quantitat i farà un enllaç molt fort, gairebé invisible.

A l'entrada de la rampa, hem inclòs una solapa de rampa com la de la imatge de dalt. Es tracta d'una peça de metall fina que dóna una transició molt suau del camp de joc a la placa de la rampa, en comptes de tenir el pinball ha de "saltar" fins al ¼ "de gruix del plàstic. Podeu comprar un d’aquests barats des d’una botiga d’especialitats de pinball o d’Ebay (o vam fer), o simplement fer-ne un de propi de xapa metàl·lica. En els jocs comercials, aquests es remenen de manera que els forrellats no s'enganxin i es posin en el camí de la pilota. Com que no teníem els equips adequats per fer-ho, ens hem assegurat d'usar cargols plans i xamfrar correctament un forat del plàstic i del metall per aconseguir el mateix efecte.

Hi ha un interruptor de porta estret connectat als suports 3D a la cantonada dreta dreta de la rampa, on es gira per passar pel camp de joc. Aquest commutador és el que registra quan s'ha colpejat un tir de rampa amb èxit.

Materials necessaris:

  • 1/4 "acrílic clar (12x24" full)
  • 1/2 "de fulla acrílica transparent (12x24")
  • Ciment acrílic
  • Accés a una impressora 3D i un tallador làser
  • Solapa de rampa
  • Pestells de capçal pla 6-32 per a la solapa de rampa
  • Broca de càmera o eina manual
  • Interruptor de porta estreta

Pas 6: planifiqueu el bloc de dispositius electrònics i el disseny de pin

(Actualització de l’autor: amb un ús extens, el 48V pot desfer-se d’un dels transistors en aquesta configuració. Recomanaria l’ús d’un 35V o més baix amb aquests aparells electrònics o utilitzant un recurs de tauler de control més professional com els que s’indiquen aquí: http: // pinballmakers .com / wiki / index.php / Construction)

Aquesta màquina té 3 nivells de tensió: 48 V per a l'energia solenoide, 6,3 V per als LED, i 5 V per a la lògica i el so. Per proporcionar aquests nivells de tensió, hem utilitzat una font d'alimentació CNC per als adaptadors DC 48V i prestatgeries per proporcionar el 6.3V i el 5V. (Podria ser possible utilitzar només el 6.3V, ja que l'Arduino regula la seva tensió de subministrament fins al seu pin de sortida de 5V, però hem mantingut aquestes fonts d'alimentació aïllades). 48 V és un volt d'alta tensió i, tot i que no pot ser perjudicial per a les parts, pot provocar una sobreescalfament ràpid dels components si hi ha problemes amb el circuit. Utilitzeu un fusible lent de 5 A, tant a l’entrada com a la sortida de l’alimentació principal de 48 V, per evitar que s’iniciï un incendi si algun dels transistors és curt.

A l’escut d’Arduino, vam connectar cables amb connectors Molex femenins dissenyats que coincidien amb els requisits d’entrada i sortida de cadascuna de les tres sub-taules: la placa del controlador de solenoide, la targeta de controladors de llum i so i el tauler d’entrada.

En el nostre disseny, vam tenir les següents assignacions de pin. Això, per descomptat, és bastant flexible. El pin 0 es va deixar obert. (Instructables no permet fer llistes de números començant per 0.)

  1. Obre
  2. Obre
  3. Interruptor / entrada Pin actiu
  4. Punt d’entrada codificat
  5. Punt d’entrada codificat
  6. Punt d’entrada codificat
  7. Punt d’entrada codificat
  8. Punt d’entrada codificat
  9. Sortida de paraigua dreta
  10. Sortida de para-xocs mitjana
  11. Sortida del paraigua de l'esquerra
  12. Deixa anar la sortida objectiu
  13. Sortida de l'interruptor principal de Flipper
  14. Sortida del interruptor de llum principal
  15. Pin de sortida de llum
  16. Pin de sortida de llum
  17. Pin de sortida de llum
  18. Pin de sortida de so
  19. Obre

Tot i que no s'han implementat en el nostre disseny, els pins SCL i SDA es poden utilitzar per a una pantalla i els pins restants es poden utilitzar per controlar addicionalment, com ara afegir funcions (un retorn de bola) o més combinacions de llum.

Materials necessaris:

  • Font d'alimentació CNC de 48 V (com aquesta)
  • Fonts d'alimentació de 6,3 V i 5 V (com aquesta)
  • 5A fusibles i fusibles de cop lent, i tubs termoretractables per a la connexió
  • Connectors Molex
  • Placa protectora de prototipus Arduino
  • Un munt de filferro de 22AWG, soldadura i paciència

Pas 7: Feu els taulers de controladors

El tauler de controladors és responsable de girar les entrades de l'Arduino, els botons de les aletes, i la fona canvia a disparar les bobines. Atès que els senyals es troben a un nivell de 5 V i els solenoides a 48 V, són necessaris MOSFETS de potència elevada per retransmetre el senyal. Els transistors utilitzats en aquest disseny són aquests MOSFET de 100V de Mouser.

Hi ha tres esquemes representats a dalt, que inclouen les aletes, les eslingues i els topalls / objectius. Cadascun té uns requeriments lleugerament diferents, però en tots ells, quan es dóna un senyal de 5V al transistor, s'obre un camí de corrent per al solenoide i es pugen 5-8 amperes a través de la bobina per donar un cop de peu potent. Això és molt corrent! De fet, aquesta quantitat de corrent cremarà els components si es manté el transistor més que un pols molt breu. Assegureu-vos que, en provar aquest circuit, utilitzeu programari o altres mètodes, no engegueu mai completament un solenoide durant més d’un segon.

La principal font de problemes en els circuits esmentats és la puntada inductiva. Els solenoides són inductors de gran abast i, com ja sabeu, el corrent dels inductors no pot canviar instantàniament. Com a tal, quan el transistor estigui apagat, encara hi ha un breu moment en què 5-8 amps circulen a través del solenoide i tot el que necessita el corrent en algun lloc. Si no se li dóna un camí a terra, aquesta corrent conduirà la tensió al transistor escorrer fins a centenars de volts i destruirà el transistor. A més, quan es destrueix el transistor, es retallen els tres terminals, el que fa que flueixi els amplificadors de corrent continu i pugui destruir el solenoide si no hi ha un fusible adequat instal·lat. (Vam destruir 8 transistors en el nostre descobriment i vam fer front a aquest problema, però, afortunadament, no hi havia solenoides, ja que sempre vam poder desconnectar manualment ràpidament).

Hi ha dos mètodes per evitar el xut inductiu: en primer lloc, cada conjunt de pinball hauria de venir amb un díode que assenyala des del transistor fins que el subministrament s’abocarà. Això, en teoria, hauria d’evitar que el transistor desaparegués mai per sobre de la tensió d’alimentació, ja que una vegada que això succeeix, el díode s'encendrà i drenarà tota l’energia restant de l’inductor. Desafortunadament, en realitat, aquests díodes no s'encenen prou ràpid per suprimir el xut inductiu per si sols.

Per resoldre el problema, hem afegit un circuit d’un "snubber" de RC. Aquest circuit compta amb un condensador en sèrie amb una resistència. El condensador absorbeix suficient corrent de l’inductor de manera que el díode tingui temps per activar-se i realitzar la seva funció. Per obtenir més informació sobre els circuits de descàrregues RC, consulteu aquí.

El circuit del controlador de solenoide de para-sols / gargots és bastant senzill i té només el transistor, el solenoide, el descontrol i una connexió per rebre l'entrada del Arduino. En aquest tauler i les juntes posteriors, assegureu-vos de connectar el solenoide de manera que el díode (que no es mostra en l'esquema) assenyali cap al costat d'alta tensió.

El circuit del controlador flipper és una mica més complicat per tres motius. En primer lloc, per tal de tenir una reacció ràpida entre la premsa de botons i l’acció del flipper, es recomana crear aquesta resposta directament en els circuits en lloc d’entrades i sortides separades que Arduino maneja. El retard causat per l'Arduino és petit, però un jugador amb experiència podrà dir immediatament i quedarà frustrat per la manca de control.

En segon lloc, les aletes disposen de dues bobines diferents (una bobina de baixa potència i una bobina de gran potència) un interruptor de final de carrera que s'activa quan la aleta és alta. Aquest interruptor serveix la funció important de permetre que la bobina d'alta potència dispari inicialment per donar un cop poderós, però canviar a la bobina de baixa potència (~ 130 ohms enfront de 4 ohms) que dóna suficient potència per mantenir el flipper mantingut "amunt" com Mentre es col·loqui el botó, però no dibuixa tanta corrent com per cremar el solenoide. A la imatge següent, el commutador EOS normalment està tancat, però el nostre muntatge tenia un interruptor normalment obert i necessitava un altre transistor per convertir-lo en un senyal normalment tancat.

En tercer lloc, mentre volíem que el botó controlés directament les aletes, també incloïem un senyal de commutació "mestre" de l'Arduino que podia activar o desactivar les aletes, depenent de si la pilota estava en joc. Això provoca l’ús del tercer transistor al circuit.

De la mateixa manera, la pissarra té les seves pròpies complicacions. Tot i que utilitza només un transistor, el mateix, com les aletes, hauria de ser controlat directament pels interruptors d’entrada (que vam connectar en sèrie) per obtenir una resposta ràpida, així com per no requerir agulles de sortida addicionals a l’Arduino. Desafortunadament, si la porta del transistor està connectada directament al commutador, la resposta és massa ràpida per tenir una puntada poc visible, ja que el commutador no es tanca durant molt de temps. Per tal de tenir una puntada més potent (és a dir, deixar passar la solenoide de tirador), hem afegit un díode i una resistència gran a la porta dels transistors, que permet una resposta ràpida però crea una gran constant de temps de desintegració de tensió. en aquest node, de manera que la porta romangui propera a 5 V (i el transistor estigui activat) el temps suficient per tenir una puntada notable, fins i tot després que es tornin a obrir els llistons. Una altra complicació és enviar l’entrada a l’arduino, ja que el tauler d’entrada (com veurem més endavant) ho requereix baix les entrades, i el tirador funciona quan una entrada es fa alta. Per resoldre aquest problema, hem inclòs un tercer transistor que es tanca quan qualsevol de les entrades és alta i, per tant, es pot tractar com qualsevol altre interruptor d’entrada al camp de joc.

El tauler de controladors (en realitat dos taulers) consta de dos controladors de flipper, dos controladors de tiradors i quatre controladors d’un sol interruptor per als solenoides restants. En lloc de soldar directament, vam utilitzar connectors molex de 0,1 "per connectar aquesta placa als solenoides, al subministrament d’alimentació i als interruptors, de manera que qualsevol reparació o ajustament es pogués fer més fàcilment.

Per als nostres dissenys vam utilitzar panells soldables, però el disseny de PCB reals amb aquestes funcions tindria un resultat molt més net i ajudarà a mitigar els embolics que inevitablement tenen aquestes màquines.

Materials:

  • 12 transistors de potència 100V
  • 10-50 uF condensadors (no polars si és possible)
  • Resistències de 300, 5k i 500k i 3M
  • 1 transistor més petit per al interruptor de tirador
  • Diversos díodes 1N4004
  • Prototips de protecció soldables (o, encara millor, dissenya els vostres propis PCB)

Pas 8: Feu el tauler d’entrada del sensor

Com que utilitzem només un Arduino, estem limitats a 20 agulles digitals. La màquina de pinball, però, té unes poques dotzenes d'entrades de commutadors úniques, per no parlar de les sortides necessàries per a llums, so i solenoides de conducció. Per pal·liar aquest problema, vam suposar que no s’iniciarien dues entrades alhora (limitant-nos a fer servir només 1 bola). Aquesta hipòtesi ens permet "codificar" les entrades del commutador convertint-les en un registre binari de 5 bits amb un sisè pin que ha activat una interrupció quan es va rebre una entrada de commutació vàlida. Per aconseguir-ho, hem utilitzat una cascada de codificadors de 8 a 3 per fer un codificador de 24 a 5 usant aquest codificador en el disseny que es mostra a les imatges anteriors.

Aquest va ser un dels esdeveniments més importants del projecte, ja que ens va permetre augmentar considerablement la complexitat de la nostra màquina des del nostre pla inicial de tenir només aletes, para-xocs i un o dos objectius.

Es va utilitzar un segon tauler prototip per col·locar cadascun dels 24 connectors Molex; cada interruptor del camp de joc tindria un connector femení al final d’un llarg cable que es connecta a aquest tauler. Els objectius de caiguda són un cas únic que es pot gestionar de diverses maneres. El que vam fer va ser encendre cada commutador de posició de sèrie en sèrie, de manera que l’entrada s’ha tancat quan estan baixades i permet a l’Arduino enviar un senyal al solenoide per disparar els objectius de descàrrega.

Materials:

  • 4 codificadors de prioritat de 3 a 3 sortides en estat

Pas 9: Feu la targeta perifèrica de llum / so / puntuació

Per guardar els pins de manera similar al codificador, vam utilitzar un descodificador de 3 a 8 per controlar les nostres llums. Això ens va proporcionar la limitació que no es podia encendre més d'una llum en qualsevol moment, però això era un compromís acceptable per alliberar els pins per a altres elements. També vam incloure una quarta sortida de llum "mestra" que podia controlar totes les llums alhora. Això, per exemple, ens podria permetre fer intermitents totes les llums diverses vegades quan el joc s’encengui per primera vegada (donant una indicació forta que realment succeeix alguna cosa amb el jugador quan pressiona el botó d’arrencada, cosa que altrament és difícil sense un abeurador de bola o colorit).

L’esquema anterior presenta un circuit de transistors similar als controladors, però molt més senzill, ja que les tensions inferiors en joc (6,3 V per a les llums) necessiten transistors més petits i no requereixen tants circuits de protecció. Per als transistors vam utilitzar un diode O porta per aïllar el senyal de commutació principal i el senyal de llum individual. Això ens permet utilitzar només un transistor per llum en comptes de dos, i impedeix que l'Arduino i el codificador puguin xocar des de "lluita" fins a la font d'origen o embornal.

Mentre que utilitzem LEDs de baixa intensitat per a cadascuna de les llums del camp de joc (els que hi ha a sota), el botó d’arrencada i els tres para-xocs pop vénen amb bombetes incandescents que arriben a uns 250mA cada un. Els transistors estan classificats per 530mA de corrent continu, de manera que per no superar això, ens vam assegurar que només dos incandescents van passar per un sol transistor.

També vam adjuntar un brunzidor passiu de 5 V que permet reproduir sons rudimentaris a aquest tauler.

Les seqüències de so i llum personalitzats es poden programar mitjançant funcions light_sequence + sound_sequence o mitjançant la interfície de Pinball Language.

  • 10 transistors d’il·luminació (els hem utilitzat)
  • Alarma piezoelèctrica 5V

Pas 10: Pas 11: Dissenya les regles del joc

Hi ha dues opcions per definir les regles del joc de pinball. Podeu interactuar amb el joc amb un document de pinball personalitzable o amb regles de joc de codi dur. Les regles de joc codificades durament permeten una major flexibilitat, incloent captures seqüencials i bonificacions temporitzades, mentre que utilitzant el sistema de documents / analitzador de pinball permet unes regles més flexibles, però més simples. Començarem amb la interfície del joc configurable i, a continuació, detallarem algunes de les regles de joc codificades perquè pugueu triar la configuració que voleu per al vostre propi joc de pinball.

Vegeu el repositori github aquí per als fitxers referenciats en aquest projecte.

Part 1. Dissenya les regles del joc

La màquina d'estat per defecte per a un joc de pinball es proporciona a la imatge.

Això es proporciona al codi inicial per defecte. Ara teniu dues opcions: bé escriviu el vostre propi codi per a la màquina o utilitzeu el format especificat per al joc de pinball.

Pas 11: Opció 1. Escriviu el vostre propi fitxer Pinball.txt

Al document de text de pinball trobareu tres seccions: una per a les peces, una per a "estats" i una per a "accions". Aquí podeu definir les accions específiques per a cada component. Per a la majoria de components, probablement voldreu quedar-vos amb una màquina d’estat d’un estat. Per exemple, si cada cop que toca un para-xocs, el jugador ha de puntuar 100 punts més, il·luminar una llum de rampa i anotar 100 punts, llavors el diagrama d'estats es veuria com a la figura 1 amb el codi corresponent. Si voleu que un component tingués una màquina d'estats múltiple, diguem, volíeu que s'encengués una llum quan es colpeixi un para-xocs i, a continuació, s'apagui quan es torna a colpejar, el diagrama de l'estat / estats corresponents semblarà a la figura 2 La nostra màquina en particular proporciona les estructures, com a la figura 3, per a la qual es poden definir regles. A la figura 3 es mostren els seus noms, les macros codificades internes (que no necessiteu preocupar-vos, però que poden ser útils si voleu investigar el codi font) i els codis d'interrupció. La figura 4 connecta aquests noms als components del camp de joc.

Consells per escriure el vostre joc de pinball
Com que els components del joc estan lligats a interrupcions específiques (indicades pel camp "pos"), que al seu torn estan definides pel maquinari, no recomanem modificar la secció "parts" massa fora del camp "estats". reservant l’estat 0 i l’acció 0 per a components que no tinguin efectes sobre el puntuació, com ara el botó d’inici i el commutador de joc. El nostre codi sembla tal com es mostra a la Figura 5.

Pas 12: Defineix les seqüències de llum i so

Les vuit llums del tauler es controlen mitjançant un descodificador de 3 a 8 + un interruptor principal, tal com es descriu anteriorment. Les llums específiques es poden encendre escrivint els pins corresponents a la versió codificada binària del codi de peça alt. La funció auxiliar de light_sequence proporciona una interfície perquè l'usuari especifiqui la llum que vol il·luminar i les macros es defineixen al document state_machine_headers.h. S'ha proporcionat una taula de nou per a la vostra comoditat de programació. Pel que fa a Sound, vam utilitzar la biblioteca de tons Arduino per programar seqüències de so curtes per a diversos esdeveniments de jocs. Tenim quatre sons prefabricats que podeu triar (utilitzeu executeSound (<# de so que voleu>)). Aquests sons corresponen a una seqüència llarga, alegre, a una seqüència alegre curta, a una seqüència trista curta i a una seqüència llarga i trista. Si voleu programar els vostres propis sons, podeu mirar aquí com es pot fer (pitch.h ha estat inclòs al repositori): http://www.arduino.cc/en/Reference/Tone

Pas 13: Carregueu el fitxer Pinball.txt a l'Arduino

Quan hàgiu acabat d'escriure el FSM, heu de carregar el vostre joc al vostre Arduino (suposa que utilitzeu Mac). Tots els fitxers es poden trobar al repositori github.

  1. Descomprimiu el fitxer zip arduino-serial.
  2. Navegueu fins al fitxer arduino-serial i deseu aquí el fitxer de configuració del joc. "Pinball.txt" proporciona una plantilla de mostra que podeu utilitzar.
  3. Obriu Arduino. Carregueu l’esquema del joc de pinball.
  4. Obriu el terminal i escriviu les ordres següents:
    • fer
    • ./arduino-serial -b 9600 -p pinball.txt
  5. Ara, hauríem de llegir i emmagatzemar dades a la memòria interna d’Arduino. Si hi ha línies malformades, Arduino imprimirà un missatge d’error i podeu triar tornar a enviar el fitxer.
  6. Quan hàgiu acabat de carregar el codi mitjançant el terminal, p. Ex. quan Arduino imprimeix un missatge "acabat", podeu obrir la sèrie Arduino per llegir els missatges del joc en curs.

Problemes comuns / optimitzacions per al joc de programari

  1. Jocs codificats i configurables - Vam observar que les interrupcions en el joc codificat dur van respondre molt més exactament que la del joc personalitzable. Això podria ser perquè el joc personalitzable tenia moltes funcions d’ús general que requerien declaracions condicionals. Això va frenar la velocitat de lectura del bucle, la qual cosa ens va fer perdre diverses interrupcions i va afectar la velocitat operativa general del joc. Per solucionar aquest problema, hem reduït part de la personalització del joc de fitxers de configuració per aconseguir temps de resposta acceptables al circuit. Al principi teníem inquietuds sobre la capacitat de memòria RAM del Arduino i la quantitat de regles de joc que podia emmagatzemar, però això va resultar ser un problema menys del que s'esperava originalment i era la velocitat del bucle el factor limitant més gran.
  2. Rebutjar les interrupcions: a causa de les accions ràpides del joc de pinball, vam tenir diversos casos durant els quals el pin d’interrupció estava rebent diverses interrupcions per al pinball que colpejava només un component de joc. A més, com que es van rebre aquestes interrupcions abans que el codificador tingués temps per llegir correctament totes les entrades, les interrupcions es vincularien a components incorrectes. Per resoldre aquest problema, hem utilitzat una biblioteca de resonància externa que respon a 1 ms després de rebre la primera interrupció, donant temps perquè els pines de codificador arribin al màxim abans que el joc llegeixi el codi d’entrada.
  3. Pantalla: tot i que la visualització en sèrie permet que el joc imprimeixi missatges detallats, és difícil per a un jugador llegir els missatges de sortida quan juga un joc de pinball ràpid. També és difícil que el jugador hagi de jugar amb un ordinador connectat. En el futur esperem implementar una pantalla digital que permeti visualitzar la informació de puntuació i altres jocs en una pantalla que l’usuari pugui veure fàcilment, com ara una matriu de LED o una pantalla de 7 segments.

Pas 14: Opció 2: assessorament sobre la codificació dura del vostre joc

Primer: llegiu el document state_machine_headers.h per entendre les estructures de dades globals que emmagatzemen informació sobre la màquina d'estat. Heu d’inicialitzar aquestes estructures de dades a les vostres regles de joc dins de l’IDE ​​Arduino abans de carregar-lo al codi Arduino. Es proporcionen les següents estructures de dades:

Estructures de joc per mantenir informació sobre cada part dels Estats per contenir informació sobre transicions d'estats. Accions per mantenir informació sobre les accions que s'han d'executar Aquestes estructures estan poblades pel fitxer de lectura. Definiu les entrades / sortides per a tots els pins. Els pins d’interrupció s’han de definir com a pins INPUT.

Dins del bucle principal, comproveu cada cicle per veure si s'ha activat una interrupció per a cada component del joc. Definiu cada component del joc dins d'una declaració de commutador.

La funció d'ajuda executeState actualitza l'estat actual de la part i realitza accions basades en la informació codificada.

La primera versió del codi de joc codificada es pot trobar al fitxer "simplepinballgame.ino"

Pas 15: Connectar tot

Per connectar l'Arduino amb els nostres taulers de controladors, vam utilitzar un proto-protector per accedir més fàcilment als pins dels altres taulers. Hi ha un munt de cables, així que aneu amb compte! Seguiu el disseny que es mostra a la secció Dispositius electrònics i disposar per connectar els vostres punts Arduino als seus pinsos corresponents. Els connectors Molex haurien d'ajudar molt en determinar els connectors als quals connectar.

A continuació, es presenten les preguntes més freqüents sobre resolució de problemes per si teniu algun problema comú:

La naturalesa del codificador d’entrada és que hi ha 6 agulles d’entrada al Arduino: 5 que mostren quina entrada s’activa i un sisè agulla que s’aconsegueix si s’activa una sola entrada. El codi escrit només detecta quan aquest sisè pin passa de baix a alt. Per tant, si l'Arduino no rep cap entrada, i esteu segur que tots o, almenys, la majoria dels interruptors funcionen, comproveu si hi ha algun interruptor tancat. Per exemple, si tots els objectius de baixada estan baixats i no s’han disparat, es tracta d’un interruptor tancat i evita que l’arduino rebi qualsevol altra entrada.

Comproveu que la femella que manté el tirador al seu lloc estigui ben fixada o que el bloc tirador no estigui solt. Alternativament, engreixi la vareta tiradora.

Això pot ser un problema de disseny mecànic si els interruptors es col·loquen en un carril massa ampli i permeten que la pilota vagi "al seu voltant". En cas contrari, pot ser el resultat d'un retard massa llarg en algun lloc del codi. Si, per exemple, esteu ocupats tocant un to mitjançant la biblioteca de tons i una declaració de retard (), l'Arduino no podrà recollir entrades durant aquest temps. Una solució que vam utilitzar va ser només reproduir sons per al canvi de rampa, destinació fixa, botó d’arrencada i canvi de final de joc, ja que sabíem quant de temps tindríem després d’aquests cops abans que s’hagués activat una nova entrada. .

És veritat que no hem assignat capçaleres específiques per a llums específiques ni solenoides específics, de manera que la primera vegada que connecteu tot (o vegades posteriors si no les etiqueteu d'alguna manera), els pins de sortida (o codificació de llum de sortida) es connecten a ordre arbitrari. Utilitzeu la prova i l’error per resoldre quins pins corresponen a la sortida i ajustar el codi en conseqüència. Per a les llums i els para-xocs, això no és tan dolent, però definitivament etiquetareu totes les entrades i escriviu, que és quin, ja que aquest procés pot tenir fins a 24 valors i trigarà una mica més a calibrar.

El codificador té la desafortunada propietat de polsar de vegades el pin indicador abans que els 5 pins codificadors hagin resolt completament els seus valors. Per a nosaltres, sabíem que això havia ocorregut quan el número de commutador que es pressionava era un per un, però pot aparèixer de manera diferent per a vostè. Hem solucionat aquest problema mitjançant la utilització d’una biblioteca de devolucions per crear un petit retard entre quan s’adona que s’ha canviat un commutador i quan registrem quina opció era. Tanmateix, amb molta cura, ja que una demora excessiva (més de 15-20 mS) pot provocar la manca total d’entrada.

Ho sentim, però encara no hem descobert una bona solució per a aquest.