12/07/2016

Omertà, Más tarde de media noche

Saludos,

hace tiempo que tenía intención de subir la entrada de hoy, pero entre pitos y flautas lo he ido dejando por otras entradas más relacionadas con el trabajo. Hoy os traigo otra aventura para Omerta, el poder de la mafia. En realidad, son tres aventuras o tres historias en una sola. También aprovecho para volver a felicitar a Pedro Nieto por su cumpleaños, los agentes de la prohibición nos hubieran detenido el sábado pasado...





En esta ocasión voy a mezclar géneros, así que, si hay algún purista en la sala, por favor no se lo tome a mal, si hay algo mal en mi cabeza es tratar de rizar el rizo o sorprender a mis jugadores. Si no quieres que te desvele nada sobre la partida sería bueno que dejaras de leer a partir de aquí, o estos tipos se van a enfadar...






La aventura está pensada para un Oneshot, cuando la dirigí dio para eso una noche divertida y con sorpresas, para algunos jugadores. La aventura está basada en la película “Nivel 13”, que si tus jugadores no la han visto se les quedaran los ojos como plato. Contiene tres tramas que suceden en la simulación de Creekville, evidentemente los pjs no saben nada. Dos de las tramas son misiones comunes para la vida de los Morettis en sus quehaceres mafiosos enfrentados a los Panepintos. La tercera y principal es la que involucra a los pjs a cuestionarse su realidad y tratar de resolver que es lo que ocurre en su mundo.




Se podría realizar en varias sesiones de juego haciendo que los perfiles de los usuarios fueran más sutiles actuando en el mundo virtual como otros personajes y tratando de encontrar aquello que buscan. O como me lo imagine de buenas a primeras, entrar en un juego con perfiles trucados y tratando al resto de personajes con el mayor de los desprecios. Pero eso se lo dejo a cada master.
Sin más rollos…   Más tarde de media noche.

11/29/2016

Sensores I2C con PIC12LF1840

Saludos,

después de varios días debatiéndome en que nuevo post publicar. Entre otras cosas tengo novedades que comentar, partidas que publicar y alguna que otra sorpresa.  Hoy voy a volver a trabajar con Pics.
Exactamente con el PIC12F1840, es un chip pequeño de 8 pines que tiene una particularidad, tiene I2C y es una buena oportunidad de emplear este chip para hacer sensores y actuadores “inteligentes” y poderlos colgar en el mismo bus.




En la imagen podemos ver la típica configuración de un bus i2c, el maestro es el que controla la comunicación, pregunta específicamente a cada esclavo y estos responden si es menester. Si has trabajado con Arduino los sensores i2c no te serán extraños, empleando la librería Wire(), tienes ejemplos para conectar sensores. Yo recomiendo emplear la librería I2C.h  es más eficiente y más sencilla de usar, o a mí me lo parece.


Utilizando el PIC12f1840 con el programa CCS compiler hay otros muchos editores como el MPLAB,  pero el CCS tiene una forma de iniciar los proyectos que te facilita mucho la vida a la hora de iniciar un proyecto con el PicWizard.


El primer ejemplo que voy a probar es el programa blink, controlar el encendido y apagado de un Led. Es algo totalmente innecesario para controlar un led no necesitamos utilizar i2c pero es un proyecto sencillo que nos permite probar el sistema.


El main.h tiene la siguiente configuración:

#include <12F1840.h>
#device adc=16

#FUSES NOWDT                    //No Watch Dog Timer
#FUSES INTRC_IO                 //Internal RC Osc, no CLKOUT
#FUSES WDT_SW                   //No Watch Dog Timer, enabled in Software
#FUSES NOMCLR                   //Master Clear pin used for I/O
#FUSES NOBROWNOUT               //No brownout reset
#FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O

#use delay(int=16000000)

#use i2c(Slave,Fast,sda=PIN_A2,scl=PIN_A1,address=0x50,force_hw, stream=I2CS)
#define DELAY 100

#use FIXED_IO( A_outputs=PIN_A4 )
int rcv_buf[0x10];
int cmd=0xFF;

la salida PIN_A4 es donde conectaremos el led
La dirección i2c de este proyecto será 0x50.
0X50 = 01010000b



7
6
5
4
3
2
1
0

A6
A5
A4
A3
A2
A1
A0
R/W
ACK
0
1
0
1
0
0
0
0
0
2
8



El bit de menor peso se emplea para indicar si la comunicación es de lectura o escritura. El ACK es el bit de reconocimiento que  envía el receptor 0 indica ACK, 1 indica NO ACK y 2 indica colisión.

