DisplayXR - Desarrollo

Toda la información relacionada con el DisplayXR.

Moderador: XRStaff

Avatar de Usuario
Nye
Primera conducción sin ayudas
Primera conducción sin ayudas
Mensajes: 398
Registrado: 16 Dic 2008 01:00
Volante: G25
Ubicación: Sabadell
Contactar:

Mensaje por Nye »

Para los juegos de SimBin.
Mediante MMF

Código: Seleccionar todo

SimBin

GTR GTR2 GTL RACE RACE07-GTR Evolution

{
float userInput[ 6 ]; // This structure allows for a number of parameters to be
// passed from the user to the exteral application via control input
// in the game. The ISIInputType enum describes which element of this
// array corresponds to which in-game control. Note that this data
// is floating point, and can be configured in the game to be driven
// by an analog input device (joystick). The user may also map the
// control to a keyboard key, or a digital controller button. This
// means that the value may be anywhere between 0.0 and 1.0. Also note
// that these values will not be debounced; if the user
// maps the "External Signal Up" control to a key on the keyboard,
// the coresponding value in this array will remain 1.0 for as long
// as the user holds the key down.

float rpm; // Engine speed, Radians Per Second.
float maxEngineRPS; // For use with an "analog" rpm display.
float fuelPressure; // KPa
float fuel; // Current liters of fuel in the tank(s).
float fuelCapacityLiters; // Maximum capacity of fuel tank(s).
float engineWaterTemp; //
float engineOilTemp; //
float engineOilPressure; //

float carSpeed; // meters per second
long numberOfLaps; // # of laps in race, or -1 if player is not in
// race mode (player is in practice or test mode).

long completedLaps; // How many laps the player has completed. If this
// value is 6, the player is on his 7th lap. -1 = n/a

float lapTimeBest; // Seconds. -1.0 = none
float lapTimePrevious; // Seconds. -1.0 = none
float lapTimeCurrent; // Seconds. -1.0 = none
long position; // Current position. 1 = first place.
long numCars; // Number of cars (including the player) in the race.
long gear; // -2 = no data available, -1 = reverse, 0 = neutral,
// 1 = first gear... (valid range -1 to 7).

//float tireTemp[ TIRE_LOC_MAX ][ TREAD_LOC_MAX ]; // Temperature of three points
float tirefrontleft[3]; //tire values from [0]=left to [2]=right
float tirefrontright[3]; //tire values from [0]=left to [2]=right
float tirerearleft[3]; //tire values from [0]=left to [2]=right
float tirerearright[3]; //tire values from [0]=left to [2]=right
// across the tread of each tire.
long numPenalties; // Number of penalties pending for the player.

float carCGLoc[3]; // Physical location of car's Center of Gravity in world space, X,Y,Z... Y=up.
//float carOri[ ORI_MAXIMUM ]; // Pitch, Yaw, Roll. Electronic compass, perhaps?
float pitch;
float yaw;
float roll;
//float localAcceleration[3]; // Acceleration in three axes (X, Y, Z) of car body (divide by
// 9.81 to get G-force). From car center, +X=left, +Y=up, +Z=back.
float lateral; //Force left-right
float vertical; //force up-down
float longitudinal; //force faster, slower
};

Avatar de Usuario
Gaboni
Aprendiendo a embragar manual
Aprendiendo a embragar manual
Mensajes: 329
Registrado: 15 Ago 2006 00:00
Ubicación: Madrid

Mensaje por Gaboni »

Me alegro mucho de poder tratar aquí con gente de tanto nivel, espero poder aprender mucho de vosotros. :D

He estado dándole vueltas un poco al tema, y a partir de las especificaciones que ha puesto Ernesto he ido completandolas con lo que me ha parecido bien. A ver que os parece:

Características:
  • El proyecto se basa en hacer un clon del PCU-6C de Mclaren Electronics, el visualizador estandard en todos los F1 a partir de la temporada 2008.
  • La conexión con el PC será mediante USB, y debe ser compatible con la mayoría de simuladores de conducción utilizados.
  • El dispositivo estará formado por 9 displays de 7 segmentos, una tira de 15 leds y dos grupos de 3 leds. Debe disponer de varias entradas de propósito general.
  • El visualizador no dispondrá de inteligencia propia. Se permitirán realizar dos operaciones: Mostrar datos en los displays, y enviar al PC los cambios en las entradas.
  • Toda la lógica se encontrará en el plugin que se desarrolle para cada juego. De esta forma, el elemento hardware será genérico para cualquier juego.
  • Los componentes deben ser fácilmente asequibles.
  • El conjunto final deberá ser de fácil montaje, y utilizable con cualquier volante del mercado.
Creo que las principales áreas en las que debemos comenzar a trabajar son:

- Comunicación mediante USB, tanto parte del PIC como parte del PC.
- Conexión de los displays y los leds al PIC, y rutinas para mostrar datos en el mismo.
- Conexión de las entradas al PIC, y rutinas de lectura de datos.
- Plugin para rFactor que lea los datos del juego, y se comunique con el periférico mediante el protocolo acordado.
- Diseño del esquema del circuito.
- Sería interesante poder simular pulsaciones de botones en el rFactor, bien sea simulando un gamepad o simulando pulsaciones de teclas del teclado. Esto puede venir bien si nos quedan entradas libres, para poder asignarlas a controles del juego.

