[TUTO] Adaptateur pour SMEG/NAC/Matrice CAN2010 sur BSI CAN2004

Bonjour à tous,

Je souhaite également installer un Smeg + dans la DS3 (2010, bsi évolué) de mon épouse.
J'ai bien compris qu'il fallait utiliser Arduino pour que cela fonctionne mais faut il avoir des connaissances en programmation ?
Assembler la bête ne pause pas de problème il me semble.
Dans l'attente de vous lire.
Jean Michel
 

Hi all,

Took me a while (not enough time because of work). But i finally finished my CAN2010 to CAN2004 box.
3 digital inputs (with pullup enabled) are added on pin D4, D5 and D6 to work with the 3 buttons that are normally connected to the smeg or instrument cluster on newer DS3's. Below you will find the code i made, it includes a state machine for these buttons (MENU, VOL-, VOL+ and Mute). They behave like in the SMEG, they first go slow and then go faster if you keep pushing the buttons. also VOL-+VOL+ = Mute.
Ground for the buttons are connected to the INPUT ground of the power supply. Not after power supply as the ground is also used for the 12V for the light inside the buttons. Otherwise using ground after power supply might mix things up.

NbuUL6N.jpg

WwoURc2.jpg

cCW2ZVq.jpg

bs35AoS.jpg

xkvd5aI.jpg

zniu79v.jpg


I used the following:
Arduino Nano - €1,78
2x MCP2515 module - €2,30
DS3231 RTC module - €1,22
LM2596 powersupply - €0,61

Total price, including shipping was below 10 euros.
Hello, thanks for your input, can you tell me if your box model is available for printing?
 

Bonjour à tous,

Je souhaite également installer un Smeg + dans la DS3 (2010, bsi évolué) de mon épouse.
J'ai bien compris qu'il fallait utiliser Arduino pour que cela fonctionne mais faut il avoir des connaissances en programmation ?
Assembler la bête ne pause pas de problème il me semble.
Dans l'attente de vous lire.
Jean Michel
You do not need to know programming, because the code is ready, all that remains is to upload it to Arduino
 


Bonjour à tous,

Il suffit donc que je télécharge les fichiers de @VLud et cela va régler les problèmes d'affichage de l'heure, de la sélection des langues etc...
Mon Smeg + provient d'une 208 et je l'ai monté dans une ds3 qui n'est pas équipée de ce modèle au départ...
Pensez-vous qu'il soit possible de récupérer les boutons menu, volume plus et moins de la platine des ds3 ?
Dans l'attente de vous lire.
 

Salut à tous, Salut @VLud & @V3nn3tj3 !

Overall, on a daily basis, I have a U0140 error (CAN network pb which displays "Engine Default") linked to the disconnection of the EMF-A + display. If I leave it plugged in (with the hour flashing due to a disconnected battery), I don't have the error. I can move this display in the car but I would like to find the BSI or CAN Sketch setting to turn it off or mimic it.

Did you solve this problem? I'm having the same here. Thanks
 

Yes, it has been solved. The sketch is available on my github page (somewhere linked in this thread). It is a complete new sketch but using the conversions of VLud.

I have a second version (only my use at this time) that contains all conversation for CAN2004 <=> CAN2010. Including setting, profiles, personalisations, etc. All working. I can not share at this time as the source of information asked me not to. I'm looking to obfuscate it so i can in the future.
 


....

Nothing else to say.

Use the update I just pushed.

I know, it seems they keep good control on all documents marked as 'internal use'. So need to be carefull. Don't want to violate someones trust.

The sketch will not fully work. It's missing 2 other frames, look at mine...

Code:
https://github.com/V3nn3tj3/arduino-psa-nac-interface-public
 


hello i hope someone could help i have c5x7 i have working nac using the sketch and arduino
but i want to install a cirroco from c5 aircross i have tested it and it works in c5x7 but there we have the problem
which is that the start stop (eco) esp and parking sensors switches are all connected to the matrix on the c5x7 dashboard.
i need to be able to get the nac to turn on and off these functions is this possible ?

the other thing is my c5x7 is 6 speed semi automatic and with cirroco it does not show gear position information
also the brake fluid low warning lamp always on.