Si habéis trabajado con sensores i2c, todos tienen registros donde podemos leer/escribir o solo leer o solo escribir. Cuando empecé a realizar este proyecto tenía en mente situar una variable en una dirección de memoria donde podría escribir y modificar el estado del led. Pues bien es más simple que esto.


#int_SSP
void  SSP_isr(void)
{
 int state, incoming;
 state = i2c_isr_state(I2CS);
    if(state < 0x80) //Maestro enviando.
    {
        incoming = i2c_read(I2CS);
        if (state == 1)  { cmd = incoming; }
        else if (state > 1) { rcv_buf[state-2]=incoming;}
    }
    else if (state>=0x80)   {  i2c_write(I2CS,input(PIN_A4)); } // Master leyendo.  
}



Ahí tenéis la interrupción según el valor de state, sabremos si hemos recibido una instrucción de lectura o de escritura. Si es menor de 128 (0x80) el máster quiere escribir en memoria, y lo guardaremos en el buffer de memoria que hemos definido, diferenciamos el primer byte como cmd, pues podemos emplearlo para diferenciar programas. Si no se quiere diferenciar, se podría hacer de la siguiente forma:


if(state < 0x80)    { rcv_buf[state-1]=i2c_read(I2CS); }



El programa principal seria.




void main()
{
   enable_interrupts(INT_SSP);  //Habilita la interrupcion de entrada i2c
   enable_interrupts(GLOBAL);
   setup_oscillator(OSC_16MHZ|OSC_TIMER1|OSC_PLL_OFF,0);

   //Example blinking LED program
   while(true)
   {
      if(rcv_buf[0]==0x01)
                       {
         output_high(PIN_A4);
      }else
     {
        output_low(PIN_A4);
      }
   }
}


Si el segundo byte que enviamos es un 1 el led se encenderá, si enviamos otra cosa se apagará. Con los pics siempre me ha funcionado una prueba antes de realizar el circuito y grabar el pic, simularlo en proteus para ello creamos un maestro con el mismo tipo de pic y le añadimos dos pulsadores.






Los pulsadores se emplean para enviar la secuencia de encendido y de apagado, no me he matado mucho a hacer programa del master. Las resistencias R2 y R3 son para poner a nivel alto el bus SDA y SCL.




                #include <main.h>
                #include "iic.c"
                int1 ctrl=false;
void main()
{
   setup_oscillator(OSC_16MHZ|OSC_TIMER1|OSC_PLL_OFF,0);
   while(TRUE)
   {
     if(input(PIN_A0))
     {
        if(!ctrl){  iic_write(0x50,0x00,0x1); }
        ctrl=true;
     }
     if(input(PIN_A3))
     {
        if(ctrl){ iic_write(0x50,0x00,0x00);}
        ctrl=false;
      }
    }
 }



Empleo una librería casera para enviar el i2c, porque con la que viene en le compilar CCS no envía el ACK y la comunicación no se completa. Al finalizar este articulo os dejare los enlaces de los programas.






Para hacer la prueba en realidad he empleado como Master a una arduino  el programa  envía la orden de encendido cada 500 ms y la orden de apagado cada 500ms.


Programa de  master arduino.
Programa  blink pic.
Programa master Pic.

El Pic12F1840 funciona tanto a 3,3V como a 5.0V, esto nos permite que se adapte a cualquier sistema i2c.

Como ya os dije el blink es un proyecto de prueba, ahora toca desarrollar nuevos sensores actuadores que nos permitan liberar carga al master y potencien nuestros proyectos. Por ejemplo, un Driver para motores I2C.





A la izquierda la placa con L272M para controlar dos motores, y a la derecha la misma placa con el PIC12F1840 para controlarlo por i2c.




Aquí os muestro la placa de motores y la led conectadas por i2c al arduino que hace de master.  El led con la dirección  0x50 alimentado a 5V y el driver con dirección  0x48 alimentado a 3,3V.

Esto tiene muchas posibilidades.


Anakleto


11/10/2016

MIT app inventor 2

Saludos,

como llevo un tiempo sin publicar, tras mi “asombrosa” aplicación, que, si ha recibido visitas, pero ningún comentario… No pasa nada, yo también lo hago. Hoy os voy a comentar una herramienta online para realizar aplicaciones Android, MIT App inventor 2. Se accede mediante tu cuenta google, el entorno de trabajo puede resultar sencillo per da muchas posibilidades, para realizar algún tipo de aplicaciones.