Yo tengo ya bastantes cosas hechas acerca de la conexión de los displays y las rutinas de visualización de datos en ellos, así que puedo hacerme cargo de este área.

Saludos!
Avatar de Usuario
alvaro_pasto
Maestro al volante
Maestro al volante
Mensajes: 5082
Registrado: 04 Sep 2006 00:00
Volante: Logitech G27
Frex Shift+
Ubicación: La Coruña
Contactar:

Mensaje por alvaro_pasto »

crobol escribió:...y un detalle curioso, que los leds parpadeen cuando este activado el Limitador. ..
Me gusta la idea.
Alvaro Vazquez
#15 Top-Racing
Avatar de Usuario
Nye
Primera conducción sin ayudas
Primera conducción sin ayudas
Mensajes: 398
Registrado: 16 Dic 2008 01:00
Volante: G25
Ubicación: Sabadell
Contactar:

Mensaje por Nye »

Gaboni escribió: - Sería interesante poder simular pulsaciones de botones en el rFactor, bien sea simulando un gamepad o simulando pulsaciones de teclas del teclado. Esto puede venir bien si nos quedan entradas libres, para poder asignarlas a controles del juego.
Saludos!
Totalmente de acuerdo. Es mas, Una de las posibilidades mas 'adecuadas' seria la de crear un driver para este dispositivo, el cual nos apareciera en el panel de control como uno mas de los dispositivos de juego.
Eso no solo nos permitiria interactuar con el rFactor, o con los juegos para los que fuera posible desarrollar un plugin del invento, sinó que ademas nos ofreceria el uso de las entradas para cualquier juego/aplicación.

El problema es que yo personalmente no tengo ni idea de como funciona eso. Habrá que investigar si os parece buena idea.


Me gustaria añadir a la lista de juegos, las opciones de Nascar racing 2003 y de iRacing. Por lo visto existen APIS oficiales para esos dos juegos (que ademas son identicas dado que iRacing utiliza el engine del NR2003 evolucionado). Si alguien tiene el iRacing o el NR2003 seguramente tenga algo de información en los archivos del juego, o puede preguntar por la API del iRacing siendo miembro registrado de ese juego. Me consta que está disponible pero yo no puedo pedirla al no tener acceso alli.

Para RBR sigue la cosa igual. Segun los datos a los que tuve acceso gracias a Jimi, el soporte es muy limitado. En teoria está creado con la estructura base del INSIM del LFS, pero no todas las funciones estan disponibles y es un producto no oficial.

Por cierto: hablando del LFS. Resulta ser que el GRID de Codemasters funciona con exactamente el mismo sistema que el LFS. O sea, otro juego a la saca ;)



En cuanto al tema de los leds: Yo me atreviria a pedir que fueran tratados individualmente para hacer con ellos lo que uno quisiera, aunque para empezar fueramos a tratarlos como bloques o grupos enlazados entre si. Me explico: En tu proyecto anterior los leds se encendian por tres grupos de 4 y uno de 5. Por lo que en un diseño particular intentar realizar una composicion distinta de los leds (separar uno para indicar nivel bajo de fuel por ejemplo) era imposible. Si se pudieran tratar de uno en uno seria cojonudo.
Que fuera el software el que proporcionara la posibilidad de enlazar ciertos leds a cierta funcion o a otra ( En esto Pololo seguro que está de acuerdo :D ).


Quisiera añadir que, aunque parezca que estemos tratando temas un poco ajenos creando 'como' un grupo cerrado de desarrollo, aqui hay gente muy competente en todos los niveles, hard, soft, diseño, manitas, gente muy experimentada en la simulación, .....
Aportad vuestras ideas, sugerencias, dudas, y lo que haga falta. Cuanta mas gente se implique mejor sera el resultado final.

Animo Alberto, que pinta muy bien todo esto. Espero ansioso el siguiente paso.
Avatar de Usuario
Nye
Primera conducción sin ayudas
Primera conducción sin ayudas
Mensajes: 398
Registrado: 16 Dic 2008 01:00
Volante: G25
Ubicación: Sabadell
Contactar:

Mensaje por Nye »

alvaro_pasto escribió:
crobol escribió:...y un detalle curioso, que los leds parpadeen cuando este activado el Limitador. ..
Me gusta la idea.
Eso ya lo hace el PD Display :P
Avatar de Usuario
alvaro_pasto
Maestro al volante
Maestro al volante
Mensajes: 5082
Registrado: 04 Sep 2006 00:00
Volante: Logitech G27
Frex Shift+
Ubicación: La Coruña
Contactar:

Mensaje por alvaro_pasto »

Añado a las ideas (si es que no se ha dicho ya) que el display muestre "PIT" mientras estamos en el garaje, y que al encenderlo, como forma de testear todos los componentes, los displays de 7 segmentos alumbren haciendo circulos o 8's (en movimiento), y que los leds parpaden unas cuantas veces.

Si es posible :wink:
Alvaro Vazquez
#15 Top-Racing
Avatar de Usuario
hechizer0
Piloto Histórico
Piloto Histórico
Mensajes: 1482
Registrado: 18 Ene 2006 01:00
Volante: T500RS & Sparco 285
Ubicación: Granada
Contactar:

Mensaje por hechizer0 »

Por pedir pido que sea pequeño y factible para instalar tanto en mod de volantes de f1, como fuera de estos, o con volantes normales, y de competicion.
Ultimamente son enormes los que salen.
Se podria hacer que algunos leds fueran de diferente color, para el desgaste de gomas, creo que no lo hemos indicado, el desgaste de gomas es para mi lo mas importante y para los usuarios en general de Rfactor.

Prefiero usar los led de desgaste de goma antes que el de Adherencia, otra cosa bien distinta esque se pueda hacer.
Imaginaros 3 led multicolor, en verde gomas en estado normal, rosa o rojo en estado optimo, y amarillo pa matarnos.
Todavia no se ha usado esto, y es algo que es imprescindible.
Tutoriales 08Guia de Tutoriales
Avatar de Usuario
Aphex
Piloto Histórico
Piloto Histórico
Mensajes: 1015
Registrado: 04 Jul 2008 00:00
Volante: Fanatec Sucks!
Ubicación: Villalba, Madrid
Contactar:

Mensaje por Aphex »

eso del desgaste de las ruedas parece buena idea, ademas si no recuerdo mal sobraban 3 leds por ahi huerfanos xD, la historia es saber si eso es compatible por q la idea q veo es hacerlo universal para la mayoria de sims

lo unico q con solo 3 indicadores no daria una info demasiado detallada de algo tan imprescindible como el estado de las gomas, aunque si seria orientativo, de eso no cabe duda ^^



salu2!!
ApHex #178
Avatar de Usuario
Gaboni
Aprendiendo a embragar manual
Aprendiendo a embragar manual
Mensajes: 329
Registrado: 15 Ago 2006 00:00
Ubicación: Madrid

Mensaje por Gaboni »

Nye, en mi visualizador cada uno de los LEDs es independiente del resto, lo que pasa es que como estaba orientado a mostrar las RPM, lo hice de forma que se encendiesen empezando desde la izquierda.

Lo que podemos hacer aquí es usar en el protocolo una máscara de bits para indicar el estado de los leds, por ejemplo 7FFF para los 15 leds encendidos, 0000 para los 15 apagados, 5555 para uno sí otro no, etc...

hechizer0, la idea es que el elemento hardware sea 'tonto' y no tenga ni idea de lo que está mostrando, ni de para qué sirven las entradas que se le están activando. El plugin es el que decide qué significa cada entrada, y cuando y como quiere encender cada led.

Así es mucho más fácil luego hacer virguerías de esas, pero lo importante es que el elemento hardware sea genérico y robusto como una roca, que no sea necesario toquetear en él cada vez que se quiera cambiar algo.

Saludos!
Avatar de Usuario
BEDI
Piloto Histórico
Piloto Histórico
Mensajes: 1468
Registrado: 16 Sep 2007 00:00

Mensaje por BEDI »

Si no he entendido mal, es el software el que se encarga de enviar la información sobre que leds se encienden, etc. Esto se programa en C?

Lo digo porque de ser asi es una buena manera para que cada uno luego pueda ajustar los ultimos detalles a su gusto. Ademas yo podría colaborar en esa parte. Ahora mismo tengo bien fresquita la programación enfocada a tarjetas de adquisición de datos, acondicionamiento de señal, etc... En definitiva, programación en C a nivel de bit.

En la aprte electrónica tambien podría colaborar pero en menor medida porque dentro de la electrónica que he manejado no me han entrado PICs.



Por otro lado hechizer0 me gusta mucho esa idea de leds tricolor para las ruedas. Son bastante caros, 2-3€ aprox cada uno pero weno... La idea es buen e incluso con un control PWM se puede consegir una escala de colores bastante interesante, pero weno eso ya se vera.
Avatar de Usuario
hechizer0
Piloto Histórico
Piloto Histórico
Mensajes: 1482
Registrado: 18 Ene 2006 01:00
Volante: T500RS & Sparco 285
Ubicación: Granada
Contactar:

Mensaje por hechizer0 »

Bedi si el presupuesto final sube 8 euros por ese detalle nadie te dira que no, eso estate seguro. Pero esque he visto mil, y esa idea la tenia yo en la cabeza mucho tiempo, hay 2 cosas que nos fijamos cuando corremos.
Una es el desgaste y la otra los litros de combustible.
Que el coche se ponga a 20 km mas no me interesa, por que solo por el sonido del motor sabes como vas, pero esque los litros y el desgaste de gomas,lo tenemos en mente prácticamente toda la carrera.

Saludos
Tutoriales 08Guia de Tutoriales
Avatar de Usuario
Nye
Primera conducción sin ayudas
Primera conducción sin ayudas
Mensajes: 398
Registrado: 16 Dic 2008 01:00
Volante: G25
Ubicación: Sabadell
Contactar:

Mensaje por Nye »

Nye, en mi visualizador cada uno de los LEDs es independiente del resto, lo que pasa es que como estaba orientado a mostrar las RPM, lo hice de forma que se encendiesen empezando desde la izquierda.
A eso me referia. A nivelde hardware los leds se trataban de forma individual, pero el programa del PIC solo permitia tratarlos en grupos, lo que limita un poco el tema 'variantes'.
Lo que podemos hacer aquí es usar en el protocolo una máscara de bits para indicar el estado de los leds, por ejemplo 7FFF para los 15 leds encendidos, 0000 para los 15 apagados, 5555 para uno sí otro no, etc...
Cojonudo !! :D

Si no he entendido mal, es el software el que se encarga de enviar la información sobre que leds se encienden, etc. Esto se programa en C?
Depende de quien lo realice.
Esta claro que C es el lenguaje de programacion mas extendido a nivel profesional para estas cosas, pero no es el unico con el que se puede trabajar. Sin ir mas lejos TODAS mis aplicaciones estan realizadas en Visual Basic 6.0. Y no me consta que nadie se haya quejado ni de problemas de compatibilidad ni de problemas de rendimiento, a pesar de que en teoria no es tan 'potente' como el C.

Una cosa si está clara, para acceder a las entrañas del rFactor si es necesario por lo menos crear una libreria de enlace en C. Para LFS y para los de SimBin es posible hacerlo directamente desde Visual Basic accediendo a las API de windows.

Si quieres empezar a ver como funciona el tema, te recomiendo que te bajes los Internals plugin del rFactor. Estan perfectamente documentados y tienen ejemplos incluidos en el codigo fuente.

Prefiero usar los led de desgaste de goma antes que el de Adherencia, otra cosa bien distinta esque se pueda hacer.
Imaginaros 3 led multicolor, en verde gomas en estado normal, rosa o rojo en estado optimo, y amarillo pa matarnos.
Todavia no se ha usado esto, y es algo que es imprescindible.
Si no me equivoco, los leds multicolor no dejan de ser un led con una pata común y otras tantas una para cada color. Si eso es así entonces supongo que el circuito sirve igualmente dado que se pueden tratar las salidas de forma individual. Por lo tanto un led tricolor seria el equivalente a 3 leds normales.


Para el tema de los leds y displays, estaria bien crear una especie de patron base sobre el que trabajar, pero luego dar la opción de modificar ese patron de una forma relativamente facil (un archivo de texto ini por ejemplo). Donde cada cual decidiera a que quiere dedicar cada led y cada display. No se hasta que punto complica esto el tema, pero estoy seguro que seria bienvenido por todo aquellos que gustan de hacerse sus propias variantes. Evidentemente, se deberia de servir el programa con un ini predefinido con las asignaciones de fabrica que aqui se decidan.
ernespeed
Piloto de Pruebas
Piloto de Pruebas
Mensajes: 547
Registrado: 16 Ene 2007 01:00
Volante: Ferrari F1 '09, GP2 2011
Ubicación: Valencia

Mensaje por ernespeed »

Leeeeches!!!. Un dia sin entrar y no veas si habeis avanzado ya. Lo malo de haber llegado a este punto es que ya de la mitad de las cosas no me entero, jajaja. Que si protocolos, API, condensadores de fluzo, etc, etc.

Gracias Crobol por pensar en ponerle una chincheta a esto. Seguro que muchos foreros lo agradeceran. Y respecto al nombre para el cacharro no creo que me corresponda a mi ponerlo. A ver esos ingenieros de verdad que se lo estan currando si le ponen nombre a la criatura.

Cuando hable con Alberto por telefono comentamos lo de que parpadearan los 15 leds y en un display pusiera PIT al entrar a pits y me dijo que eso no era problema, siempre y cuando el plugin de Rfactor diera esa informacion. Lo que me lleva a preguntar lo siguiente: ¿Alguien de los que gaste el Spotter me podria decir si este programa saca la info del plugin original de Rfactor o utiliza un plugin propio?. Porque el Spotter si que nos canta todas las banderas, diferencias de tiempos en T1, T2 y T3, y algunas cosas tambien interesantes.

Otra cosa: Lo del desgaste de neumaticos es algo que me ha parecido muy interesante, pero segun lo comentado en el foro, el display reproducira fielmente al de los F1. Asi que le he dado un poco al coco y la solucion que se me ha ocurrido es la siguiente. Por ejemplo seran los 4 displays izquierdos en sacar el desgaste. Una vez seleccionemos esa visualizacion a traves del interruptor giratorio, lo que nos deben mostrar los displays sera lo siguiente:

Ruedas nuevas:
- - - -
- - - -
- - - -

Ruedas semi-gastadas:

- - - -
- - - -

Ruedas gastadas:



- - - -

Ruedas delanteras nuevas y traseras gastadas:
- -
- -
- - - -

No se si me pillais la idea. Cada display representa una rueda y cada barra de menos representa el desgaste de esa rueda en concreto.


De todas formas, de momento no os mareeis con esto ya que sera el software del PC el encargado de decirle al visualizador donde tiene que mostrar cada cosa. Como bien dice Alberto, el hardware sera tonto.
Lo bueno tambien de ser tonto es que luego, desde el software, le podras decir con que simulador quieres trabajar y donde quieres que te muestre la info. Por eso pienso que de momento no nos tenemos que preocupar en eso. Hay que hacer que funcione, que pase el test y luego ya se hara que trabaje con todos los simuladores. Estoy en lo cierto, ¿no?.

Otra cosa: Si nos sobran salidas del pic HAY QUE LLENARLAS TODAS, jajaja. Le ponemos botones hasta llenarlo, ¿no?.

Y esto ya para liaros un poco mas: ¿Y si ya se deja preparada la PCB para que el que quiera pueda conectar un LCD de determinadas caracteristicas y derivar alli parte de la info mediante el software?. Todo ello sin quitarle ninguna caracteristica original al display, solamente como opcion para el piloto que quiera mas info o para el "piloto tunero" (jajaja, que no se me enfade nadie, perdon). Mario lleva ya muy adelantado el tema ese de los LCD y a lo mejor no es tan dificil acoplarlo. ¿No Mario?.

Enga. Un saludo chicos y seguire ayudando en lo que pueda.
Avatar de Usuario
Nye
Primera conducción sin ayudas
Primera conducción sin ayudas
Mensajes: 398
Registrado: 16 Dic 2008 01:00
Volante: G25
Ubicación: Sabadell
Contactar:

Mensaje por Nye »

El desgaste de ruedas para cada una de ellas si esta disponible para rFactor:

Código: Seleccionar todo

  float mWear;                   // wear (0.0-1.0, fraction of maximum) ... this is not necessarily proportional with grip loss 
En lo de las banderas ya no lo tengo nada claro. En el plugin no está ninguna información al respecto de las banderas, excepto la de bandera amarilla full course yellow. Pero no es individual para cada piloto, sino que es informacion de la sesion.

Un dato que si existe es el del numero de penalizaciones pendientes. Si has cortado la pista y te meten un drive through tienes una penalizacion.





Por lo de los displays, como muy bien dices se puede tratar a posteriori desde el programa sin necesidad de retocar el hardware.
Por ejemplo, con los leds se podria hacer, como ya comenté antes, un sistema totalmente flexible para definir sus funciones. Un sistema que fuera editable de forma facil por cualquiera. Como por ejemplo:

Código: Seleccionar todo

/// DisplayXTR.ini
///
/// Fichero de ejemplo para la configuración de los leds del display
/// El numero maximo de leds es de 24
///
/// El formato de la configuración de cada led es el siguiente:
/// CODIGO DEL LED = FUNCION , VALOR MINIMO , VALOR MAXIMO , PARPADEO
///
/// CODIGO DEL LED es un valor de cadena entre Led1 y Led24
/// Si el Codigo de un cierto led no está definido se entiende que no está instalado en el hardware
///
/// FUNCION es un valor numérico. Las funciones soportadas son:
/// 0 - Led no utilizado
/// 1 - RPM del motor - Variable
/// 2 - Bandera amarilla - Boleano
/// 3 - Bandera Azul - Boleano
/// 4 - Bandera Roja - Boleano
/// 5 - Bandera Negra - Boleano
/// 6 - Deslizamiento de ruedas / Derrape - Variable
/// 7 - Desgaste de neumaticos - Variable
///
///
///
/// VALOR MINIMO y VALOR MAXIMO es un valor numérico entero, entre 0 y 100 y se corresponde al porcentaje de la 

función representada.
/// Si la función asignada al led contiene un valor variable entonces:
/// La ventana creada entre VALOR MINIMO y VALOR MAXIMO representa la zona en % que debe alcanzar esa funcion para 

que se encienda el LED.
/// Un ejemplo de valor variable es RPM. Puede contener cualquier valor entre RevMin y RevMax.
///
/// REVMIN               VALOR MINIMO          VALOR MAXIMO         REVMAX
/// |                         |                     |                    |
/// |      LED APAGADO        |    LED ENCENDIDO    |    LED APAGADO     |
/// |                         |                     |                    |
///
/// Si la funcion asignada contiene un valor del tipo Boleano, entonces VALOR es ignorado por el programa.
/// Un ejemplo de valor Boleano es una bandera. O se muestra o no se muestra.
///
///
///
///
/// PARPADEO indica si el led en cuestión dejará de cumplir su función para pasar a un parpadeo intermitente cuando 

el limitador de velocidad de boxes esté activo.
///
///
///
/// Ejemplos:
/// Led3 = 1 , 25, 100 , 1        -> El led numero 3 se enciende ente el 25% de revmax y revmax. Ademas parpadea al 

activar el limitador.
/// Led21 = 2 , 0 , 0 , 0         -> El led numero 21 se activa cuando hay bandera amarilla. No parpadea si se activa 

el limitador.
///
///
///
/// Valores por defecto segun la aplicación estandar planteada por Ernesto

[Leds]
Led1 = 1 , 6 , 100 , 1
Led2 = 1 , 12 , 100 , 1
Led3 = 1 , 19 , 100 , 1
Led4 = 1 , 25 , 100 , 1
Led5 = 1 , 31 , 100 , 1
Led6 = 1 , 37 , 100 , 1
Led7 = 1 , 44 , 100 , 1
Led8 = 1 , 50 , 100 , 1
Led9 = 1 , 56 , 100 , 1
Led10 = 1 , 62 , 100 , 1
Led11 = 1 , 69 , 100 , 1
Led12 = 1 , 75 , 100 , 1
Led13 = 1 , 81 , 100 , 1
Led14 = 1 , 87 , 100 , 1
Led15 = 1 , 94 , 100 , 1
Led16 = 2 , 0 , 0 , 0
Led17 = 3 , 0 , 0 , 0
Led18 = 5 , 0 , 0 , 0
Led19 = 2 , 0 , 0 , 0
Led20 = 3 , 0 , 0 , 0
Led21 = 5 , 0 , 0 , 0
A las funciones habria que añadirle todas las que os podais imaginar. Luego si es factible o no dependeria de la información que suministrara el juego en cuestion.
Un archivo de este tipo permite ser editado en el Bloc de Notas para personalizarlo a gusto de cada uno.
Mas tarde se podria añadir en el programa algo para que no fuera necesario editar a pelo el archivo, como alguien ya ha citado antes, y como lo que realizo en el PD Display:

[img]http://t2sp.darkstargamers.com/t2sp/Uti ... 20Leds.jpg[/img]

Algo parecido se podria hacer con los displays de 7 segmentos. Aunque la cosa se complica y bastante en ese punto, ya que no solo hay que definir sus funciones, sinó que hay que permitir asignar ninguno, uno, o diversos botones para alternar la información deseada. Algo habrá que pensar.
Avatar de Usuario
Geri26
Aprendiendo a trazar
Aprendiendo a trazar
Mensajes: 203
Registrado: 30 Dic 2008 01:00
Volante: Logitech DFP
Ubicación: Alcatraz

Mensaje por Geri26 »

8O 8O 8O 8O 8O 8O 8O 8O 8O 8O 8O


Sigo el post desde que empezó, y cada dia miro las respuestas, y sigo flipando!!

La verdad es que esta muy muy interesante.

SI entendiera de electronica y de programacion (o cualquier cosa util, ayudaria, esta claro) pero lo mio de momento es la mecanica.

Pero no le quitaré ojo a este post!! Esta muuuuy interesante!!


Saludos
ernespeed
Piloto de Pruebas
Piloto de Pruebas
Mensajes: 547
Registrado: 16 Ene 2007 01:00
Volante: Ferrari F1 '09, GP2 2011
Ubicación: Valencia

Mensaje por ernespeed »

Impresionante Nye.
Entonces, por lo que comentas, la info del desgaste de ruedas no haria falta ponerla a modo de barritas en los displays, sino que te la daria con informacion mas detallada, tipo 00.0 de desgaste de cada rueda. Mucho mejor asi de detallada, pero tendremos el inconveniente de no tener todos los desgastes en un mismo click de ambos displays, sino en dos clicks.
Bueno, cuando llegue el momento ya veremos como lo hacen los ingenieros, jejje.

Una cosa. Si antes habeis comentado que nos sobrarian salidas del pic ............... en vez de añadir entradas para botones, ¿habria alguna posibilidad o se os ocurre como mostrar en el cacharro mas de 12 + 12 clicks de informacion?. Porque al paso que vamos añadiendo cosas, que el cacharro nos muestre 24 datos diferentes se nos va a quedar corto 8O 8O 8O 8O 8O 8O 8O

Yo creo que llegados a este punto en el que lo tenemos casi todo atado, en cuanto tengamos claro como emplear todas las salidas del pic podriamos empezar ya con el desarrollo, ¿no?. Y de momento lo dejamos sin soporte para LCD si os parece bien. Mas que nada es para que la version 1.0 sea mas facil de hacer y la podamos probar mas rapido (¿no me digais que no teneis ganas ya de ver el primer proto?). Y luego, sobre esa base probada y robusta, ya se podrian ir añadiendo "perifericos" o mas opciones, ¿no?. ¿Que os parece?.

Enga, un saludo y felicidades a todos porque post como este en donde se aprenda tanto se ven muy pocas veces en los foros.
ernespeed
Piloto de Pruebas
Piloto de Pruebas
Mensajes: 547
Registrado: 16 Ene 2007 01:00
Volante: Ferrari F1 '09, GP2 2011
Ubicación: Valencia

Mensaje por ernespeed »

Bueno, bueno, bueno. Pues ya tenemos la primera beta funcionando.

El amigo Gaboni se lo ha currado y se la ha dado a nuestro equipo de pruebas para tener una primera valoracion y que nos digan en que aspectos se puede mejorar el display.

Aqui os pongo un video que ha grabado Gaboni en persona. Mirad sobre el segundo 30.



Un saludo.
Avatar de Usuario
Gaboni
Aprendiendo a embragar manual
Aprendiendo a embragar manual
Mensajes: 329
Registrado: 15 Ago 2006 00:00
Ubicación: Madrid

Mensaje por Gaboni »

Pues no va y me comenta el menda que se hace la picha un lio con tanta ruedecita para cambiar la info en los displays... dice que con que tenga el botonsito ese para adelantar, que va sobrao.. :mrgreen:
Avatar de Usuario
Gaboni
Aprendiendo a embragar manual
Aprendiendo a embragar manual
Mensajes: 329
Registrado: 15 Ago 2006 00:00
Ubicación: Madrid

Mensaje por Gaboni »

He comenzado a trabajar con el PIC18F4550, y creo que ya podemos quedarnos con una lista definitiva de las especificaciones del visualizador.

[img]http://www.mclarenelectronics.com/produ ... age002.jpg[/img]

Especificaciones:
  • Clon del PCU-6C de F1.
  • Conexión con el PC mediante USB.
  • Alimentación +5V por el propio USB. El consumo no debería superar los 100 mA.
  • 9 displays de 7 segmentos, siendo el central de mayor tamaño para las marchas. Se podrán mostrar dígitos del 0 al 9 y letras de la A a la Z, además de varios signos y formas preestablecidas. Los puntos de los displays se activan de forma independiente.
  • Tira de LEDs de 15 unidades. Colores verde, rojo y azul. Cada led se activa de forma independiente.
  • Dos grupos de 3 LEDs. Colores amarillo, azul, rojo.
  • Conexión para 2 conmutadores rotativos externos de 12 posiciones.
  • Conexión para 16 botones externos adicionales que actuan como un gamepad genérico.
En principio así lo veo bastante completo, de todas formas ya no quedan más pines libres en el PIC, así que mucho más no nos podemos explayar.

A ver si hoy mismo consigo el PIC y me pongo a trabajar en el primer prototipo. Necesito que alguien ayude con el tema del diseño del circuito, ¿Algún voluntario?

Saludos!
Avatar de Usuario
Aphex
Piloto Histórico
Piloto Histórico
Mensajes: 1015
Registrado: 04 Jul 2008 00:00
Volante: Fanatec Sucks!
Ubicación: Villalba, Madrid
Contactar:

Mensaje por Aphex »

buenas Gaboni conozco a alguien q os puede ayudar sin problemas con todo el tema de las placas pero me ha dicho q hasta mañana no podra meterse al foro.


salu2!
ApHex #178
Avatar de Usuario
pflanzgarten
Recien salido a pista
Recien salido a pista
Mensajes: 97
Registrado: 12 Ene 2009 01:00
Volante: Logitech Formula Force GP
Ubicación: Madrid
Contactar:

Mensaje por pflanzgarten »

Hola.

No tengo mucho tiempo ahora, así que, unas cosas rápidas:

Si la intención es de que vaya por USB, la lógica de manejo de los LEDs es totalmente diferente a la del visualizador RS232.

Un PIC (18F4550) es un "bicho" bastante listo y si se va a poner de acuerdo con un programa host (tipo PDDisplay), dado que el USB es bidireccional no hay ningún problema para que "El chisme" sea interactivo. El protocolo más fácil de usar, es el USB HID, ya que entre otras cosas, no necesita driver. En este protocolo, el programa "Host", le manda un paquete de datos al PIC, y si queremos, el PIC le manda un paquete de datos al programa "Host". Cuanto más pequeño sea el paquete de datos, mejor, así que, si el PIC informa al host que datos quiere, este le manda, única y exclusivamente los solicitados. Habría varios permanentes: Marcha, LEDs barra, Número de LEDs laterales y dos variables: los dígitos de la derecha y los de la izquierda.

No os compliquéis mucho con el asunto del software... Se puede utilizar gran parte del PDDisplay.

Nye, ¿podrías montar un OCX (solo) similar a los que ya hay para GTR2 y GTLegends pero para RFactor 1255?

Gaboni, echa un vistazo aqui: RedPic

Yo no uso CCS, uso PROTON+, pero bueno, ahí te viene explicado un poco más en profundidad como funciona el USB HID.

Lo del PROTON+ es por dos cosas: Lo tengo original, y trae un Wizard para hacer aplicaciones USB HID.

Veo que no se pueden adjuntar archivos... si me dices un email te mando la plantilla que genera el EasyHid

Otra cosa. Si eres de Madrid o alrededores, en Actron tienen el 18F4550 y a buen precio.
Avatar de Usuario
Nye
Primera conducción sin ayudas
Primera conducción sin ayudas
Mensajes: 398
Registrado: 16 Dic 2008 01:00
Volante: G25
Ubicación: Sabadell
Contactar:

Mensaje por Nye »

Si como dice Mario, para este proyecto se usa el protocolo HID USB, tengo algo de experiencia en ello gracias, precisamente a Mario, que me mandó hace algun tiempo una ejemplio del codigo fuente necesario para utilizar ese protocolo.
Y por lo que estuve revisando asi por encima, es relativamente facil de aplicar.