note i got the cirroco to only work when connected together on same can bus output from the arduino
i dont mind building another arduino and fixing behind dash cirroco
the other thing i have noticed is the nac does not show when car has a fault etc

any help or advice please it is all for my own use i am happy to pay if someone can assist

i have had this nac in my car for a year now and really want to install but with the above problems resolved
any help would be very gratefull

thank you
 
  • J'aime
Reactions: Manuel Pérez

Here is the sketch a friend (Felipe Migliori) and me developed to convert the messages from CAN2004 to CAN2010 for CIROCCO use. We have tested on Citroen C5 and DS3 with good results. Some of this sketch was already implemented to this vLud work. There are some improvements to the fuel and temperature gauges, trip reset, brightness control and uses the red theme from Peugeot 3008 as shift light, or always ON as you can define (sometimes Peugeot 3008 cluster does not have the red theme enabled or available).
It is a way to who only wants the CIROCCO to be converted.

Code:
#include <SPI.h>
#include <mcp2515.h>


const int CS_PIN_CAN0 = 10;
const int CS_PIN_CAN1 = 9;
MCP2515 CAN0(CS_PIN_CAN0); // recebe da rede can
MCP2515 CAN1(CS_PIN_CAN1); // envia pro painel
struct can_frame canMsgRcv;
struct can_frame canMsgSnd;
struct can_frame canMsgSndT; //envia mensagens da tela pra bsi
struct can_frame canMsgRcvT; //recebido can da tela
int id; //canMsgRcv.can_id
int len; //canMsgRcv.can_dlc
int idT; //canMsgRcvT.can_id
int lenT; //canMsgRcvT.can_dlc
int batual; //brilho atual
int bnovo; //novo brilho
int rpmmax;
int rpm; //valor da rpm


//-----------------------------------
//AREA DE CONFIGURACOES
bool shiftlight = true; //para ativar ou desativar shiftlight
int corte = 5500; //rpm do corte ajuste aqui
bool botaobrilho = false; //True para ajustar o brilho pelo botao lateral, false para a BSI ajustar o brilho
bool debug = false; //ativar para monitorar o codigo
//-----------------------------------


void setup() {


  SPI.begin();
  CAN0.reset();
  CAN0.setBitrate(CAN_125KBPS,MCP_8MHZ);
  CAN0.setNormalMode();
  CAN1.reset();
  CAN1.setBitrate(CAN_125KBPS,MCP_8MHZ);
  CAN1.setNormalMode();

 
  //while (!Serial);
  if (debug == true) {
  Serial.begin(115200); 
  Serial.println("RODANDO EM MODO DEPURAÇÃO!");
  }
 

 
 rpmmax = corte * 0.0312;

}

