Arxiu de la categoria: Joan Quintana

Tirador de molla i Tilt per a Virtual Pinball (video)

En un anterior article ja vam explicar la construcció del tirador de molla analògic. Ara he volgut acabar-ho d’explicar i fer un petit video.

A continuació es detalla les connexions dels botons, el potenciòmetro (A0) i l’aceleròmetre (SDA, SCL) a l’Arduino Pro Mini:

    Arduino Pro Micro 
    (plunger, acceleròmetre, i 6 botons)

\t\t\t*\t*
\t\t\t*\t* GND
\t\t\t*\t*
\t\t\t*\t* VCC
\t\t    SDA\t*\t*
 \t\t    SCL\t*\t*
\t  4: Left. BUT0\t*\t*
         5: Right. BUT1\t*\t* A0 (Pot)
          6: Exit. BUT2\t*\t*
         7: Start. BUT3\t*\t*
          8: Coin. BUT4\t*\t*
         9: Enter. BUT5\t*\t*

Finalment, s’ha de carregar el firmware a l’Arduino, que incorpora la lllibrería Joystick. L’aceleròmetre, que detecta la força lateral exercida sobre el moble, a partir d’un llindar de força simula el disparo d’un botó joystick. Totes les accions dels botons del joystick HDI s’associen a pressions del teclat gràcies al software JoyToKey, que corre en background. L’associació de tecles és la típica de Visual Pinball (l’emulador). Per exemple, COIN està associat a la tecla 5, i la funció Tilt/nudge dispara lrs teclrs Z/X.

Tenia por que un potenciòmetre lliscant es deteriorés amb el temps, i hagués preferit utilitzar algun sensor no mecànic. He de dir, però, que de moment, el funcionament és molt estable.

He construït dues màquines en paral·lel, una basada en el tema del Jacks Open, i l’altre basada en el tema de Avengers. En una de les màquines el funcionament no va molt fi, i he de veure encara quina és la causa: l’ordinador, la RAM, la tarja de video o el plunger.

Mini virtual pinball basat en Los Vengadores de Marvel

Finalment he acabat el pinball dels Avengers. He estat fent dos pinballs en paral·lel, amb les mateixes dimensions, i amb plunger analògic.

He trigat bastant de temps de repassar les 200 taules per tal d’adaptar-les a plunger i tilt analògics. Vam publicar aquest article explicant la solució final de la construcció del tirador de molla, basat en Arduino.

Elementary Mechanics Using Python

Ja he acabat el llibre Elementary Mechanics Using Python, i en el fitxer adjunt tenim tot el codi Python i els gràfics generats. Ha estat una bona repassada d’un curs de Mecànica general: forces, energia, treball, sòlid rígid. He escollit un dels gràfics a l’atzar, tots els exercicis han estat interessants de programar. En el fitxer exercicis.txt s’ha documentat la feina feta i s’ha relacionat tots els exercicis realitzats. De totes maneres, la manera com s’ha anomentat els scripts i els gràfics resultants fan que s’ubiquin ràpidament en l’apartat del llibre corresponent.

Els scripts s’han fet amb python2, tot i que fàcilment es poden portar a python3. En el llibre s’ha utilitzat la llibreria pylab que representa que simplifica la feina de realitzar els gràfics i utilitzar els mòduls matemàtics. Tanmateix, nosaltres hem preferit utilitzar les llibreries numpy i matplotlib directament, és una aproximació més general.

Plunger analògic per a virtual pinball

Estic fent un parell de pinballs, i aquesta vegada sí que vull incloure un plunger analògic. Això és bastanta feina, doncs significa construir un tirador de molla fiable, i configurar/repassar les 200 taules amb les que treballo. A més del tirador analògic també inclouré la funció de TILT, és a dir, quan doni un cop lateral al moble vull que la trajectòria de la bola canvïi, i així s’evita que la bola caigui en el drain.