Como siempre comento cosas relacionas con la robótica o electrónica, hoy haremos una aplicación para el móvil que nos envié la información del Giroscopio del móvil a un arduino o similar. Existen otro tipo de aplicaciones que te permiten hacer esto mismo:


Durante muchos años he empleado el Amarino para emplear los sensores de móvil a mis circuitos, bien para controlarlos o bien para tener una batería de sensores.

Las dos primeras son pasivas no puedes crear botones solo puedes crear eventos que envíen información, acelerómetro, giroscopio, compas, reloj, etc. Y siempre conexión mediante bluetooth. OscDroid es parecida, pero te permite enviar la información mediante wifi.

Pero no es de esto que tenía intención hablar, esas aplicaciones existen son gratuitas y funcionan, al menos me funcionaban hasta la actualización de mi Android. Pero eso es otra historia. Con App inventor 2 , podremos hacer menús, visualizaciones y procesos, aparte de enviar la información por bluetooth o vía web. Esta última opción aun no la he explorado.

Para comenzar una nueva aplicación nos vamos Layout y seleccionamos el Grid que más se ajuste a nuestra necesidad, si queremos poner tres label, con sus valores numéricos para mostrar en la pantalla los valores del giroscopio, ponemos una matriz de 3x2. Estas matrices pueden estar dentro de otras, hay mucha información, videos y tutoriales. El aspecto final de la aplicación será algo parecido a esto.



Lo que veremos es los tres valores de aceleración de los tres ejes, el botón test es “start” de la aplicación, tras pulsarlo veremos los valores modificacarse. En Gyro visualizamos los tres valores de la forma que los enviaremos por el bluetooth.

El botón de “Connect” en realidad es un “Listpiker” que nos mostrara la lista de elementos bluetooth que tengamos emparejados, el símbolo raro bajo el botón de “Connect” es un “slider”, que nos permite modificar la frecuencia de envió. Debajo de la pantalla tenemos el GyroscopeSensor, Clock1, BluetoothClient1 y Clock2, esto es ir a sensores y arrastrar los que queramos, sobre la pantalla.


Para realizar la programación nos iremos a bloques y mediante una interface gráfica podremos programar nuestra aplicación.  A nuestra derecha tendremos las herramientas necesarias, para generar eventos, cálculos, lógica, etc. No me extenderé y directamente pasare a mostrar las imágenes de cómo hacer los módulos.

Configuración del Bluetooth





Configuración de Botones y variables globales


Configuración de giroscopio y definición del mensaje



Empleo dos relojes uno fijo a 100 milisegundos que captura el valor del sensor y el otro reloj para configurar el envió, podría emplearse el mismo clock.

Slider y clock2





Una vez tengamos nuestra aplicación le danos al “Build” en el menú principal, nos da dos opciones o bien nos proporciona un código QR para descargarnos la aplicación o bien te la exporta al ordenador en formato .apk. Para instalarla tendremos que tener habilitado instalar aplicaciones de origen desconocido.

Este es un ejemplo simple pero que se puede complicar más o añadir más funcionalidades, como para controlar un robot más complejo o un coche de radio control.

Aquí os dejo el enlace de la aplicación en formato .aia podéis abrirla en el Mit app inventor dándole a importar.

Anakleto.


10/24/2016

Generador de Personajes de Omertà

Saludos,


hoy tratare de ser breve y conciso.  Como mencionaba en el anterior post, estaba elaborando una aplicación para generar Pjs para Omertà,el poder de la mafia. El archivo son unos 33 megas, parece una locura, pero tener en cuenta que lleva tras pdf editables. 

Dentro del archivo comprimido hay que pulsar setup, y seguir la instalación de forma normal. El instalador crea una carpeta en él “../Escritorio/Omerta/pdfs” . Dentro de Omerta están los tres pdfs editables, uno para personajes femeninos otro para masculinos y el tercero al que me refiero como pnj, es el formato similar a los pjs que hemos ido publicando.


Nota: Los archivos pdfs no se pueden mover ni modificar el nombre, el programa los utiliza de plantilla para editar personaje.




Pantalla de inicial.



Al iniciar la aplicación ya nos planta un resultado aleatorio en profesión y valores de características, nombre, origen y mote. Todo se puede modificar a mano o pulsar Re Roll para obtener otro valor aleatorio.


Si marcáis personaje femenino, tendríamos a una Bombera en este ejemplo, la disposición de estas profesiones para ambos sexos es algo que tendríais que acordar con vuestro Don, pero quería dar la opción.


