Ayuda Arduino Y Display TM1638

Ir abajo

Ayuda Arduino Y Display TM1638

Mensaje  adriangz el Dom 29 Ene - 12:31

Hola , os comento tengo una placa arduino conectada a un display TM1638 mas usado en rFactor y asseto por la facilidad del software , y queria conectarla a RBR en el mod Checo , mi duda que software tengo q usar ? ¿Alguno lo  usa?

Por lo qu vi en videos RBR solo sale info de Velocidad revoluciones, marchas  y temperatura.

En dos años que tengo el display nunca fui quien de hacerlo funcionar en RBR

SI alguien me pudiera echar una mano seria de agradecer , incluso podiamos hacer un tutorial para aquellos interesados , que por menos de 15 euros tenemos un display sencillo para nuestros simuladoress.

Gracias de antemano y ojala quitemos algo en limpio de esto
avatar
adriangz

Mensajes : 16
Fecha de inscripción : 23/04/2012

Ver perfil de usuario

Volver arriba Ir abajo

Re: Ayuda Arduino Y Display TM1638

Mensaje  manc0ntr0 el Dom 29 Ene - 15:55

Yo he empezado a trastear con esto hace muy poco y tengo bajado el código que hay colgado en x-sim para usar con su software.
De momento a mi me funciona aunque el código que yo uso le pasa directamente el valor máximo de rpm a Arduino por lo que es fijo y hay que cambiarlo con cada coche para que los LED se enciendan bien. Marcha y velocidad las muestra correctamente. No he probado otros valores.
En 900grados hay un chaval que hizo un código que muestra también las rpm de forma numérica o la gasolina pero a mi no me funciona su configuración de x-sim, da error de escritura en el puerto COM de la Arduino. No me he pegado mucho con él, he puesto un par de mensajes en el foro pero o bien entran poco por allí o bien pasan de contestar porque nadie ha dicho ni media palabra.


Lo que hace falta es el software de x-sim, que se usa para extraer datos de juegos o periféricos y trasladarlos a cockpits en movimiento de forma que se ajusten a lo que pasa en el juego.
También se puede usar para esto ya que configuras qué enviar a través del puerto serie y luego Arduino lo lee y lo muestra en pantalla.

Con ese mismo software de x-sim ayer trasteando también he sido capaz de que pCARS mostrase los datos. No así Asseto, rFactor 2 o Dirt Rally que son los que estuve probando

manc0ntr0

Mensajes : 436
Fecha de inscripción : 03/06/2010

Ver perfil de usuario

Volver arriba Ir abajo

Re: Ayuda Arduino Y Display TM1638

Mensaje  adriangz el Dom 29 Ene - 22:07

Si lo del software de x-Sim lo vi lo descargue con el codigo , lo que no logro entender es el sofware ese , se me resiste para assetto tenia un codigo y un sotware bastante simple abrias el exe y configurabas en puerto COM y via funcionando, pero creo que con la version actual se Assetto ya n sirve.
La verdad es que tengo los otro simuladores abandonados solo le dedico tiempo a RBR , si me pudieras echar una mano con el x-Sim  te lo agradeceria
avatar
adriangz

Mensajes : 16
Fecha de inscripción : 23/04/2012

Ver perfil de usuario

Volver arriba Ir abajo

Re: Ayuda Arduino Y Display TM1638

Mensaje  manc0ntr0 el Lun 30 Ene - 2:01

A mi el que lleva cada juego su programa para enviar datos no me funciona. No sé si es la versión de batrako la que tú dices. Yo ejecuto el programa pero se queda colgado, no sé si por ser de 64bits o algo. Ni idea.

x-sim no es complicado de usar, al menos para lo que nosotros queremos hacer que es rpm, velocidad y marcha.
Tienes 2 programas: extractor y converter.
En el extractor añades los juegos y se les asigna su plugin correspondiente.
En el converter creas los "ejes" que obtendrán información del juego y la enviarán al puerto serie, es decir, a la Arduino.
Luego con el sketch hecho para leer y tratar esa trama serie lo envías al TM1638.

Tienes varios hilos de donde sacar información, aunque son parecidos pero no iguales. A mi me ha funcionado el del foro de x-sim. Hoy que estoy en el trabajo he estado tocando y aprendiendo cosinas del display ya que quiero poder resetear rpm máximas para cada coche pulsando un botón de la placa.

http://900grados.es/foro/showthread.php?92-Tutorial-construye-tu-display-barato-con-Arduino-TM1638 -> este está en español pero la descarga de la configuración de x-sim no va y no parece que nadie conteste. Puede que le envíe un privado al creador a ver si dice algo.

http://www.x-sim.de/forum/viewtopic.php?f=40&t=155&sid=bc9361a774365193d2a76db1012d898c -> este es el que me ha funcionado desde el primer momento. La putada es que tiene las rpm máximas fijas y con un Evo que llega a 5500 más o menos no se encienden todos los LED.

http://batrako.blogspot.com.es/2013/01/posibilidades-del-arduino-en-simracing.html -> este puede ser el que tú dices, pero a mi no me ha funcionado en ningún momento.

https://www.xsimulator.net/community/threads/cardashx-tm1638-sketch-for-gamedash.7276/ -> este es de una página que tienen un software similar al x-sim. Me la ha dicho un chaval que consiguió hacer el reset de rpm pero hace años que dejó de usar x-sim. Lo malo es que ese soft es de pago, 19€ por 1 año de suscripción. Si logro hacer que x-sim funcione como quiero de momento no lo voy a comprar, aunque de ese hilo se pueden sacar cosas para el código de Arduino que es lo que más me interesa ahora mismo, aprender a hacer el código que quiero.


Te dejo este enlace también del que yo he aprendido varias cosas que creo que me serán útiles. Es un artículo sobre el TM1638 y su manejo desde Arduino, como por ejemplo leer qué botón pulsas y hacer algo en consecuencia: http://tronixstuff.com/2012/03/11/arduino-and-tm1638-led-display-modules/

manc0ntr0

Mensajes : 436
Fecha de inscripción : 03/06/2010

Ver perfil de usuario

Volver arriba Ir abajo

Re: Ayuda Arduino Y Display TM1638

Mensaje  adriangz el Mar 31 Ene - 12:30

Intento seguir tus pasos pero no logro arrancar rbr con el extractor me da error 196  y n se es por el software o por una mala configuracion ....
Si el Software de assetto es ese el que utilizava pero ya no funciona en versiones mas recientes.
avatar
adriangz

Mensajes : 16
Fecha de inscripción : 23/04/2012

Ver perfil de usuario

Volver arriba Ir abajo

Re: Ayuda Arduino Y Display TM1638

Mensaje  manc0ntr0 el Mar 31 Ene - 23:16

Sólo te dice error 196, no indica qué es ese error?
En el extractor lo más conveniente es dar a autobuscar y él solo añade los juegos que encuentra y asigna el plugin correspondiente a cada uno.
Luego el resto de parámetros del perfil yo lo tengo todo en no: no tengo actuadores, no tengo joystick de entrada, etc.


Estoy haciendo un código desde 0. Primero de todo estoy intentando que con 2 botones de la placa pueda hacer reset a las rpm máximas y con otro capturar el máximo valor recogido durante un tiempo X. Así de esta forma le doy antes de salir y como el coche antes de nada se pone a fondo, espero que las recoja bien. A ver si esta noche puedo avanzar algo más.

Cualquier duda que tengas ponla por aquí a ver si entre los 2 hacemos que esto funcione bien.

manc0ntr0

Mensajes : 436
Fecha de inscripción : 03/06/2010

Ver perfil de usuario

Volver arriba Ir abajo

Re: Ayuda Arduino Y Display TM1638

Mensaje  manc0ntr0 el Mar 7 Feb - 14:20

Bueno, tras mucho trastear al final creo que esto más o menos funciona. Al menos en RBR va bien. En pCARS funciona un rato y luego se desconecta.
Ayer probé el Dirt Rally y no funciona, aparte de que x-sim no lo detecta de forma automática y hay que añadirlo a mano. El resto de momento no he probado.

Ahora mismo los LED se encienden más o menos a partir del 75% de las rpm máximas. He dividido dichas rpm máximas entre 50 y juego con 10 combinaciones de LED desde el primer LED verde a todos en rojo. Si se quiere ajustar a más o menos porcentaje sólo hay que cambiar el número de divisiones y la división a partir de la que se quiere mostrar la combinación deseada. Suena un poco raro pero una vez se ve en el código se entiende mejor.
Por cierto la combinación es ir encendiendo LED verde de izquierda a derecha menos los 2 últimos que se encienden en rojo, de ahí pasa a todos en rojo y luego parpadea.

Te dejo el código por si lo quieres probar. Está sin pulir ya que hay cosas que se pueden quitar y quiero ordenarlo un poco pero al menos se puede probar.

Recuerda poner los pines en el sketch de acuerdo a como tú los tengas puestos en Arduino. Deberías tener en tu sketch una línea del estilo "TM1638 module(5, 4, 3);" o "InvertedTM1638 module(5, 4, 3);". La pones como la que te funcione que esa es para mi Arduino y no tienen porqué coincidir.

Código:
//  X-Sim Sample code for receiving OBD2 values from the extractor without using the converter
//  OBD2 is industry standard, X-Sim will additionally expand the OBD2 PID with gear and other values
//
//  Usage:
//  Arduino has to be connected to a free USB port on the computer where the extractor is running
//  Open the extractor and open the settings menu, there you have to select the OBD2 menu
//  Add now your arduino comport to the OBD2 list.
//  After closing the dialog you will see the arduino LED will be enabled which represents receiving data.
//  After closing the extractor application the LED will switch off.
//  Use this code to insert your own display code at the fitting positions
//  Copyright 2013 Martin Wiedenbauer, X-Sim.de
//
//  References:
//  http://en.wikipedia.org/wiki/OBD-II_PIDs
//  http://elmelectronics.com/DSheets/ELM327DS.pdf
//  http://www.x-sim.de


#include <InvertedTM1638.h>
#include <TM1638.h>
#include <TM1638QYF.h>
#include <TM1640.h>
#include <TM16XX.h>
#include <TM16XXFonts.h>


// define a module on data pin 5, clock pin 4 and strobe pin 3
InvertedTM1638 module(5, 4, 3);

//définition des broches du décodeur 7 segments (vous pouvez changer
//les numéros si bon vous semble)
const int bit_A= 6;
const int bit_B= 7;
const int bit_C= 8;
const int bit_D= 9;
//Definition des Pin pour Affichage Neutral et reverse
const int bit_E= 10;
const int bit_F= 11;
const int ledPin =  13;   // the number of the LED pin
//byte buttons;
unsigned int rpmmax = 7000;
unsigned int rpmlast;
int setrpm = 0;
int mode = 1;

//long previousMillis = 0;        // will store last time LED was updated

// the follow variables is a long because the time, measured in miliseconds,
// will quickly become a bigger number than can be stored in an int.
//long interval = 40;           // interval at which to blink (milliseconds)

bool extractordetected=false;   //Will get updated from last positive or negative receive
int receivebuffer[20]={0};      //Receive buffer


void setup()
{
   pinMode(13, OUTPUT); //Arduino UNO LED off
   digitalWrite(13, LOW);
   Serial.begin(9600);
    //Do here stuff to init display and zero to default
   pinMode(ledPin, OUTPUT);
   //The pins are all outputs
   pinMode(bit_A, OUTPUT);
   pinMode(bit_B, OUTPUT);
   pinMode(bit_C, OUTPUT);
   pinMode(bit_D, OUTPUT);
   pinMode(bit_E, OUTPUT);
   pinMode(bit_F, OUTPUT);

   //The pins are all set to low for the BCD decoder and up to neutral and reverse control
   digitalWrite(bit_A, LOW);
   digitalWrite(bit_B, LOW);
   digitalWrite(bit_C, LOW);
   digitalWrite(bit_D, LOW);
   digitalWrite(bit_E, HIGH);
   digitalWrite(bit_F, HIGH);

   // initialize the screen:
   module.clearDisplay();              //clears the display from garbage if any
   module.setDisplayToString( "Fran",0,2);    //prints the banner
  
   module.setLEDs(0x8001);
   delay(200);
   module.setLEDs(0xc003);
   delay(200);
   module.setLEDs(0xe007);
   delay(200);
   module.setLEDs(0xf00f);
   delay(200);
   module.setLEDs(0xe417);
   delay(200);
   module.setLEDs(0xcc33);
   delay(200);
   module.setLEDs(0x8e71);
   delay(200);
   module.setLEDs(0x0ff0);
   delay(200);
   module.setLEDs(0b00000000 | 0b00000000<< 8 );
   delay(200);
   module.setLEDs(0b11111111 | 0b11111111<< 8 );
   delay(200);
   module.setLEDs(0b00000000 | 0b00000000<< 8 );
   delay(200);
   module.setLEDs(0b11111111 | 0b11111111<< 8 );
   delay(200);
   module.setLEDs(0b00000000 | 0b00000000<< 8 );
   delay(200);
   module.setLEDs(0b11111111 | 0b11111111<< 8 );
   delay(200);
   module.setLEDs(0b00000000 | 0b00000000<< 8 );
   delay(3000);                         //small delay 3 sec
   module.clearDisplay();              //clears the 1st display
}


int HexToInt(int c)
{
   if (c >= '0' && c <= '9')
   {
      return c - '0';
   }
   else if (c >= 'a' && c <= 'f')
   {
      return c - 'a' + 10;
   }
   else if (c >= 'A' && c <= 'F')
   {
      return c - 'A' + 10;
   }
   else
   {
      return -1; // getting here is bad: it means the character was invalid
   }
}

int ParseReceiveBuffer(int commandhighbyte, int commandlowbyte, int receivelength)
{
   //First character is removed of the receivebuffer string and must not be verified again
   if( receivebuffer[0]=='1' && receivebuffer[2]==commandhighbyte && receivebuffer[3]==commandlowbyte )
   {
      //Parse 2 byte values on position 5 and 6 in the buffer string
      if(receivelength==7)
      {
         int highresult=HexToInt(receivebuffer[5]);
         int lowresult =HexToInt(receivebuffer[6]);
         if(highresult==-1 || lowresult==-1){return -1;}
         return ((16*highresult) + lowresult);
      }
      //Parse 4 byte values on position 5,6,8 and 9 in the buffer string
      if(receivelength==10)
      {
         int tophighresult=HexToInt(receivebuffer[5]);
         int toplowresult =HexToInt(receivebuffer[6]);
         int highresult=HexToInt(receivebuffer[8]);
         int lowresult =HexToInt(receivebuffer[9]);
         if(tophighresult==-1 || toplowresult==-1 || highresult==-1 || lowresult==-1){return -1;}
         return ((4096*tophighresult) + (256*toplowresult) + (16*highresult) + lowresult);
      }
   }
   return -1; //Something is wrong with the returned OBD2 echo command byte
}

//This function will wait for the first character in receivetrigger and will parse the result
int ReceiveValueWithTimeout(int receivetrigger, int commandhighbyte, int commandlowbyte, int receivelength)
{
   int arduinoserialbuffer=0;
   int buffercount=-1;
   for(int z=0; z < 500; z++) //500ms timeout should be enough
   {
      while(Serial.available())
      {
         if(buffercount==-1)
         {
            arduinoserialbuffer = Serial.read();
            if(arduinoserialbuffer != receivetrigger) //Wait until the trigger is reached, ignore echo, first character is not in the buffer
            {
               buffercount=-1;
            }
            else
            {
               buffercount=0;
            }
         }
         else
         {
            arduinoserialbuffer = Serial.read();
            receivebuffer[buffercount]=arduinoserialbuffer;
            buffercount++;
            if(buffercount > receivelength) //buffer has now waitlen character length
            {
               return ParseReceiveBuffer(commandhighbyte, commandlowbyte, receivelength);
               buffercount=-1;
            }
         }
      }
      delay(1);
   }
   return -1;
}

void SendEchoDisabled() //not used here and a part of the OBD2 ELM327 specifications, as INFO
{
   //ATE0 Echo disabled
   Serial.write('A');
   Serial.write('T');
   Serial.write('E');
   Serial.write('0');
   Serial.write('\r');
}

//010c Request RPM, remember:  OBD2 RPM is ((A*256)+B)/4
int GetOBD2RpmValue()
{
   //010c
   Serial.write('0');
   Serial.write('1');
   Serial.write('0');
   Serial.write('c');
   Serial.write('\r');
   return ReceiveValueWithTimeout('4','0','C',10);
}

//010d Request speed in kmh
int GetOBD2SpeedValue()
{
   //010d
   Serial.write('0');
   Serial.write('1');
   Serial.write('0');
   Serial.write('d');
   Serial.write('\r');
   return ReceiveValueWithTimeout('4','0','D',7);
}

//01e0 Request gear number
int GetOBD2GearValue()
{
   //01e0
   Serial.write('0');
   Serial.write('1');
   Serial.write('e');
   Serial.write('0');
   Serial.write('\r');
   return ReceiveValueWithTimeout('4','E','0',7);
}

//01e1 Request curent position
int GetOBD2PositionValue()
{
   //01e0
   Serial.write('0');
   Serial.write('1');
   Serial.write('e');
   Serial.write('1');
   Serial.write('\r');
   return ReceiveValueWithTimeout('4','E','1',7);
}

//function to display the gear on the big 7 segmemts display
void afficher(char chiffre)
{
   // pin are all set to lower levelet high level for neutral reverse
   digitalWrite(bit_A, LOW);
   digitalWrite(bit_B, LOW);
   digitalWrite(bit_C, LOW);
   digitalWrite(bit_D, LOW);
   digitalWrite(bit_E, HIGH);
   digitalWrite(bit_F, HIGH);
   //display the numerical needed
   if(chiffre >= 8)
   {
      digitalWrite(bit_D, HIGH);
      chiffre= chiffre - 8;
   }
   if(chiffre>= 4)
   {
      digitalWrite(bit_C, HIGH);
      chiffre= chiffre - 4;
   }
   if(chiffre >= 2)
   {
      digitalWrite(bit_B, HIGH);
      chiffre= chiffre - 2;
   }
   if(chiffre >= 1)
   {
      digitalWrite(bit_A, HIGH);
      chiffre= chiffre - 1;
   }
}

void loop()
{
    //unsigned long currentMillis = millis();
    int          i ;
   String          neutral = "n";                // sets the character for neutral
   String          reverse = "r";                // sets the character for reverse
    unsigned int    rpmleds; //holds the 8 leds values
    char          message [8];     // variable to display the message on the display
   int          speed = 0;
   unsigned int    rpm;
   unsigned int   pos;
   int          gear = GetOBD2GearValue();
   byte          button;
   String          output;
  
   while( gear >= 0 )
   {
      //unsigned long currentMillis = millis();  
        if(extractordetected==false)
      {
         SendEchoDisabled();   //Will cause a OK\r as answer from the extractor, ignored in this code
         extractordetected=true;
      }
      //Read all values
      gear = GetOBD2GearValue(); //Notice: offset +1 because of reverse gear
      speed = GetOBD2SpeedValue();
      rpm  = GetOBD2RpmValue();
      pos = GetOBD2PositionValue();
        rpm = rpm/4;
        //unsigned long currentMillis = millis();
      
      button = module.getButtons();
      
      switch ( button )
      {
         case 0b00000001:
            mode = 1;
            module.clearDisplay();
            output = "Gear Spd";
            module.setDisplayToString( output );
                delay ( 500 );
            module.clearDisplay();
            break;
         case 0b00000010:
            mode = 2;
            module.clearDisplay();
            output = "Gear Rpm";
            module.setDisplayToString( output );
                delay ( 500 );
            module.clearDisplay();
            break;
         case 0b00000100:
            mode = 3;
            module.clearDisplay();
            output = "Posion";
            module.setDisplayToString( output );
            delay ( 500 );
            module.clearDisplay();
            break;
         case 0b00001000:   mode = 4;
            break;
         case 0b00010000:   mode = 5;
            break;
         case 0b00100000:   mode = 6;
            break;
         case 0b01000000:   mode = 7;
            break;
         case 0b10000000:  
            mode = 8;
            module.clearDisplay();
            switch ( setrpm )
                {
                  case 0:
                    setrpm = 1;
                    output = "Set RPM";
                    rpmmax = 100;
                    module.setDisplayToString( "Set RPM" );
                    mode = 8;
                    delay (500);
                    break;
                    
                  case 1:
                    setrpm = 0;
                    module.clearDisplay();
               module.setDisplayToString( "Gear Spd" );
                    mode = 1;
                    delay (500);
                    break;
                }
            break;
      }
      
      if(gear!=-1 && speed!=-1 && rpm!=-1)
      {
         digitalWrite(13, HIGH); //We have connection and all values are ok, turn on the LED
        
         //Do here your LCD or display stuff
        
         if ( mode == 1 )
         {
            module.setDisplayToDecNumber( speed, 0, false );  //displays numerical the speed
            if ( gear >= 2 and gear <10 )
            {
               module.setDisplayDigit( gear - 1, 0, false );   // displays numerical value of the current gear
            }
            if ( gear == 1 )
            {
               module.setDisplayToString( neutral, 0, 0 );  // displays the character for neutral
            }
            if ( gear == 0 )
            {                        // -1 that reprecents reverse rollover to 255 so...
               module.setDisplayToString( reverse, 0, 0 );  // displays the character for reverse
            }
         }
        
         if ( mode == 2 )
         {
            module.setDisplayToDecNumber( rpm, 0, false );  //displays numerical the speed
            if ( gear >= 2 and gear <10 )
            {
               module.setDisplayDigit( gear - 1, 0, false );   // displays numerical value of the current gear
            }
            if ( gear == 1 )
            {
               module.setDisplayToString( neutral, 0, 0 );  // displays the character for neutral
            }
            if ( gear == 0 )
            {                        // -1 that reprecents reverse rollover to 255 so...
               module.setDisplayToString( reverse, 0, 0 );  // displays the character for reverse
            }
         }
        
         if ( mode == 3 )
         {
            module.setDisplayToDecNumber( pos, 0, false );
            if ( gear >= 2 and gear <10 )
            {
               module.setDisplayDigit( gear - 1, 0, false );   // displays numerical value of the current gear
            }
            if ( gear == 1 )
            {
               module.setDisplayToString( neutral, 0, 0 );  // displays the character for neutral
            }
            if ( gear == 0 )
            {                        // -1 that reprecents reverse rollover to 255 so...
               module.setDisplayToString( reverse, 0, 0 );  // displays the character for reverse
            }
         }

         if ( mode == 8 )
         {
                module.setDisplayToDecNumber( rpmmax, 0, false );
                if ( rpmlast > ( rpmmax + 200 ) )
            {
               rpmmax = rpmlast;
                }
         }
        
        
         //color the leds
        
            rpmleds = map( rpm,0,rpmmax,0,50 );    // distributes the rpm level to the 8 leds + 1 for shift change
         if ( rpmleds<=39 ) {
            module.setLEDs(0x0000);
         }
         if (rpmleds==40){
          module.setLEDs(0x0001);
         }
         if ( rpmleds==41 ) {
            module.setLEDs(0x0003);
         }
         if ( rpmleds==42 ) {
            module.setLEDs(0x0007);
         }
         if ( rpmleds==43 ) {
            module.setLEDs(0x000f);
         }
         if ( rpmleds==44 ) {
            module.setLEDs(0x001f);
         }
         if ( rpmleds==45 ) {
            module.setLEDs(0x003f);
         }
            if ( rpmleds==46 ) {
            module.setLEDs(0x403f);
         }
            if ( rpmleds==47 ) {
            module.setLEDs(0xc03f);
         }
         if ( rpmleds==48 ) {
            module.setLEDs(0xff00);
         }
         if ( rpmleds>=49 ) {
            module.setLEDs(0xffff);
            delay ( 20 );
            module.setLEDs(0x0000);
            delay ( 20 );
         }
      }        
      
      rpmlast = rpm;
   }

   extractordetected=false;
   digitalWrite(13, LOW); //No connection, turn off the LED

   //Do here stuff to set display to zero or default
   // module.setDisplayToString( "no data" );    //prints the banner
   //delay(1000);
   module.clearDisplay();
}


El perfil para el RBR en el Extractor:



Y para que funcione directamente con el Extractor hay que añadir la Arduino en la configuración de OBD2. Con esto no hay que usar el Converter para nada:



Por último dejo un cutre-vídeo que he grabado con el móvil en un momento. Está ahí puesto con un cartón pero al menos sirve para probar si funciona jaja.




Ya me dirás qué tal te fue si lo pruebas.

manc0ntr0

Mensajes : 436
Fecha de inscripción : 03/06/2010

Ver perfil de usuario

Volver arriba Ir abajo

Re: Ayuda Arduino Y Display TM1638

Mensaje  adriangz el Mar 7 Feb - 16:46

Que gran trabajo que te curraste te FELICITO
Pues te comento parece que ahora lo veo mas claro para que funcione, ahora si que se conecta con RBR , pero no marca nada de info ni encienden los leds , ah mi TM1638 es diferente , solo leds rojos , pero n deveria influir para el resto no?
Pulsando los Botones del display aparece lo mismo que en tu video pero no llega a marcar info se queda a cero todo y los leds no alumbran , revise los cables con el codigo como me dijiste pero aun asi con tu codigo y tus fotos que son de gran ayuda logre que se necendiera el display en RBR solo me falta la info , pero yo de codigo na de na ni papa¡¡
Supongo que algo hice mal, esta tarde con calma que tengo tiempo trasteare un rato , haber si logro hacerla funcionar por fin
avatar
adriangz

Mensajes : 16
Fecha de inscripción : 23/04/2012

Ver perfil de usuario

Volver arriba Ir abajo

Re: Ayuda Arduino Y Display TM1638

Mensaje  manc0ntr0 el Mar 7 Feb - 17:43

Si tu placa es la que lleva los LED sólo rojo cambian algunas cosas pero al menos marcha y velocidad o rpm numéricas lo debería mostrar. Una vez funcione corregimos los LED.
La placa en cuanto arrancas el Extractor debería marcar una "n" a la izquierda del todo, eso significa que hay comunicación entre Extractor y Arduino.

Una cosa, hay que esperar a que termine la cuenta atrás para que empiece a mostrar algo eh.
Entiendo además que has añadido el juego al Extractor como se ve en la foto de arriba. Si le has dado a búsqueda automática y lo ha encontrado, al dar a Edit debería verse tal que así:



Luego das al botón azul de abajo que pone "Play Game" y debería cantar en inglés "game detected" y arrancar el juego.

Otra cosa, con lo de los pines no te compliques la vida. Coge el sketch que hayas probado y funcione la información y copias la distribución de pines de él y lo pones en el que yo pegué. Es lo mejor ya que si te equivocas en un pin te vas a volver loco buscando sin encontrar la solución.

manc0ntr0

Mensajes : 436
Fecha de inscripción : 03/06/2010

Ver perfil de usuario

Volver arriba Ir abajo

Re: Ayuda Arduino Y Display TM1638

Mensaje  adriangz el Mar 7 Feb - 18:01

Si todo eso correcto lo tengo como en las fotos , cuando arranca pone fran en el display encienden todos los leds y eso arranco el rbr dice lo de game detected y todo pero dentro del rbr queda con la n en la esquina y no hace nada mas . habra que configurar algo en el comberted? acabo de desenchufar la otra arduino que tengo para el H por si habia conflicto o algo pero nada, sigue igual .
Alguna idea?
avatar
adriangz

Mensajes : 16
Fecha de inscripción : 23/04/2012

Ver perfil de usuario

Volver arriba Ir abajo

Re: Ayuda Arduino Y Display TM1638

Mensaje  manc0ntr0 el Mar 7 Feb - 19:54

El Converter aquí no se usa, sólo el Extractor. Es raro porque no tiene mayor complicación una vez elegimos bien el puerto COM de la Arduino para que envíe datos obd2.
¿Has probado con algún otro juego a ver si va?
No se me ocurre nada raro, salvo que tus pins y los míos no sean los mismos y Arduino no tenga cómo enviar datos al TM1638

manc0ntr0

Mensajes : 436
Fecha de inscripción : 03/06/2010

Ver perfil de usuario

Volver arriba Ir abajo

Re: Ayuda Arduino Y Display TM1638

Mensaje  manc0ntr0 el Mar 7 Feb - 20:36

Bueno, en Assetto funcionando. Aunque con una pega ya conocida y es que en el sketch hay que restar 1 a las marchas porque sino va siempre una por arriba, es decir si vas en 1ª te dice que vas en 2ª y así.
Al menos funciona.

He modificado una cosa en el script que utiliza el programa para buscar el juego y también he actualizado la .dll que hay una más actual en el foro.

manc0ntr0

Mensajes : 436
Fecha de inscripción : 03/06/2010

Ver perfil de usuario

Volver arriba Ir abajo

Re: Ayuda Arduino Y Display TM1638

Mensaje  adriangz el Vie 10 Feb - 12:28

Si probe en Asseto que es el unico Sim que tengo aparte de rbr , y nada ai si que no me aparece ni la N , en que placa la tienes conectada ? la mia esta e una Nano con chip 328p , si me puedes mandar una foto de las conexiones para comprobar que estea igual...
Aunque deveria funcionar porque en versiones anteriores de asseto funcionaba perfectamente , algo se me debe escapar seguro que una tonteria pero nn encuentro el fallo .....
avatar
adriangz

Mensajes : 16
Fecha de inscripción : 23/04/2012

Ver perfil de usuario

Volver arriba Ir abajo

Re: Ayuda Arduino Y Display TM1638

Mensaje  adriangz el Vie 10 Feb - 12:50

En RBR funcionando , solucionado la placa tiene 2 GND cambie de uno para otro y empezo a marcar

avatar
adriangz

Mensajes : 16
Fecha de inscripción : 23/04/2012

Ver perfil de usuario

Volver arriba Ir abajo

Re: Ayuda Arduino Y Display TM1638

Mensaje  sergiomaxi el Sáb 11 Feb - 12:27

Hola,buenas, este pos me viene perfecto para mi tambien, estoy haciendo exactamente lo mismo,con esa isma tm de leds rojos, a maiores queri añadir un display solo para marchas con otra nano v3 independiente de la TM y la pegunta es..como conectar y si funcionaria.
avatar
sergiomaxi

Mensajes : 11
Fecha de inscripción : 09/02/2017

Ver perfil de usuario

Volver arriba Ir abajo

Re: Ayuda Arduino Y Display TM1638

Mensaje  manc0ntr0 el Dom 12 Feb - 14:02

adriangz escribió:En RBR funcionando , solucionado la placa tiene 2 GND cambie de uno para otro y empezo a marcar

 

Vaya, más o menos los tiros podían venir por ahí ya que si a mi me funciona, tenía que funcionarte a ti también.
Ahora mismo no puedo sacar la foto a las conexiones pero si la necesitas aviso que lo busco y las hago.

sergiomaxi escribió:Hola,buenas, este pos me viene perfecto para mi tambien, estoy haciendo exactamente lo mismo,con esa isma tm de leds rojos, a maiores queri añadir un display solo para marchas con otra nano v3 independiente de la TM y la pegunta es..como conectar y si funcionaria.

No sé muy bien cómo funcionan esos display pero debe ser algo parecido a la TM. En el hilo de x-sim y obd2 el chaval que colgó el código lo hizo en origen para usar combinados un display para la marcha actual y la TM para el resto.
No debería hacer falta que pongas una cosa en cada nano, pueden ir los dos conectados a la misma placa.

manc0ntr0

Mensajes : 436
Fecha de inscripción : 03/06/2010

Ver perfil de usuario

Volver arriba Ir abajo

Re: Ayuda Arduino Y Display TM1638

Mensaje  sergiomaxi el Dom 12 Feb - 17:47

no doy encontrado el hilo jaja ademas el display no tiene las mismas conexiones que la tm,tiene dos distintas,yo si las pongo individual es por evitar problemas,aunque en una sola mas comodo menos cables
avatar
sergiomaxi

Mensajes : 11
Fecha de inscripción : 09/02/2017

Ver perfil de usuario

Volver arriba Ir abajo

Re: Ayuda Arduino Y Display TM1638

Mensaje  manc0ntr0 el Dom 12 Feb - 19:39

sergiomaxi escribió:no doy encontrado el hilo jaja ademas el display no tiene las mismas conexiones que la tm,tiene dos distintas,yo si las pongo individual es por evitar problemas,aunque en una sola mas comodo menos cables

A partir de este mensaje comentan cosas acerca de poner la TM1638 en conjunción con un display de 8 segmentos para la marcha.
http://www.x-sim.de/forum/viewtopic.php?f=40&t=1083&start=90#p10322

Unos mensajes más abajo tienes hasta el código que usó el chaval por si quieres probarlo.
No sé qué conexiones lleva el display pero casi te diría que es fácil que vayan en paralelo a la TM en cuanto a los 3 pines de datos y control.

Por cierto, también puedes mirar en la página de Simtools que me consta que está más activa que x-sim. La putada es que hay que pagar el software, unos 19€ me parece

manc0ntr0

Mensajes : 436
Fecha de inscripción : 03/06/2010

Ver perfil de usuario

Volver arriba Ir abajo

Re: Ayuda Arduino Y Display TM1638

Mensaje  manc0ntr0 el Mar 14 Mar - 22:42

Buenas!

Vete borrando todos los sketchs que tengas y si cuadra hasta el x-sim.

http://www.racedepartment.com/downloads/simhub-diy-sim-racing-dash.10252/

Con esta aplicación lo tienes todo: soporte para un montón de pantallas diferentes, tiene un menú para ir diciendo lo que tienes y te genera él solo el sketch para subirlo al Arduino.
Y luego tiene una app normal con la lista de juegos, configuras la ruta al juego y a funcionar.
Y si quieres puedes modificar al gusto funcionamiento de LEDs, info en pantalla, las diferentes pantallas por las que puedes ir pasando, etc.
Está genial. Yo la llevo usando semanas con Assetto y de lujo. Ahora a ver qué tal el RBR que he entrado y parece ir bien.

Ojo, para que funcione hay que copiar dos archivos de la carpeta de plugins que viene en el paquete al directorio del RBR.

manc0ntr0

Mensajes : 436
Fecha de inscripción : 03/06/2010

Ver perfil de usuario

Volver arriba Ir abajo

Re: Ayuda Arduino Y Display TM1638

Mensaje  adriangz el Miér 15 Mar - 12:20

Ohh que bueno ¡¡¡ esto es un adelanto grandisimo .
gracias por el aporte esta tarde si tengo tiempo lo pruebo , aparte me viene genial q tube q formatear el pc y aun no tengo nada de software para el display , aun voy tener que hacer un pedido para mejorar el dispaly
avatar
adriangz

Mensajes : 16
Fecha de inscripción : 23/04/2012

Ver perfil de usuario

Volver arriba Ir abajo

Re: Ayuda Arduino Y Display TM1638

Mensaje  manc0ntr0 el Miér 15 Mar - 20:25

Por ahora no funciona fino del todo ya que al meter varios plugins algo ha liado que a veces se "traba" un poco. Me ha pasado antes una versión nueva para que la pruebe ya que fui yo el que se dio cuenta del problemilla y parece que hoy por la noche subirá esa nueva versión.

En el RBR justo acabo de estar yo jugando y va perfecto. Detecta las rpm de cada coche y tanto marcha como velocidad los marca correcto.

Si estás pensando en aumentar los displays, esta app te viene de lujo porque tiene un configurador para el sketch de Arduino que le dices lo que tienes y a correr.

Ya me contarás qué tal.

manc0ntr0

Mensajes : 436
Fecha de inscripción : 03/06/2010

Ver perfil de usuario

Volver arriba Ir abajo

Re: Ayuda Arduino Y Display TM1638

Mensaje  manc0ntr0 el Jue 16 Mar - 1:33

Parece que ya está solucionado. Además lo ha afinado más para que consuma menos recursos.
http://www.racedepartment.com/downloads/simhub-diy-sim-racing-dash.10252/

Por cierto, mira bien en la carpeta Game Plugins, ahí te dice lo que has de hacer. Hay que copiar 2 archivos a la carpeta del RBR -o las carpetas si tienes varios.
Y, por desgracia, no lee las rpm máximas. En el .ini hay una línea donde se ponen las rpm máximas para el coche que haya en ese slot. Si no se es de cambiar mucho, tampoco es tanto jaleo.
Una pena que no sea capaz de hacer algo similar al sketch de x-sim que le dabas al botón y registraba el valor máximo.

manc0ntr0

Mensajes : 436
Fecha de inscripción : 03/06/2010

Ver perfil de usuario

Volver arriba Ir abajo

Re: Ayuda Arduino Y Display TM1638

Mensaje  Contenido patrocinado


Contenido patrocinado


Volver arriba Ir abajo

Volver arriba

- Temas similares

 
Permisos de este foro:
No puedes responder a temas en este foro.