Faré servir un Arduino Pro Micro, que em farà de joystick/gamepad a través del port USB. Per tal de què el sistema operatiu el reconegui com a HID (Human Interface Device), el firmware de l’Arduino ha d’incloure la llibreria joystick. L’arduino té entrades digitals/analògiques i sortides digitals per tal de connectar els sensors i els botons necessaris. De fet, amb l’ús de l’arduino ja no caldrà utilitzar la interfície I-PAC que es fa servir en aquest tipus de projectes.

En la foto es pot veure el segon prototip de plunger analògic, que ja és funcional. Com a sensor faré servir finalment un potenciòmetre linial lliscant. De moment la molla que faig servir és una mica forta. N’estic buscant una que sigui més fluixa, però que m’asseguri el retorn del potenciòmetre a la seva posició inicial. Ja sé que utilitzar un potenciòmetre (element mecànic) no és la millor solució, però de moment m’està funcionant sense problemes. Altres opcions a considerar com a sensors són un rotary encoder (que també és mecànic), i dos solucions que no són mecàniques (llarga vida) però que són més difícils i cares i que he vist per Internet: utilitzar un CCD linear sensor array (TAOS TSL 1410R); i utilitzar un sensor de distància LVDT (és car, però un se’l pot construir).

Com a conclusió, donaré una oportunitat al potenciòmetre linial lliscant, i el seu valor es llegirà en una entrada analògica de l’Arduino.

Per a la funció tilt necessito un acceleròmetre. Faré servir el MPU-6050 GY-521, que és un acceleròmetre de tres eixos i giroscopi (només necessito llegir l’acceleració en un eix). Fa servir el bus I2C per connectar-se a l’Arduino (entrades digitals). A més, la resta de botons (en principi 4 botons frontals i els dos botons laterals dels flippers) també utilitzaran entrades digitals de l’Arduino.

El que porta més feina és repassar les 200 taules i modificar-les per tal de què el plunger analògic funcioni correctament. Hi ha diverses maneres d’implementar el tirador, unes taules més fàcils que d’altres. Com sempre, moltes gràciess a la comunitat de Visual Pinball i a la gent que ha importat totes les taules per tal de què tothom les pugui disfrutar.

Ara ja tinc la feina quasi acabada, però fins que no tingui acabat el moble i munti el plunger en la seva posició final no podré fer les proves definitives ni la versió final del firmware. Ara ja falta poquet. Quan hagi acabat el projecte faré un video.

Si a algú li interessa la meva solució final, que em contacti i en parlem.

Referències:

Jules Verne: De la Terre à la Lune

Amb aquest post enceto una sèrie d’escrits i comentaris a lectures amb els que vull homenatjar, des d’ara fins el juliol del 2019, el 50è aniversari de la missió Apollo XI i l’arribada de l’home a la Lluna. Comencem per un clàssic, una lectura que crec que és interessant per afrontar aquesta efemèride.

El 1865 Juli Verne va publicar De la Terra a la Lluna. En aquest llibre. el president del Gun-Club, el senyor Barbicane, proposa d’enviar un projectil a la Lluna. I per resoldre dubtes, es posa en contacte amb l’Observatori de Cambridge (Massachussets), i els planteja una sèrie de preguntes. La primera: Est-il possible d’envoyer un projectile dans la Lune?.

En el capítol IV tenim la resposta de Cambridge:

Oui, il est possible d'envoyer un projectile dans la Lune, si l'on parvient à animer ce projectile d'une vitesse initiale de douze mille yards par seconde. 

Anem a repassar d’on surt aquest valor.

Per calcular la velocitat d’escapament, la velocitat que hem d’imprimir al coet serà aquella que venci tot el camp gravitatori de la Terra, que anirà disminuint a mesura que el projectil s’enfili cap amunt. L’energia gravitatòria o potencial que hem de vèncer és la diferència entre l’energia potencial a la superfície de la Terra, menys l’energia potencial fora del camp gravitatori (a l’infinit) que valdrà 0. I aquesta energia potencial que hem de vèncer ha de ser igual que l’energia cinètica que hem d’imprimir (conservació de l’energia). Veure la imatge amb les fórmules.

Per tant, la velocitat d’escapament no depèn de la massa del projectil, i tampoc depèn de la direcció de llançament, com hem vist fent un raonament purament energètic.