Sin Vinculación con la Mafia, pues eso, que el pj será Bombero simplemente, sin puntos de familia ni eventos y sin posibilidad de ir a la guerra. Esta opción es básicamente para desarrollar pnjs no vinculados con la familia.


Agentes de la Prohibición, desarrollaremos un personaje que se incluye en el nuevo manual de Wet City.


Nota: Al cambiar la profesión se modifican los años de la misma, que nos determina los puntos de experiencia por Profesión. Si lo modificáis manualmente los años se multiplican x5 y no x10 como el aleatorio. He tratado de respetar al máximo los manuales.





Reparto de puntos de profesión.


Si las habilidades tienen especializaciones como las académicas, profesiones o conducir aparecen los listados en la parte inferior. He puesto una lista, pero como es evidente no están todas las opciones, por eso se puede poner dejar en blanco y ya escribiréis que queréis hacer.




Puntos de Familia y Guerra.

Aquí aparte de repartir los puntos podemos modificar el número de años que hemos estado en la familia.


Guerra: Al pulsar el botón “I want you” nos aparecerá un mensaje que nos indicará los avances que hemos obtenido durante ese año cumpliendo el servicio. Y si hemos regresado en condiciones. Todas las consecuencias buenas y malas se aplican automáticamente. Si eres mujer y decides ir a la guerra hay sorpresa.


La siguiente pantalla de eventos de la mafia es informativa las tiradas se hacen automáticamente.
En la de habilidades tienes tantos puntos de desarrollo y puedes repartirlo hasta el máximo recordar basex5 o base x2.


Por último y ya termino.





Pantalla final.



Las características te aparecen aleatoriamente si es 1 o 2, te permite cambiarlas hasta que pulsas “AceptarCaracteristicas”, y los botones de Re-Roll desaparecen.


Formato de salida, se pueden marcar las que queráis y pulsáis Finalizar. Los archivos se guardan en la carpeta “../Escritorio/Omerta/pdf/” con el nombre del pj y la profesión.


Reiniciar: Tras terminar el pj si deseamos hacer otro, pulsar reiniciar, reinicia la aplicación.

Recomiendo ir desde el inicio hasta el final, el sistema te permite hacer cambios, modificar las características etc. Pero esta pensado para ir paso a paso e ir avanzando. 





Cualquier problema o sugerencia en los comentarios. 



Pd. Para una futura actualización estoy pensando que el personaje se grabe en una base de datos, ya se verá.


Anakleto.

10/14/2016

Omertà, generador de personaje

Saludos,

tras este parón de escribir o intentar escribir. He estado escribiendo… Pero en esta ocasión c#, para este año me he propuesto aprender o tener las bases de este código de programación que a bote pronto me parece sencillo. Bueno después de pelearme con el creo no lo es tanto, pero por ser algo más difícil no voy a tirar la toalla.


De tanto en tanto necesito comprarme un libro de programación o electrónica para obligarme a seguir aprendiendo o mirar que no se me olvida nada, me pille el libro “C# y Visual Studio 2015. Los fundamentos del lenguaje.” Y como dice su título explica los fundamentos y poco más, me decante por este por ser el único que estaba escrito en castellano. Si no tienes muchos conocimientos de la herramienta Visual Studio y de C# es un buen libro para introducirte.


Como con cualquier lenguaje de programación el primer escollo para aprenderlo es que hacer con él, si seguimos los ejemplos de los cursos o tutoriales sin más es algo muy aburrido. O a mí me lo parece. Así que había que buscarse un problema que solucionar para comenzar con un proyecto nuevo. Decidí algo que tenía en mente hace tiempo, un generador de Pjs para Omertà, el poder de la Mafia.




Primeros pasos en la aplicación



De buenas a primera seleccione “Windows Forms Application” con el estilo clásico de las aplicaciones de Windows, desconocía la variante “WPF Application”, que te permite customizar la interface gráfica de miles de formas, tanto que si no vas con cuidad puede quedar algo muy hortera. Pero a la que tengo que regresar en otra ocasión porque me parece muy interesante.



Una de las pruebas con WPF.



El motivo principal de crear esta aplicación, es la de crear pnjs de una forma sencilla y que cumplan los criterios de la creación de personajes, cuando desarrollo una historia, puedo imaginarme a los personajes que intervienen en ella, pero dejo sus características para el final y casi siempre reciclo los pnjs del manual o de otras aventuras, cambio algunos valores y a correr. Pero no me gusta, se pierde la esencia de los pnjs al ser tan iguales. Hacerlos a mano sería la mejor solución, pero requiere mucho tiempo y con Omertà, ciertamente requiere tiempo.