void loop() {
 



 
   if( CAN0.readMessage( & canMsgRcv) == MCP2515::ERROR_OK ){
    id = canMsgRcv.can_id;
    len = canMsgRcv.can_dlc;
      if(id == 182) { //pega o valor do rpm
      rpm = canMsgRcv.data[0] ;
    }
 
   }
     if (id == 296 && len == 8)  { //ID 128
        
        canMsgSnd.data[0] = canMsgRcv.data[4];
        canMsgSnd.data[1] = canMsgRcv.data[6];
        canMsgSnd.data[2] = canMsgRcv.data[7];
        canMsgSnd.data[3] = canMsgRcv.data[3];
        canMsgSnd.data[4] = canMsgRcv.data[1];
        canMsgSnd.data[5] = canMsgRcv.data[0]; //ajustar por causa da luz de combustivel
        canMsgSnd.data[6] = 0x04;// mantem o painel ligado
        canMsgSnd.data[7] = 0x00;
        canMsgSnd.can_id = 0x128;
        canMsgSnd.can_dlc = 8;
       CAN1.sendMessage(&canMsgSnd);
  
        
     }
     else if (id == 935) { // Manutençao
        canMsgSnd.data[0] = canMsgRcv.data[0];
        canMsgSnd.data[1] = canMsgRcv.data[5]; // Value x255 +
        canMsgSnd.data[2] = canMsgRcv.data[6]; // Value x1 = Number of days till maintenance (FF FF if disabled)
        canMsgSnd.data[3] = canMsgRcv.data[3]; // Value x5120 +
        canMsgSnd.data[4] = canMsgRcv.data[4]; // Value x20 = km left till maintenance
        canMsgSnd.can_id = 0x3E7; // New maintenance frame ID
        canMsgSnd.can_dlc = 5;
        CAN1.sendMessage(&canMsgSnd);
        
     }

    
     else if (id == 424 && len == 8) { //ID1A8  cruise control
        canMsgSnd.data[0] = canMsgRcv.data[1]; //velocidade
        canMsgSnd.data[1] = canMsgRcv.data[2]; //velocidade
        canMsgSnd.data[2] = canMsgRcv.data[0];
        canMsgSnd.data[3] = 0x80; //cruise ou limitador
        canMsgSnd.data[4] = 0x00;
        canMsgSnd.data[5] = 0x00;
        canMsgSnd.data[6] = 0x00;
        canMsgSnd.data[7] = 0x00;
        canMsgSnd.can_id = 0x228; //novo id
        canMsgSnd.can_dlc = 8;
      CAN1.sendMessage(&canMsgSnd);
       canMsgSnd.data[0] =  0x00;
        canMsgSnd.data[1] = 0x00;
        canMsgSnd.data[2] = 0x00;
        canMsgSnd.data[3] = 0x00;
        canMsgSnd.data[4] = 0x00;
        canMsgSnd.data[5] = canMsgRcv.data[5];
        canMsgSnd.data[6] = canMsgRcv.data[6];
        canMsgSnd.data[7] = canMsgRcv.data[7];
        canMsgSnd.can_id = 0x1A8; //trip parcial
        canMsgSnd.can_dlc = 8;
      CAN1.sendMessage(&canMsgSnd);
      
     }
       else if (id == 360 && len == 8) { //ID168 outras luzes
        canMsgSnd.data[0] = canMsgRcv.data[0];
        canMsgSnd.data[1] = canMsgRcv.data[1];
        canMsgSnd.data[2] = canMsgRcv.data[5];
        canMsgSnd.data[3] = canMsgRcv.data[3];
        canMsgSnd.data[4] = canMsgRcv.data[5];
        canMsgSnd.data[5] = canMsgRcv.data[5];
        canMsgSnd.data[6] = canMsgRcv.data[6];
        canMsgSnd.data[7] = canMsgRcv.data[7];
        canMsgSnd.can_id = 0x168;   
        canMsgSnd.can_dlc = 8;
      CAN1.sendMessage(&canMsgSnd);
     }
     else if (id == 608 && len == 8){ //linguagem e regulagem km/l
        canMsgSnd.data[0] = 0xA1; //esta fixa em PT-BR
        canMsgSnd.data[1] = 0x1C;
        canMsgSnd.data[2] = 0x97;
        canMsgSnd.data[3] = 0x9B;
        canMsgSnd.data[4] = 0xE0;
        canMsgSnd.data[5] = 0xD0;
        canMsgSnd.data[6] = 0x00;
        canMsgSnd.can_id = 0x260;
        canMsgSnd.can_dlc = 7;
        CAN1.sendMessage( & canMsgSnd);     
     }
    
     else if (id == 54 && len == 8) { //ID036 brilho e chave ligada
        batual = (canMsgRcv.data[3] & 0xFF);
              
         if (botaobrilho == true && batual >= 32) { //ajusta brilho da tela
        canMsgSnd.data[3] = (bnovo & 0xFF); 
          }
        else {
        canMsgSnd.data[3] = batual;
        }
        canMsgSnd.data[0] = canMsgRcv.data[0];
        canMsgSnd.data[1] = canMsgRcv.data[1];
        canMsgSnd.data[2] = canMsgRcv.data[2];
        canMsgSnd.data[4] = canMsgRcv.data[4];
        canMsgSnd.data[5] = canMsgRcv.data[5];
        canMsgSnd.data[6] = canMsgRcv.data[6];
        canMsgSnd.data[7] = canMsgRcv.data[7];
        canMsgSnd.can_id = 0x036;
        canMsgSnd.can_dlc = 8;
     CAN1.sendMessage(&canMsgSnd);
     }
 
  
  
    
 else {   //final se nao receber nada que precisa converter manda igual
 CAN1.sendMessage( & canMsgRcv);
  }

 
 //envia a informacao dos outros mostradores e o shiftlight
 //VER SE O RADIO MANDA ALGUMA INFO NA CAN 0x2E9
        if (id == 745) {
        }
        else {
        canMsgSnd.data[0] = 0x00;
         if (shiftlight == true && rpm >= rpmmax){
        canMsgSnd.data[1] = 0x56; // mostrador esquerda + cor
        }
         else {
        canMsgSnd.data[1] = 0x16; // mostrador esquerda + cor 
        }
        canMsgSnd.data[2] = 0x30; // mostrador direita radio
        canMsgSnd.can_id = 0x2E9;
        canMsgSnd.can_dlc = 3;
        CAN1.sendMessage(&canMsgSnd);
        }
 //------------------------------------
 //le as infos da can0
 //----------------------------
 if( CAN1.readMessage( & canMsgRcvT) == MCP2515::ERROR_OK ){;
    idT = canMsgRcvT.can_id;
    lenT = canMsgRcvT.can_dlc;
 }
   if (idT == 535 && lenT == 8)  { //recebe valor brilho botao tela
   bnovo = (((canMsgRcvT.data[0]) * 0.0625)+32);
   } 
  //Resetar o TRIP pelo botao lateral
  /*
  if (canMsgRcvT.data[1] == 130)  { //COMANDO RESET DO TRIP
        canMsgSndT.data[0] = canMsgRcvT.data[0];
        canMsgSndT.data[1] = 0x82;
        canMsgSndT.data[2] = canMsgRcvT.data[2];
        canMsgSndT.data[3] = canMsgRcvT.data[3];
        canMsgSndT.data[4] = canMsgRcvT.data[4];
        canMsgSndT.data[5] = canMsgRcvT.data[5];
        canMsgSndT.data[6] = canMsgRcvT.data[6];
        canMsgSndT.data[7] = canMsgRcvT.data[7];
        canMsgSndT.can_id = 0x217;
        canMsgSndT.can_dlc = 8;
       CAN0.sendMessage(&canMsgSndT);
       Serial.println("reset trip");
  }
  */
  
 else{
 
 }
 if (debug == true) {
Serial.println(rpm);
Serial.println(batual);
Serial.println(bnovo);
 }
}
 