La velocitat d’escapament de la Terra és doncs ve = sqrt(2 x 9,81 x 6371000) = 11180 m/s = 11,2Km/s = 40320 Km/h. I com que una yarda són 1 yd = 0.9144 m, ve = 12226 yd/s, que és precisament la velocitat que es comenta en el llibre.

M’ha semblat que aquest senzill càlcul és una bona manera de començar aquest homenatge als homes que van trepitjar la Lluna el 20 de juliol de 1968, i als científics i enginyers que ho van fer possible.

Enllaços:

Open Data BCN: World Data Viz Challenge 2018

Participo en l’edició d’enguany del World Data Viz Challenge 2018 Barcelona-Kobe. Entre el catàleg de dades obertes que publica l’Ajuntament de Barcelona, he triat les dades de l’atur en el període 2011-2018. La meva aplicació de visualització la pots veure a http://aturbcn.joanillo.org/. Es presenten les dades desglossades per barris i per districtes, i es pot veure l’evolució de l’atur a través dels anys, o a través dels mesos.

He utiltizat la API de Open Street Map, que és una novetat per mi doncs sempre havia utilitzat l’API de Google Maps. Les dades originals estaven en format xls, i s’han introduït a una base de dades MySQL per tal de poder explotar les dades directament amb SQL.