Un compañero de rol Alessandro le entretiene hacer Pjs de Omertà, las fichas de la familia Moretti y los Panepinto son obra suya, me debe unos cuantos desde hace tiempo. Pero el trabajo meticuloso requiere tiempo. entre los dos nos hemos propuesto hacer de Creekville una ciudad más detallada, con locales, pnjs e historia. Que sean herramientas para desarrollar las aventuras y enriquecer un poco más la experiencia. Pues creo que con esta herramienta puede ser más sencillo.







Los eventos en los años de la familia
Repartir los puntos de desarrollo



El funcionamiento es sencillo las tiradas las realiza la aplicación, y en Omertà hay muchas tiradas, tratando de respetar las reglas del manual, por ejemplo, para las características tiro 3D10 y sumo los dos más altos.  Igualmente, los valores pueden modificarse a mano en casi todos los apartados, profesión, características, genero, años de profesión, sino se quiere tener vinculación con la mafia, etc.






Aspecto actual de la interface.



Todo siguiendo las reglas del manual, si seleccionas los años de trabajo los puntos de experiencia que obtienes [nº de años x 5] y no [nº de años x 10]. De ahí pasamos a repartir esos puntos de experiencia profesional en una serie de habilidades. Tras ello pasamos a entrar en la familia y repartir los puntos a relación [10 puntos x año].





Puntos de Profesión.
Puntos de la familia.



Durante los años en la familia puede ser que el pj decida alistarse y ayudar a su país durante la gran guerra, únicamente para personajes masculinos, aunque estoy pensando añadir otras habilidades para los personajes femeninos, que sin duda participaron en la gran guerra por igual.





Eventos durante los años con la familia.
Puntos de desarrollo.



De ahí pasamos a los eventos por los años que se ha estado en la familia, se puede ganar dinero, reputación o acabar fichado por la policía, etc. Los eventos no pueden ser seleccionado por el usuario simplemente se muestran. Tras esto pasaremos a repartir puntos de desarrollo, que son [(Int+Des+Per)x8] con la limitación para las habilidades que no son de profesión, ni de Gánster  es de la base x2. Tras esto solo nos queda caracterizar a nuestro personaje con una o dos tiradas. Estas las podemos volver a lanzar si no nos conviene para el personaje.




Características personales y formato de salida
  

Al aceptar las características los botones de Re Roll desaparecen, el número de tiradas disponibles lo selecciona la aplicación pudiendo ser 1 o 2. Una vez tenemos todo esto hecho tenemos tres tipos de formato para exportar el personaje.

Pj Pdf: Rellena la plantilla que cree hace tiempo, una hoja de personaje doble.

Pnj Pdf: Rellena la plantilla semejante a las fichas de Alessandro.

Txt: exporta el pj p pnj en un archivo de texto.

Un ejemplo de txt:
Quique

Mote: Rótulas, Origen: Italiano, Profesión: Político 
Edad:29           Aspecto: Feo
Fue 19,Agi 14,Con 9,Int 15,Per 12,Com 11,Des 16,Pre 10
Coraje: 35,Reputacion: 1,Suerte: 1
Vida: 16,Bonificacion al Daño: +1D6
Los excelentísimo políticos , ganan 2000 $ anuales más mamandurrias varias. De sus anteriores trabajos :0
Habilidades
------------------------------------------------------
Callejeo 17, Charlatanería 53, Contabilidad 26, Correr 53,
Diplomacia 55, Discreción 28, Elocuencia 46, Esconderse 28,
Escuchar 42, Evitar 28, Idioma1 75, Idioma2 45,
Intuir 57, Juego 30, Leyes 68, Ocultar 32,
Percibir 45, Regateo 47, Seducción 20, Soborno 22,
Acorta 32,
------------------------------------------------------
Rasgos:
Superviviente. El PJ hará lo que sea por sobrevivir. Abandonará a sus compañeros y huirá si vienen mal dadas. -10% a Coraje, +25% a Correr.
De todas las cosas buenas y malas que te podían haber sucedido en tu vida, has salido muy normalito
------------------------------------------------------

¿Cómo está el proyecto? A nivel de código está casi todo hecho, seguramente mal o no de la mejor forma, pero funciona. Ahora bien, estoy teniendo problemas con las direcciones relativas, y es que una cosa es que en mi ordenador funcione muy bien pero no en el resto de la gente, se la he pasado a un par de compañeros para que la testeen y me den su impresión. Mientras me peleo de cómo resolver estos inconvenientes.




Anakleto