Here is the sketch a friend (Felipe Migliori) and me developed to convert the messages from CAN2004 to CAN2010 for CIROCCO use. We have tested on Citroen C5 and DS3 with good results. Some of this sketch was already implemented to this vLud work. There are some improvements to the fuel and temperature gauges, trip reset, brightness control and uses the red theme from Peugeot 3008 as shift light, or always ON as you can define (sometimes Peugeot 3008 cluster does not have the red theme enabled or available).
It is a way to who only wants the CIROCCO to be converted.

Code:
#include <SPI.h>
#include <mcp2515.h>


const int CS_PIN_CAN0 = 10;
const int CS_PIN_CAN1 = 9;
MCP2515 CAN0(CS_PIN_CAN0); // recebe da rede can
MCP2515 CAN1(CS_PIN_CAN1); // envia pro painel
struct can_frame canMsgRcv;
struct can_frame canMsgSnd;
struct can_frame canMsgSndT; //envia mensagens da tela pra bsi
struct can_frame canMsgRcvT; //recebido can da tela
int id; //canMsgRcv.can_id
int len; //canMsgRcv.can_dlc
int idT; //canMsgRcvT.can_id
int lenT; //canMsgRcvT.can_dlc
int batual; //brilho atual
int bnovo; //novo brilho
int rpmmax;
int rpm; //valor da rpm


//-----------------------------------
//AREA DE CONFIGURACOES
bool shiftlight = true; //para ativar ou desativar shiftlight
int corte = 5500; //rpm do corte ajuste aqui
bool botaobrilho = false; //True para ajustar o brilho pelo botao lateral, false para a BSI ajustar o brilho
bool debug = false; //ativar para monitorar o codigo
//-----------------------------------


void setup() {


  SPI.begin();
  CAN0.reset();
  CAN0.setBitrate(CAN_125KBPS,MCP_8MHZ);
  CAN0.setNormalMode();
  CAN1.reset();
  CAN1.setBitrate(CAN_125KBPS,MCP_8MHZ);
  CAN1.setNormalMode();

 
  //while (!Serial);
  if (debug == true) {
  Serial.begin(115200);
  Serial.println("RODANDO EM MODO DEPURAÇÃO!");
  }
 

 
 rpmmax = corte * 0.0312;

}

void loop() {
 



 
   if( CAN0.readMessage( & canMsgRcv) == MCP2515::ERROR_OK ){
    id = canMsgRcv.can_id;
    len = canMsgRcv.can_dlc;
      if(id == 182) { //pega o valor do rpm
      rpm = canMsgRcv.data[0] ;
    }
 
   }
     if (id == 296 && len == 8)  { //ID 128
       
        canMsgSnd.data[0] = canMsgRcv.data[4];
        canMsgSnd.data[1] = canMsgRcv.data[6];
        canMsgSnd.data[2] = canMsgRcv.data[7];
        canMsgSnd.data[3] = canMsgRcv.data[3];
        canMsgSnd.data[4] = canMsgRcv.data[1];
        canMsgSnd.data[5] = canMsgRcv.data[0]; //ajustar por causa da luz de combustivel
        canMsgSnd.data[6] = 0x04;// mantem o painel ligado
        canMsgSnd.data[7] = 0x00;
        canMsgSnd.can_id = 0x128;
        canMsgSnd.can_dlc = 8;
       CAN1.sendMessage(&canMsgSnd);
 
       
     }
     else if (id == 935) { // Manutençao
        canMsgSnd.data[0] = canMsgRcv.data[0];
        canMsgSnd.data[1] = canMsgRcv.data[5]; // Value x255 +
        canMsgSnd.data[2] = canMsgRcv.data[6]; // Value x1 = Number of days till maintenance (FF FF if disabled)
        canMsgSnd.data[3] = canMsgRcv.data[3]; // Value x5120 +
        canMsgSnd.data[4] = canMsgRcv.data[4]; // Value x20 = km left till maintenance
        canMsgSnd.can_id = 0x3E7; // New maintenance frame ID
        canMsgSnd.can_dlc = 5;
        CAN1.sendMessage(&canMsgSnd);
       
     }

   
     else if (id == 424 && len == 8) { //ID1A8  cruise control
        canMsgSnd.data[0] = canMsgRcv.data[1]; //velocidade
        canMsgSnd.data[1] = canMsgRcv.data[2]; //velocidade
        canMsgSnd.data[2] = canMsgRcv.data[0];
        canMsgSnd.data[3] = 0x80; //cruise ou limitador
        canMsgSnd.data[4] = 0x00;
        canMsgSnd.data[5] = 0x00;
        canMsgSnd.data[6] = 0x00;
        canMsgSnd.data[7] = 0x00;
        canMsgSnd.can_id = 0x228; //novo id
        canMsgSnd.can_dlc = 8;
      CAN1.sendMessage(&canMsgSnd);
       canMsgSnd.data[0] =  0x00;
        canMsgSnd.data[1] = 0x00;
        canMsgSnd.data[2] = 0x00;
        canMsgSnd.data[3] = 0x00;
        canMsgSnd.data[4] = 0x00;
        canMsgSnd.data[5] = canMsgRcv.data[5];
        canMsgSnd.data[6] = canMsgRcv.data[6];
        canMsgSnd.data[7] = canMsgRcv.data[7];
        canMsgSnd.can_id = 0x1A8; //trip parcial
        canMsgSnd.can_dlc = 8;
      CAN1.sendMessage(&canMsgSnd);
     
     }
       else if (id == 360 && len == 8) { //ID168 outras luzes
        canMsgSnd.data[0] = canMsgRcv.data[0];
        canMsgSnd.data[1] = canMsgRcv.data[1];
        canMsgSnd.data[2] = canMsgRcv.data[5];
        canMsgSnd.data[3] = canMsgRcv.data[3];
        canMsgSnd.data[4] = canMsgRcv.data[5];
        canMsgSnd.data[5] = canMsgRcv.data[5];
        canMsgSnd.data[6] = canMsgRcv.data[6];
        canMsgSnd.data[7] = canMsgRcv.data[7];
        canMsgSnd.can_id = 0x168;  
        canMsgSnd.can_dlc = 8;
      CAN1.sendMessage(&canMsgSnd);
     }
     else if (id == 608 && len == 8){ //linguagem e regulagem km/l
        canMsgSnd.data[0] = 0xA1; //esta fixa em PT-BR
        canMsgSnd.data[1] = 0x1C;
        canMsgSnd.data[2] = 0x97;
        canMsgSnd.data[3] = 0x9B;
        canMsgSnd.data[4] = 0xE0;
        canMsgSnd.data[5] = 0xD0;
        canMsgSnd.data[6] = 0x00;
        canMsgSnd.can_id = 0x260;
        canMsgSnd.can_dlc = 7;
        CAN1.sendMessage( & canMsgSnd);    
     }
   
     else if (id == 54 && len == 8) { //ID036 brilho e chave ligada
        batual = (canMsgRcv.data[3] & 0xFF);
             
         if (botaobrilho == true && batual >= 32) { //ajusta brilho da tela
        canMsgSnd.data[3] = (bnovo & 0xFF);
          }
        else {
        canMsgSnd.data[3] = batual;
        }
        canMsgSnd.data[0] = canMsgRcv.data[0];
        canMsgSnd.data[1] = canMsgRcv.data[1];
        canMsgSnd.data[2] = canMsgRcv.data[2];
        canMsgSnd.data[4] = canMsgRcv.data[4];
        canMsgSnd.data[5] = canMsgRcv.data[5];
        canMsgSnd.data[6] = canMsgRcv.data[6];
        canMsgSnd.data[7] = canMsgRcv.data[7];
        canMsgSnd.can_id = 0x036;
        canMsgSnd.can_dlc = 8;
     CAN1.sendMessage(&canMsgSnd);
     }
 
 
 
   
 else {   //final se nao receber nada que precisa converter manda igual
 CAN1.sendMessage( & canMsgRcv);
  }

 
 //envia a informacao dos outros mostradores e o shiftlight
 //VER SE O RADIO MANDA ALGUMA INFO NA CAN 0x2E9
        if (id == 745) {
        }
        else {
        canMsgSnd.data[0] = 0x00;
         if (shiftlight == true && rpm >= rpmmax){
        canMsgSnd.data[1] = 0x56; // mostrador esquerda + cor
        }
         else {
        canMsgSnd.data[1] = 0x16; // mostrador esquerda + cor
        }
        canMsgSnd.data[2] = 0x30; // mostrador direita radio
        canMsgSnd.can_id = 0x2E9;
        canMsgSnd.can_dlc = 3;
        CAN1.sendMessage(&canMsgSnd);
        }
 //------------------------------------
 //le as infos da can0
 //----------------------------
 if( CAN1.readMessage( & canMsgRcvT) == MCP2515::ERROR_OK ){;
    idT = canMsgRcvT.can_id;
    lenT = canMsgRcvT.can_dlc;
 }
   if (idT == 535 && lenT == 8)  { //recebe valor brilho botao tela
   bnovo = (((canMsgRcvT.data[0]) * 0.0625)+32);
   }
  //Resetar o TRIP pelo botao lateral
  /*
  if (canMsgRcvT.data[1] == 130)  { //COMANDO RESET DO TRIP
        canMsgSndT.data[0] = canMsgRcvT.data[0];
        canMsgSndT.data[1] = 0x82;
        canMsgSndT.data[2] = canMsgRcvT.data[2];
        canMsgSndT.data[3] = canMsgRcvT.data[3];
        canMsgSndT.data[4] = canMsgRcvT.data[4];
        canMsgSndT.data[5] = canMsgRcvT.data[5];
        canMsgSndT.data[6] = canMsgRcvT.data[6];
        canMsgSndT.data[7] = canMsgRcvT.data[7];
        canMsgSndT.can_id = 0x217;
        canMsgSndT.can_dlc = 8;
       CAN0.sendMessage(&canMsgSndT);
       Serial.println("reset trip");
  }
  */
 
 else{
 
 }
 if (debug == true) {
Serial.println(rpm);
Serial.println(batual);
Serial.println(bnovo);
 }
}
 


You asked me for "more information about the sketch you posted". Which information you need about the sketch? We can discuss publically so it would help others. By the way on this thread we already have all the necessary to make it work
 


You asked me for "more information about the sketch you posted". Which information you need about the sketch? We can discuss publically so it would help others. By the way on this thread we already have all the necessary to make it work
willl it show gear position on the cirroco ?as i have plugged cirroco onto the nac adapter all works but no gear information
thank you
 



i am waiting on 2 can bus shields to arrive before i can test .

but using this there is another problem for the c5x7 and other citroens is that the physical buttons to tun parking sensors esp (trraction control) and with my c5 start stop these all connect to the c5.s instrument matrix which also has menu to turn drl on and off .

we need to find a way to make the nac turn all these functions on and off by sending messages to the bsi to switch any of the above on and off which the original nac sketch does not do
with cars that have can2010 and smeg/rcc/nac these functions are done on the nac/rcc/smeg

is there a way the sketch could be changed so the nac sends these commands which are lost when the original dash matrix is removed
i do have wiring diagrams and all the above are controlled by the dash matrix on can2004 like c5x7 ds3 etc

your help much appreciated

thank you and as for you and Vlud great work :)
 
  • J'aime
Reactions: Manuel Pérez

Personalization settings are now supported, trip reset from the NAC too, working on instrument panel conversion

@tech73 the current gear should now be displayed.
 
  • J'aime
Reactions: Almeria63

to add that sketch to the original, do we have to replace the part with that new one, or is it added?
I can't erase consumptions from Nac in the sketch that I currently use in c5x7. I don't have sirocco.
 


@VLud Is this sketch added to your original sketch as i have uploaded it to another arduino with two can bus shields but when connected gives system error on nac and yes the new arduino is built same as the nac arduino

before i just connected the cirroco to the same can shield as the nac it works without error but no gear information etc

please could you advise

thank you
 

@VLud Is this sketch added to your original sketch as i have uploaded it to another arduino with two can bus shields but when connected gives system error on nac and yes the new arduino is built same as the nac arduino

before i just connected the cirroco to the same can shield as the nac it works without error but no gear information etc

please could you advise

thank you
its like the car does not like two arduinos ?
 


You both don't understand shit to source code so STOP ASKING STUPID QUESTIONS AND UPDATE YOUR CURRENT SETUP :


Don't do stupid things like 2 Arduinos :mad:
i am sorry i dont mean to offend you i have now using one arduino the one for the nac i have uploaded the sketch in last post but no gear information my car is c5 2012 6 speed semi auto egs gearbox i am running a cirroco from a 2019 c5 aircross
yes you are correct i dont understand code this is why i ask in here i do not mean to upset anyone but please understand i know how to connect everything but no nothing on arduino code
i am gratefull for all the work you do its mind blowing i take my hat off to you
 

I updated the sketch, it is now converting BVMP type to BVA, BVMP is not supported by newer instrument panels (this was your problem).
 

I updated the sketch, it is now converting BVMP type to BVA, BVMP is not supported by newer instrument panels (this was your problem).
so has the sketch been updated again? since the one you listed above and will it work with my gearbox and instrument panel
 

If you can't read a web page I can't do anything for you :fracasse:

Latest commit e69cbd7 19 minutes ago

I don't know if it will work this time, TRY IT. I'm working for you for free and all I get is dumb questions.
 

If you can't read a web page I can't do anything for you :fracasse:



I don't know if it will work this time, TRY IT. I'm working for you for free and all I get is dumb questions.

i have tried and it doesnt work :( i know you are working for free i appreciate this like all of us i would willingly pay you to get it working i do not expect things for free the other thing is the brake fluid warning light is always on as i said if you message me i would willingly pay you something for your help

thank you