La idea de participar va venir pel fet que, a l’institut, volem participar en una altra convocatòria: Repte Barcelona Dades Obertes, segona edició 2019 (http://opendata-ajuntament.barcelona.cat/ca/repte-barcelona-dades-obertes). S’ha de veure com, dins de l’assignatura de Javascript (Cicle Formatiu de Desenvolupament d’Aplicacions Web), podem fer alguna visualització per presentar-la a aquesta convocatòria.

Referències:

Close Encounters pinball: aprofundint en el gameplay

CLOSE ENCOUNTERS OF THE THIRD KIND
—————————————————————-

INSTRUCTIONS
3 BALLS PER PLAYER

HITTING A-B-C ROLLOVERS INCREASES INDICATED ROTO TARGET VALUE.
COMPLETING A-B-C ROLLOVERS LIGHTS “EXTRA BALL” AND “SPECIAL FEATURES”.

STAR ROTO TARGET VALUE IS 500 POINTS. HITTING STAR ROTO TARGET SCORES INDICATED VALUE AND INCREASES BONUS MULTIPLIER.

BLACK DROP TARGETS SCORE 500 POINTS. COMPLETING DROP TARGETS INCREASES BONUS MULTIPLIER, ADDS 5 BONUSES, LIGHTS “EXTRABALL” AND “SPECIAL” FEATURES, SCORES 5000 POINTS AND RESETS TARGETS.

BONUS IS SCORED AND FEATURES RESET AFTER EACH BALL.

A TILT DOES NOT DISQUALIFY A PLAYER.

MATCHING LAST TWO NUMBERS IN SCORE TO NUMBER THAT APPEAR ON BACKGLASS AFTER GAME IS OVER SCORES ONE REPLAY.

424SS B-18583-1

M’agrada més construir les màquines que jugar-hi. De fet tinc poca paciència per jugar. Ja que he fet una nova màquina dedicada al pinball de Encuentros en la Tercera Fase (Close Encounters of the Third Kind, Gottlieb 1978), dedicaré uns minuts a analitzar-la i entendre bé les regles del joc. Les Instructions Card dels pinball sempre són molt resumides (veure foto).

Aquesta és una màquina amb electrònica d’estat sòlid (SS), la qual cosa significa que totes les regles del joc estan implementades en un xip que porta carregat el software/instruccions de la taula. Aquest xip és una memòria on està emmagatzemat tot el codi, és a dir, una ROM. La gràcia del Visual Pinball i d’altres emuladors de pinball és que són capaços de llegir la informació de la ROM (fitxer que tenim guardat en la carpeta roms/, i fer funcionar la màquina per software. Si se sap manipular la rom (els bytes) es pot modificar algun aspecte de la taula, com per exemple modificar el High Score per defecte, com hem fet en alguna taula. De fet, el mòdul que s’encarrega de l’emulació és el VPinMAME, projecte que comparteixen diferents emuladors com el Visual Pinball o el Future Pinball.

HITTING A-B-C ROLLOVERS INCREASES INDICATED ROTO TARGET VALUE. Els rollover (A, B, C) són els tres passadissos que hi ha dalt de tot. Quan la bola passa pel passadís es tanca un interruptor. Com a conseqüència, el ROTO (rotatory) dóna voltes. El ROTO té targets que s’han d’intentar tocar.
COMPLETING A-B-C ROLLOVERS LIGHTS “EXTRA BALL” AND “SPECIAL FEATURES”. Si completem els tres rollovers (sempre amb la mateixa bola) s’activa (s’il·lumina When Lit) la possibilitat de fer Extra Ball i Special Features (però encara no tenim Extra Ball, senzillament tenim la possibilitat d’aconseguir-ho. Com s’aconsegueix? Si ens fixem en el playfield, podem veure Star scores extra ball. Per tant, quan en el target esquerra del ROTO tenim una estrella, si fem target sobre aquesta estrella, aconseguirem la Extra Ball. De la mateixa manera, Special Features ho aconseguirem quan tenim Star en el target de la dreta (i fem diana).

STAR ROTO TARGET VALUE IS 500 POINTS. HITTING STAR ROTO TARGET SCORES INDICATED VALUE AND INCREASES BONUS MULTIPLIER. Quan fem diana sobre una estrella tenim 500 punts. Fer diana sobre un ROTO target incrementa els punts indicats, i s’activa el multiplicador 10x (s’il·lumina), que vol dir que la propera podem aconseguir 3000, 4000 o 5000 punts.

BONUS IS SCORED AND FEATURES RESET AFTER EACH BALL. Tenim diferents targets que ens poden donar bonus. Aquests targets poden estar desactivats, o activats quan la làmpara associada està il·luminada. Quan perdem la bola s’incrementa el Bonus acumulat, i es tornen a resetejar totes les característiques. Aproximadament, el bonus és proporcional al temps que hagi durat la bola.

A TILT DOES NOT DISQUALIFY A PLAYER. En aquesta taula fer Tilt no està penalitzat. El Tilt es detecta quan movem la taula per tal de desviar la trajectòria i que no caigui en el forat. En moltes taules fer Tilt és sinònim de fer trampes, i això significa normalment perdre la bola i desactivar temporalment els flippers.

MATCHING LAST TWO NUMBERS IN SCORE TO NUMBER THAT APPEAR ON BACKGLASS AFTER GAME IS OVER SCORES ONE REPLAY. Quan s’acaba la partida, encara tenim una oportunitat. Si els dos últims dígits del nostre marcador coincideixen amb el High Score (?), aleshores sembla ser que se’ns regala una partida.

A grans trets, aquestes són les regles d’aquesta màquina. La majoria dels jugadors (com jo mateix) prou feines en tenim de què la bola no caigui en el forat. Però si es vol fer una bona puntuació, s’han de conèixer aquestes regles i tenir una estratègia. Hi ha gent que es dedica a col·leccionar i registrar High Scores dels pinballs. Per exemple, com es pot veure en aquest enllaç, per al Close Encounters hi ha registrada una puntuació de 691.000, amb 5 boles. La possibilitat de jugar amb 3 ó 5 boles depèn d’una opció en el software, i en les màquines reals això es configura amb un interruptor DIP que està documentat en el full d’instruccions que té l’operador (en el saló recreatiu o en el bar).

Com sempre, el més divertit d’aquestes taules és la possibilitat de jugar amb varis jugadors (fins a 4 jugadors, que es van tornant).

En les referències he ficat un video de l’escalada al Devil’s Tower, que em sembla espectacular. Pensava que l’escalada deuria estar prohibida, però no, es pot escalar si es demana el permís, i no es pot deixar material durant l’escalada.

I recorda, com en el playfield s’indica: We are not alone, i en qualsevol moment podem rebre una visita…

Referències: