sábado, 28 de noviembre de 2009

Live for Speed -> VB .NET (o como leer info del juego)

Como parte de mi "proyecto" necesito leer información del Live for Speed, como puede ser: marcha actual, velocidad, rpm, etc.... todo esto para que se muestren los datos en una "pantalla" que irá con el volante.

Después de varios dias buscando información me he encontrado con un blog donde hace mención a como obtener dicha información:
El Blog de 16BITBoy
En este blog hay un link a LFS External el cual os llevará al foro oficial de Live for Speed donde encontraréis información.


Plantilla para volante

Después de buscar y buscar por internet, encontré una plantilla para un volante. Realmente no recuerdo donde la encontré así que si alguien la ve y es suya lo siento si no pongo el enlace, es que no lo guardé. Aquí la tenéis.


Aquí os pongo un par de archivos DXF con plantillas de volantes por si lo queréis abrir con Autocad, etc.

Volante 1
Volante 2

Enviando datos a PPJoy...... Simulando un Joystick

Aquí os explicaré como enviar datos mediante VB .NET a un Joystick Virtual del PPJoy.

Primero debemos agregar  PPJoyWrapper.dll a nuestro proyecto y hacer referencia a ella.
Seguidamente tenemos que añadir la siguiente línea al principio de nuestro código:
                         
Imports PPJoy

Creamos una instancia al objeto PPJoy y definimos una variable para indicar el número del joystick virtual:

Dim joy_no As Integer = 1  ' Número del Joystick Virtual.

Dim joy As New PPJoy.VirtualJoystick(joy_no)

Para enviar datos analógicos (por ejemplo los ejes):

joy.SetAnalogDataSourceValue(x, valor)   donde x es el nº de entrada analógica y valor pues eso, el valor

y para enviar datos digitales (por ejemplo los botones):

joy.SetDigitalDataSourceState(x, estado)  donde x es el nº del botón y estado TRUE/FALSE (pulsado)

No olvidarse después de enviar los datos de "decírselo" al PPJoy:

joy.SendUpdates()


Con todo esto ya podemos enviar datos al joystick virtual . Existen muchos mas métodos que si os interesa dentro del PPJoyWrapper (del cual tenéis el enlace mas abajo) encontraréis una ayuda donde os los explican.


jueves, 26 de noviembre de 2009

Una fotillo..... El principio de mi "volante"

Mientras sigo buscando información (plantillas, esquemas, etc) os pongo una foto (no es muy buena, pero es lo más que puedo hacer con mi cámara, que tiene la pantalla rota :(    )  de como empieza a tomar forma mi volante.

De momento solo está el potenciometro con un "engranaje" reciclado de un lector de DVD. El siguiente paso será montarlo en una superficie "estable" y añadirle el eje principal que sujetará el volante.

Ala pues.... aquí lo tenéis.



PD: Se me había olvidado!!!! también estoy trabajando en el "display" que mostrará la información (claro está con Arduino) de momento como test funciona lo único que tengo que conseguir es poder leer la información de los juegos (nada de plugins) mediante acceso directo a la memoria y así poder mostrar información varia, pero tiempo al tiempo.

EDITO: He estado haciendo pruebas y lo mas seguro es que quite el "engranaje" ya que con la plantilla de volante que he probado no es necesario, de momento dejo la foto por si alguien quiere tomar alguna idea, pero seguro que al final no lo pondré

Leyendo datos de Arduino por el puerto COM..... en VB .NET

Una vez realizada la parte de Arduino toca la parte de VB.

Para leer los datos del puerto COM primero crearemos una instancia System.IO.Ports.SerialPort y configuraremos con la velocidad y demás necesarios para leer los datos:

       Dim ComPort as New System.IO.Ports.SerialPort()
       ComPort.PortName = puerto COM de Arduino
       ComPort.BaudRate = 115200
       ComPort.DataBits = 8
       ComPort.Parity = IO.Ports.Parity.None
       ComPort.StopBits = IO.Ports.StopBits.One
       ComPort.DtrEnable = True


Después abriremos el puerto:

        ComPort.Open()


Y por último hacer referencia al evento de recibir datos y llamar a la función para tratar los datos leídos:

         AddHandler ComPort.DataReceived, AddressOf función.
       

         Private Sub función(ByVal sender As System.Object, ByVal e As  
          System.IO.Ports.SerialDataReceivedEventArgs)
                                            ......................
        End Sub


En esta función básicamente lo que hay que hacer es un Split(ComPort.ReadLine()).ElementAt(x) , para ir leyendo los datos de las posiciones (x) separadas por un espacio,  hasta el salto de línea que manda Arduino.
De esta manera iremos teniendo los diferentes valores enviados por Arduino como pueden ser valores análogicos de los ejes, botones, etc.
Lo siguiente: mandar estos valores al joystick virtual por medio del PPJoyWrapper y simular las acciones del joystick.

lunes, 23 de noviembre de 2009

Entradas analógicas con Arduino (principio de mi joystick/volante)

Bueno, aquí os pongo como he conectado los 3 potenciometros (de 100 Kohm cada uno) que servirán para simular 3 ejes (X, Y, Z). En mi caso serán para simular el volante, pedal de acelerador y pedal de freno.


En este enlace tenéis un PDF que muestra la conexión de los potenciometros con Arduino. Es muy sencillo y con un 'Sketch' (programa para arduino) leemos las diferentes entradas analógicas y las enviaremos por el puerto COM para después recogerlas con Visual Basic (por ejemplo) y enviar las lecturas al Joystick Virtual ( PPJoy ) y simular el joystick/volante.

Como veréis en el Sketch de Arduino, envío los datos con el siguiente formato:
aeje_x beje_y ceje_z

De momento para ir realizando pruebas con VB lo envío de esta manera para poder distinguir los valores de cada eje, en la versión "final" los datos de los ejes así como de los botones únicamente irán separados con un espacio.

Con esto ya tenemos un principio , ahora falta la parte de código en VB + PPJoy para transformar las lecturas analógicas en movimiento de joystick/volante. Más adelante os pondré como poder hacer esto.

Saludos.


domingo, 22 de noviembre de 2009

Software de electrónica gratuito

Buscando software para electrónica que fuera gratuito encontré muchos, pero los que más me llamaron la atención fueron estos:

* Fritzing: Programa open-source orientado a la realización de prototipos. Es muy interesante ya que está especialmente orientado a proyectos con Arduino.

* FreePCB: Programa open-source para el diseño de placas de circuito impreso.

* TinyCAD: Programa open-source para el diseño de circuitos electrónicos.

Seguramente que hay muchos más, pero con estos se puede empezar a realizar los primeros proyectos. Ya sabéis, si encontráis alguno más que se interesante podéis dejar el enlace por aquí.

Primeros pasos para simular un Joystick con Arduino ¿Que es necesario?

Bueno para comenzar este proyecto es necesario:

* Un Arduino, yo personalmente lo compré en la tienda de BricoGeek , aunque existen más de un distribuidor

* PPJoy , Este programa crea un joystick virtual , en la página del creador podéis tener más información.

* PPJoywrapper , es una DLL con la que se puede establecer conexión con el PPJoy para enviar o recibir datos al joystick virtual.

* Visual Basic .NET , la edición Express, es gratuita (siempre que sea para uso personal)

* Naturalmente componentes electrónicos (potenciómetros, cables, resistencias, etc.....), y algo de programación.

Con todo esto empezaré mi proyecto, que si todo funciona como debe finalmente veréis el resultado jejeje.

Hola Mundo!

Hola a todos.... bueno al fin me he decidido a publicar mi blog.
Básicamente estará dedicado a dos de mis grandes aficiones: la electrónica y la informática.

Para empezar, comentaros mi "pequeño" proyecto que tengo en mente.

Se trata de simular un joystick (en mi caso , un volante ) con un Arduino, PPJoy, y un poco de código en VB .NET
Acabo de empezar, pero ya tengo mis primeros logros!!!!

Os iré informando del progreso, así de como cualquier otra cosa interesante relacionada con este blog.