Por lo del OCX, me habia planteado crear el del RACE07/EVO, pero al haber otras soluciones por ahi pensé que era 'inutil' crearlo dado que como muy bien sabes requiere 'mantenimiento'. De todas formas... despues de empezar a liarme con este proyecto, y tras investigar como hacer las cosas mirando desde otra perspectiva en cuanto al tema de adquisición de datos, es probable que recupere mi proyecto antiguo para crear algo que soporte mas de un juego. Entre ellos podria estar el rFactor y no precisamente a base de 'snifar' de la memoria.

Te comento esto porque no tengo ningun problema en hacerte un OCX para la 1255, pero ten muy en cuenta que la versión con la que yo trabajé y para la que tengo las direcciones de memoria era 'trucha', eso quiere decir que NO FUNCIONA con el rFactor legal.

Que conste que no es que no tenga el rFactor legal. El problema estaba en que en la comunidad jugabamos con la 1250 y para no andar reinstalando y actualizando, el exe de la 1255 trucha me permitia nadar entre dos aguas :).

Ahora si tengo el rFactor actualizado a la 1255, pero me da mucha pereza buscar todos los datos de nuevo.
Avatar de Usuario
pflanzgarten
Recien salido a pista
Recien salido a pista
Mensajes: 97
Registrado: 12 Ene 2009 01:00
Volante: Logitech Formula Force GP
Ubicación: Madrid
Contactar:

Mensaje por pflanzgarten »

Por si todavía hay alguien que no lo ha visto :) Video Youtube

Ahora que lo dices, no estoy seguro con que versión de RFactor hice este video, creo que es la 1255 y es una demo que me bajé antes de verano, y el PDDisplay es el 2.7

He actualizado mi perfil para que se vea el email.

Edito para decir que sí, que es la versión 1255... lo puse en la descripción del video.
Última edición por pflanzgarten el 14 Ene 2009 17:36, editado 1 vez en total.
Avatar de Usuario
Gaboni
Aprendiendo a embragar manual
Aprendiendo a embragar manual
Mensajes: 329
Registrado: 15 Ago 2006 00:00
Ubicación: Madrid

Mensaje por Gaboni »

Hola Mario, muchas gracias por la info. Eres un crack tio :D .

Me empollaré el protocolo USB HID, a ver si esta tarde puedo hacerme con un PIC de estos y me pongo ya a trastear.

Efectivamente, la comunicación debe ser bidireccional ya que el visualizador debe notificar al PC los cambios producidos en las entradas. El software de PC sólo necesitaría enviar los datos que se deseen mostrar para que haya el mínimo tráfico posible, pero creo que es preferible que el visualizador no sepa qué tipos de dato está mostrando, ya que al menos mi idea es que sea lo más genérico posible.

El paquete de datos podría ser una cosa parecida a esto, son 18 bytes:

<displays izqda(4)><display central(1)><displays dcha(4)><estado leds(4)><estado grupos leds(2)><estado puntos(3)>

Por ejemplo:

08001pit27FFF00200

displays izda:

0800

display central:

1

displays dcha:

pit2

tira de leds:

7FFF -> 111111111111111 (los 15 leds encendidos)

grupos de leds:

0 -> 0000 y 0 -> 0000, apagados todos.

estado de los puntos

2->0010, 0->0000 y 0->0000. En el grupo de 4 de la izquierda está activo el tercer punto, con lo que quedaría 080.0

En el display aparecerá algo así (la firma de Ernesto):

Imagen

Hacerlo así significa complicar el software de la parte de PC, pero creo que merece la pena por las ventajas que ofrece.

- Display completamente genérico (lo mismo da poner la velocidad que el precio del kilo de tomates, oiga!).
- Una vez esté terminado no será necesario cambiar nada a nivel hardware ni de firmware.
- Los cambios, al ser en el software del PC serán más sencillos de hacer, y más fácil de actualizar.

Con este protocolo se necesitarían enviar paquetes de 18 bytes unas 25 veces por segundo, asumible incluso para un puerto RS232 a 9600 baudios :? .

Saludos!
Avatar de Usuario
crobol
Maestro al volante
Maestro al volante
Mensajes: 13867
Registrado: 28 Abr 2007 00:00
Volante: DFP
Ubicación: BCN
Contactar:

Mensaje por crobol »

Admito que inicialmente, al ver la iniciativa de Ernesto, no era yo muy optimista de que llegara a buen puerto a pesar de las buenas intenciones, mas que nada en mi poca fe en la especie humana.

Pensaba,"...aquí tienen que venir Nye, Joanett y Gaboni para que esto salga adelante, ya que son los artífices del anterior display bestseller, pero a saber donde está esta gente y si tendrán tiempo y ganas..."

Y cual es mi sorpresa, que no solo ellos, si no muchos mas se han unido a este proyecto para que muchos ignorantes en electrónica podamos tratar de construir en casa un cachibache a la altura de un F1.

Me emociono al leer cada nuevo post, a pesar que hace ya unos cuantos post que me pierdo en bits, pics, leds...

Creo que me van a fallar las fuerzas y me van a saltar las lagrimas de la emoción
:llorar: .... buaaahhh!!!
Responder