[TUTORIAL] - Computador de bordo através do TID

Faça você mesmo as instalações e manutenções em o seu Corsa.

Moderadores: WJUNIOR, MatheusM, Eduardo Lirani, Organizadores do Fórum

fialho
:: Wind ::
Mensagens: 9
Registrado em: Quinta-feira 30th 2015f Abril 2015 07:33:20 PM
Localização: São Paulo - SP
Modelo do veiculo: CORSA (DEMAIS)
Ano de fabricação: N/I

Re: [TUTORIAL] - Computador de bordo através do TID

Mensagempor fialho » Segunda-feira 11th 2017f Setembro 2017 12:10:24 AM

Cansei, ainda está rolando a venda da placa? Tem um tempo que estou acompanhando e finalmente peguei meu corsa C.

2 Duvidas:

1) o meu é aquele 12/12 com airbag, como faço pra saber se ele tem BCM? (eu acho que tem mas queria confirmar)
2) o meu é o peladão que não vem nada (apesar do airbag rs), o TID, é apenas puxar os fios de alimentação né? (Igual esse tuto aqui https://www.youtube.com/watch?v=rsKnyW76elo)

Desde já obrigado


cansei
:: Piquet ::
Mensagens: 302
Registrado em: Quinta-feira 06th 2008f Março 2008 10:30:35 PM
Localização: São Paulo - SP
Modelo do veiculo: CORSA HATCH 1 8 FLEXPOWER
Ano de fabricação: 2004

Re: [TUTORIAL] - Computador de bordo através do TID

Mensagempor cansei » Segunda-feira 11th 2017f Setembro 2017 11:17:03 AM

ChavesHe escreveu:Eae galera blz?

Adicionei a função de temperatura interna sem problemas aproveitando quero criar um "gerenciamento" do A/C mas estou com o seguinte problema.

1- Aparece na tela o simbolo 4 quando a temperatura está acima da programada.
Ação: Funcionando perfeitamente

2- Apaga da tela o simbolo 4 quando a temperatura chega na programada.
Ação: Aparece "Até Logo!" e o simbolo "EON".

Método utilizado.

1 - Criado um item no menu para mostrar a temperatura.
2 - Criado uma função para o termômetro que chamada junto com a Ativade_led.
3 - Criado uma função para ligar e desligar o A/C na temperatura chamada junto com a Ativade_led.

Seria possível deixar-las em background mas fazer com eles rode a cada 30 secs?

Legal, eu sempre quis fazer isso mas meu carro nem tem A/C hehe

Eu precisava ver no detalhe o que vc fez... anexa o seu código pra eu dar uma olhada nele e aí eu aproveito e vejo essa questão de rodar em background a cada 30 segundos, da pra fazer isso sim.


fialho escreveu:Cansei, ainda está rolando a venda da placa? Tem um tempo que estou acompanhando e finalmente peguei meu corsa C.

Está rolando sim, entra em contato com o Guilherme que é ele que está gerenciando as vendas: gui_brandao_srs@hotmail.com

fialho escreveu:2 Duvidas:

1) o meu é aquele 12/12 com airbag, como faço pra saber se ele tem BCM? (eu acho que tem mas queria confirmar)

Só pelo ano já da pra dizer que não tem. Até onde sei só os corsas até 2006 saiam com BCM.

Pra saber se tem ou não é só ver como vc faz pra acender a luz do teto. Se no seu carro vc puxa o botão pra acender então seu carro não tem BCM. Se vc aperta o botão pra acender então ele tem BCM.

Mas já te falo que pro computador de bordo é indiferente ter BCM ou não viu, o que muda é só a questão da alavanca R/S.

fialho escreveu:2) o meu é o peladão que não vem nada (apesar do airbag rs), o TID, é apenas puxar os fios de alimentação né? (Igual esse tuto aqui https://www.youtube.com/watch?v=rsKnyW76elo)

Desde já obrigado

Pra ter o computador de bordo funcionando vc precisa pegar no mínimo os fios de alimentação (12V pós chave, 12V permanente, terra) e fio da velocidade (tanto esse quanto os outros 3 fios que mencionei vc encontra no chicote do som).

Legal esse vídeo, pode seguir as instruções deles.


ChavesHe
:: Super ::
Mensagens: 53
Registrado em: Sexta-feira 29th 2016f Janeiro 2016 09:49:16 AM
Localização: Osasco - SP
Modelo do veiculo: CORSA HATCH PREMIUM 1.4 ECONOFLEX
Ano de fabricação: 2009

Re: [TUTORIAL] - Computador de bordo através do TID

Mensagempor ChavesHe » Segunda-feira 11th 2017f Setembro 2017 07:34:30 PM

Cansei,

Segue o código, coloquei somente a parte do A/C.

Leitura do termômetro.

Código: Selecionar todos

void tempe_ac()
{
      byte type_s;
      byte data[12];
     
      byte addr[8];
     
      if ( !ds.search(addr)) {
        ds.reset_search();
        return;
      }

      // the first ROM byte indicates which chip
      switch (addr[0]) {
        case 0x10:
          type_s = 1;
          break;
        case 0x28:
          type_s = 0;
          break;
        case 0x22:
          type_s = 0;
          break;
        default:
          return;
      }

      ds.reset();
      ds.select(addr);
      ds.write(0x44, 1);        // start conversion, with parasite power on at the end

      ds.reset();
      ds.select(addr);
      ds.write(0xBE);         // Read Scratchpad

      for (byte i = 0; i < 9; i++) {           // we need 9 bytes
        data[i] = ds.read();
      }

      int16_t raw = (data[1] << 8) | data[0];
      if (type_s) {
        raw = raw << 3; // 9 bit resolution default
        if (data[7] == 0x10) {
          // "count remain" gives full 12 bit resolution
          raw = (raw & 0xFFF0) + 12 - data[6];
        }
      } else {
        byte cfg = (data[4] & 0x60);
        if (cfg == 0x00) raw = raw & ~7;  // 9 bit resolution, 93.75 ms
        else if (cfg == 0x20) raw = raw & ~3; // 10 bit res, 187.5 ms
        else if (cfg == 0x40) raw = raw & ~1; // 11 bit res, 375 ms
        //// default is 12 bit resolution, 750 ms conversion time
      }
      celsius = (float)raw / 16.0;
     
      dtostrf(celsius,4,0,texttemp); 
}



Item do menu mostrando a temperatura interna.

Código: Selecionar todos

void menu_Ac()
{
  if (flagAc == 0)
  {
    calcula_intervalo();
    if (intervaloMiliSecs < 100)
      mydisplay.display_message(F("A/C"),10);
    else if (intervaloMiliSecs > 1000 && intervaloMiliSecs < 1300)
      mydisplay.display_message(F("A/C"),2);
    else if (intervaloMiliSecs > 1700 && intervaloMiliSecs < 2000)
      mydisplay.display_message(F("A/C"),2);
     
    else if (intervaloSecs >= 4)
    {
      flagAc = 1;
      //secs = 0;
    }
  }
  else if (flagAc == 1)
  {
    calcula_intervalo();
    if (intervaloMiliSecs >= 2000)
    {
     
      sprintf(textfinal, "Ti %s c", texttemp);
      mydisplay.display_message(textfinal,254);
      exibe_simbolo_colchete();
      zera_intervalo();
    }
  }
}


Função para ligar e desligar o A/C.

Código: Selecionar todos

void re_ac()
{
 
  //Aciona o rele
  if ( celsius > 25 ){
  //digitalWrite(8, HIGH);
  mydisplay.display_symbol(4);
  }
  else if (celsius < 25) {
  //Desliga o rele
  //digitalWrite(8, LOW);
  mydisplay.clear_symbol(4);
  }
}


cansei
:: Piquet ::
Mensagens: 302
Registrado em: Quinta-feira 06th 2008f Março 2008 10:30:35 PM
Localização: São Paulo - SP
Modelo do veiculo: CORSA HATCH 1 8 FLEXPOWER
Ano de fabricação: 2004

Re: [TUTORIAL] - Computador de bordo através do TID

Mensagempor cansei » Terça-feira 12th 2017f Setembro 2017 11:16:45 AM

Eu precisava ver o código completo pra ver como vc está chamando cada função e pra te ajudar a construir o contador de tempo de 30 segundos (ou ver se da pra aproveitar algum outro que já ta no código), mas com o que vc postou já da pra dar algumas sugestões.


O código da leitura do termômetro vc ta chamando continuamente, não é? Se vc colocou a função no atividade_led então ela ta sendo chamada continuamente por 1 segundo, e no outro segundo ela não é chamada.
É esse código que vc quer rodar a cada 30 segundos? Se sim, é bom fazer isso sim. Temperatura é algo que muda devagar então vc não precisa ficar lendo ela toda hora.

Aproveite e tire a última linha, a "dtostrf(celsius,4,0,texttemp);". Vc já tem a temperatura armazenada na variável celsius, essa linha do dtostrf vc usa só quando for exibir a temperatura no TID.


O código pra exibir na tela eu tirei umas linhas de exibição do texto "A/C" (vc usa multiplas linhas do jeito que tava quando vc tem um texto maior que 10 caracteres e precisa fazer scroll dele na tela, nesse caso o texto "A/C" da pra exibir numa tacada só). E coloquei o dtostrf aqui.

Código: Selecionar todos

void menu_Ac()
{
  if (flagAc == 0)
  {
    calcula_intervalo();
    if (intervaloMiliSecs < 100)
      mydisplay.display_message(F("A/C"),255);
    else if (intervaloSecs >= 4)
      flagAc = 1;
  }
  else if (flagAc == 1)
  {
    calcula_intervalo();
    if (intervaloMiliSecs >= 2000)
    {
      dtostrf(celsius,4,0,texttemp);
      sprintf(textfinal, "Ti %s c", texttemp);
      mydisplay.display_message(textfinal,254);
      exibe_simbolo_colchete();
      zera_intervalo();
    }
  }
}



A função para ligar e desligar o A/C vc tb colocou no atividade_led?
Se sim (o que eu acredito ser o caso) vc tb pode chamar ela uma vez a cada 30 segundos, cai na mesma situação que eu comentei aí em cima. Essa função aqui é interessante vc chamar ela logo depois de fazer a leitura de temperatura.

E o problema que eu desconfiei estar causando o EON acender com o carro ligado está aqui. Vc não pode acionar os símbolos toda hora, eles são as funções mais pesadas que tem no TID e acontece todo tipo de maluquice quando se faz isso.

Aqui eu vou sugerir também que vc procure as funções "exibe_simbolo_colchete" e "apaga_simbolo_colchete" e crie funções equivalentes para o símbolo 4, e o código de acionamento vai ficar assim:

Código: Selecionar todos

void re_ac()
{
 
  //Aciona o rele
  if ( celsius > 25 ){
  //digitalWrite(8, HIGH);
  exibe_simbolo_cr();
  }
  else if (celsius < 25) {
  //Desliga o rele
  //digitalWrite(8, LOW);
  apaga_simbolo_cr();
  }
}


ChavesHe
:: Super ::
Mensagens: 53
Registrado em: Sexta-feira 29th 2016f Janeiro 2016 09:49:16 AM
Localização: Osasco - SP
Modelo do veiculo: CORSA HATCH PREMIUM 1.4 ECONOFLEX
Ano de fabricação: 2009

Re: [TUTORIAL] - Computador de bordo através do TID

Mensagempor ChavesHe » Terça-feira 12th 2017f Setembro 2017 10:08:32 PM

Canse,

Show de bola!

O rele aciona e desliga mas o simbolo cr não some da tela kkkk mas deve ser alguma coisa q eu fiz errado, vou olhar com calma e te falo.

Como pedido segue a chamada das funções.

Código: Selecionar todos

void coisas_a_fazer_sempre(bool extras)
{
  if (extras == 1)
  {
    /*
      Colocar dentro deste if a chamada de funções extras ao computador de bordo
      que vocês venham a desenvolver que precisem rodar em background e que em
      algum momento use a função "atraso".
     
      Dentro dessas funções extras que vocês criarem, use a função atraso com o
      segundo parâmetro igual a 0, da seguinte forma "atraso(TempoEmMiliSegundos,0);"
     
      Esta ação é obrigatória para evitar um loop infinito.
     
      Caso a função extra não use a função "atraso" mas precise trabalhar em background
      (independente do menu selecionado no TID), faça a chamada para ela de fora
      deste if.
     
      Caso a função extra não precise rodar em background, pode chamá-la de dentro
      do "switch (IndiceMenu)" criando um menu específico para sua função.
    */
   
   

  } 
  /* Coloque logo abaixo a chamada de funções extras que não vão usar a função "atraso"
     mas que precisam trabalhar em background */
 // LED_atividade();
  tempe_ac();
  re_ac();

 
  //Leitura do min e max da bateria
  int sensorValue = analogRead(A0);
  float voltage = sensorValue * (5.0 / 1023.0);
  vin = voltage / (R2/(R1+R2));
  if (vin < vmin)
  {
    vmin = vin;
  }
  if (vin > vmax)
  {
    vmax = vin;
  }


ChavesHe
:: Super ::
Mensagens: 53
Registrado em: Sexta-feira 29th 2016f Janeiro 2016 09:49:16 AM
Localização: Osasco - SP
Modelo do veiculo: CORSA HATCH PREMIUM 1.4 ECONOFLEX
Ano de fabricação: 2009

Re: [TUTORIAL] - Computador de bordo através do TID

Mensagempor ChavesHe » Terça-feira 12th 2017f Setembro 2017 10:10:43 PM

ChavesHe escreveu:Canse,

Show de bola!

O rele aciona e desliga mas o simbolo cr não some da tela kkkk mas deve ser alguma coisa q eu fiz errado, vou olhar com calma e te falo.

Como pedido segue a chamada das funções.

Código: Selecionar todos

void coisas_a_fazer_sempre(bool extras)
{
  if (extras == 1)
  {
    /*
      Colocar dentro deste if a chamada de funções extras ao computador de bordo
      que vocês venham a desenvolver que precisem rodar em background e que em
      algum momento use a função "atraso".
     
      Dentro dessas funções extras que vocês criarem, use a função atraso com o
      segundo parâmetro igual a 0, da seguinte forma "atraso(TempoEmMiliSegundos,0);"
     
      Esta ação é obrigatória para evitar um loop infinito.
     
      Caso a função extra não use a função "atraso" mas precise trabalhar em background
      (independente do menu selecionado no TID), faça a chamada para ela de fora
      deste if.
     
      Caso a função extra não precise rodar em background, pode chamá-la de dentro
      do "switch (IndiceMenu)" criando um menu específico para sua função.
    */
   
   

  } 
  /* Coloque logo abaixo a chamada de funções extras que não vão usar a função "atraso"
     mas que precisam trabalhar em background */
 // LED_atividade();
  tempe_ac();
  re_ac();

 
  //Leitura do min e max da bateria
  int sensorValue = analogRead(A0);
  float voltage = sensorValue * (5.0 / 1023.0);
  vin = voltage / (R2/(R1+R2));
  if (vin < vmin)
  {
    vmin = vin;
  }
  if (vin > vmax)
  {
    vmax = vin;
  }


Achei o problema do cr.


Obs. Não sei como edita o post.


fialho
:: Wind ::
Mensagens: 9
Registrado em: Quinta-feira 30th 2015f Abril 2015 07:33:20 PM
Localização: São Paulo - SP
Modelo do veiculo: CORSA (DEMAIS)
Ano de fabricação: N/I

Re: [TUTORIAL] - Computador de bordo através do TID

Mensagempor fialho » Quarta-feira 13th 2017f Setembro 2017 01:53:31 AM

cansei escreveu:
fialho escreveu:2 Duvidas:

1) o meu é aquele 12/12 com airbag, como faço pra saber se ele tem BCM? (eu acho que tem mas queria confirmar)

Só pelo ano já da pra dizer que não tem. Até onde sei só os corsas até 2006 saiam com BCM.

Pra saber se tem ou não é só ver como vc faz pra acender a luz do teto. Se no seu carro vc puxa o botão pra acender então seu carro não tem BCM. Se vc aperta o botão pra acender então ele tem BCM.

Mas já te falo que pro computador de bordo é indiferente ter BCM ou não viu, o que muda é só a questão da alavanca R/S.


Blz, muito obrigado por ajudar e manter esse projeto ativo por tanto tempo, é um dos poucos projetos que tem aqui que quero fazer que ainda está ativo


cansei
:: Piquet ::
Mensagens: 302
Registrado em: Quinta-feira 06th 2008f Março 2008 10:30:35 PM
Localização: São Paulo - SP
Modelo do veiculo: CORSA HATCH 1 8 FLEXPOWER
Ano de fabricação: 2004

Re: [TUTORIAL] - Computador de bordo através do TID

Mensagempor cansei » Quarta-feira 13th 2017f Setembro 2017 10:48:39 AM

ChavesHe escreveu:Achei o problema do cr.


Obs. Não sei como edita o post.

Seria bom vc fazer o contador de tempo pra chamar essas funções viu. Duplica as funções zera_intervalo e calcula_intervalo (criando variáveis novas pra não contaminar as outras). Chamar esse termômetro toda hora não é bom.

Mais pra baixo do coisas a fazer sempre tem um contador que roda a cada 1 segundo, vc pode chamar essas duas funções do termômetro lá de dentro que já ajuda bastante.

fialho escreveu:Blz, muito obrigado por ajudar e manter esse projeto ativo por tanto tempo, é um dos poucos projetos que tem aqui que quero fazer que ainda está ativo

De nada. Na medida do possível eu sempre dou uma passada aqui.


Avatar do usuário
thiiagoarts
:: Wind ::
Mensagens: 21
Registrado em: Quarta-feira 01st 2012f Agosto 2012 09:36:38 PM
Localização: São Sebastião do Passé - BA
Modelo do veiculo: CORSA HATCH 1.0 MPFI 8V 71CV
Ano de fabricação: 2004

Re: [TUTORIAL] - Computador de bordo através do TID

Mensagempor thiiagoarts » Segunda-feira 18th 2017f Setembro 2017 05:49:17 PM

Salve galera vi Aqui que teve novidades show de bola

Enviado de meu XT1563 usando Tapatalk


ChavesHe
:: Super ::
Mensagens: 53
Registrado em: Sexta-feira 29th 2016f Janeiro 2016 09:49:16 AM
Localização: Osasco - SP
Modelo do veiculo: CORSA HATCH PREMIUM 1.4 ECONOFLEX
Ano de fabricação: 2009

Re: [TUTORIAL] - Computador de bordo através do TID

Mensagempor ChavesHe » Sexta-feira 22nd 2017f Setembro 2017 11:17:51 PM

Cansei,

Não estou conseguindo, criei as novas funções de tempo e mesmo assim continua dando o bug do até logo.
Tirei o simbolo e tbm aparece o até logo.
E está atrapalhando o consumo, ele não identifica direto se o carro está andado.

Se poder da uma olhada como fiz.

Chamada das funções.

Código: Selecionar todos

//Calculo de Vel, vel max e Consumo em L/h
  calcula_intervalo_C();
  if (intervaloSecsC >= 1)
  {
    zera_intervalo_C();
    //Coloque abaixo a chamada de funções extras que precisam rodar a cada 1 segundo em background sem precisar exibir nada no TID
    tempe_ac(); // Função do termometro
     re_ac(); // Função acionamento do A\C
   
    //Calculo vel e vel max
    VelKmPorHBKG = (DistVelCountBKG/16) * fatorVel * 3.6;
    DistVelCountBKG = 0.0;
    if (VelKmPorHBKG > VelKmMax)
    {
      VelKmMax = VelKmPorHBKG;
    }



As funções novas.

Código: Selecionar todos

void exibe_simbolo_cr()
{
  if (flag_simbolo_cr == 0)
  {
    mydisplay.display_symbol(4);
    flag_simbolo_cr = 1;
  }
}

void apaga_simbolo_cr()
{
 
   if (flag_simbolo_cr == 1)
  {
    mydisplay.clear_symbol(4);
    flag_simbolo_cr = 0;
  }
}

void zera_intervalo_Ac() //Momento zero/inicial. Marca o instante que começa a contagem
{
  milisecac = millis();
  secsac = milisecac/1000;
}

void calcula_intervalo_Ac() //Calcula o tempo que passou desde o momento 0
{
  milisec1ac = millis();
  secs1ac = milisec1ac/1000;
  intervaloMiliSecsac = milisec1ac - milisecac;
  intervaloSecsac = secs1ac - secsac;
}

void tempe_ac()
{
      byte type_s;
      byte data[12];
      byte addr[8];
     
      if ( !ds.search(addr)) {
        ds.reset_search();
        return;
      }

      // the first ROM byte indicates which chip
      switch (addr[0]) {
        case 0x10:
          type_s = 1;
          break;
        case 0x28:
          type_s = 0;
          break;
        case 0x22:
          type_s = 0;
          break;
        default:
          return;
      }

      ds.reset();
      ds.select(addr);
      ds.write(0x44, 1);        // start conversion, with parasite power on at the end

      ds.reset();
      ds.select(addr);
      ds.write(0xBE);         // Read Scratchpad

      for (byte i = 0; i < 9; i++) {           // we need 9 bytes
        data[i] = ds.read();
      }

      int16_t raw = (data[1] << 8) | data[0];
      if (type_s) {
        raw = raw << 3; // 9 bit resolution default
        if (data[7] == 0x10) {
          // "count remain" gives full 12 bit resolution
          raw = (raw & 0xFFF0) + 12 - data[6];
        }
      } else {
        byte cfg = (data[4] & 0x60);
        if (cfg == 0x00) raw = raw & ~7;  // 9 bit resolution, 93.75 ms
        else if (cfg == 0x20) raw = raw & ~3; // 10 bit res, 187.5 ms
        else if (cfg == 0x40) raw = raw & ~1; // 11 bit res, 375 ms
        //// default is 12 bit resolution, 750 ms conversion time
      }
      celsius = (float)raw / 16.0;
}

void re_ac()
{
 
  calcula_intervalo_Ac();
  if ( intervaloMiliSecsac <3) {
  //Aciona o rele
  if ( celsius > 24 ){
  //digitalWrite(8, HIGH);
  exibe_simbolo_cr();
  zera_intervalo_Ac();
  }
  else  if (celsius < 24) {
    //Desliga o rele
  //digitalWrite(8, LOW);
  apaga_simbolo_cr();
  zera_intervalo_Ac();
  }
  }
}

void menu_Ac()
{
  if (flagAc == 0)
  {
    calcula_intervalo();
    if (intervaloMiliSecs < 100)
      mydisplay.display_message(F("A/C"),255);
    else if (intervaloSecs >= 4)
      flagAc = 1;
  }
  else if (flagAc == 1)
  {
    calcula_intervalo();
    if (intervaloMiliSecs >= 2000)
    {
      dtostrf(celsius,4,0,texttemp);
      sprintf(textfinal, "Ti %s c", texttemp);
      mydisplay.display_message(textfinal,254);
      exibe_simbolo_colchete();
      zera_intervalo();
    }
  }
}


Muito obrigado!


cansei
:: Piquet ::
Mensagens: 302
Registrado em: Quinta-feira 06th 2008f Março 2008 10:30:35 PM
Localização: São Paulo - SP
Modelo do veiculo: CORSA HATCH 1 8 FLEXPOWER
Ano de fabricação: 2004

Re: [TUTORIAL] - Computador de bordo através do TID

Mensagempor cansei » Sábado 23rd 2017f Setembro 2017 12:56:21 PM

Acho que é a leitura do termômetro que ta causando isso. Deleta a chamada da função tempe_ac(); e faz um teste, vê se sem ler o termômetro o problema ainda acontece.

Supondo que isso resolveu o problema, o negócio é ler essa temperatura em intervalos maiores.
As funções que vc criou zera_intervalo_Ac() e calcula_intervalo_Ac() tão ok, então tira a chamada das funções tempe_ac(); e re_ac(); de onde elas tão e coloca elas logo abaixo da chamada da função LED_atividade(); da seguinte forma:

Código: Selecionar todos

  LED_atividade();
 
  calcula_intervalo_Ac();
  if (intervaloSecsac >= 30) {
    tempe_ac();
    re_ac();
    zera_intervalo_Ac();
  }
 
  //Calculo vel e vel max
  VelKmPorHBKG = (DistVelCountBKG/16) * fatorVel * 3.6; 
 


A função re_ac(); vc vai mudar e deixar da seguinte forma:

Código: Selecionar todos

void re_ac()
{
  //Aciona o rele
  if ( celsius > 24 ){
  //digitalWrite(8, HIGH);
  exibe_simbolo_cr();
  }
  else  if (celsius < 24) {
    //Desliga o rele
  //digitalWrite(8, LOW);
  apaga_simbolo_cr();
  }
}


Faz um teste e veja se assim resolveu.


ChavesHe
:: Super ::
Mensagens: 53
Registrado em: Sexta-feira 29th 2016f Janeiro 2016 09:49:16 AM
Localização: Osasco - SP
Modelo do veiculo: CORSA HATCH PREMIUM 1.4 ECONOFLEX
Ano de fabricação: 2009

Re: [TUTORIAL] - Computador de bordo através do TID

Mensagempor ChavesHe » Segunda-feira 25th 2017f Setembro 2017 11:30:48 PM

cansei escreveu:Acho que é a leitura do termômetro que ta causando isso. Deleta a chamada da função tempe_ac(); e faz um teste, vê se sem ler o termômetro o problema ainda acontece.


Na verdade o bug era na hora de ligar e desligar o A\C, estava rodando com a leitura do termômetro sem problema, mas na hora que chamava a função de ligar e desligar ai dava o erro.


cansei escreveu:Supondo que isso resolveu o problema, o negócio é ler essa temperatura em intervalos maiores.
As funções que vc criou zera_intervalo_Ac() e calcula_intervalo_Ac() tão ok, então tira a chamada das funções tempe_ac(); e re_ac(); de onde elas tão e coloca elas logo abaixo da chamada da função LED_atividade(); da seguinte forma:

Código: Selecionar todos

  LED_atividade();
 
  calcula_intervalo_Ac();
  if (intervaloSecsac >= 30) {
    tempe_ac();
    re_ac();
    zera_intervalo_Ac();
  }
 
  //Calculo vel e vel max
  VelKmPorHBKG = (DistVelCountBKG/16) * fatorVel * 3.6; 
 


A função re_ac(); vc vai mudar e deixar da seguinte forma:

Código: Selecionar todos

void re_ac()
{
  //Aciona o rele
  if ( celsius > 24 ){
  //digitalWrite(8, HIGH);
  exibe_simbolo_cr();
  }
  else  if (celsius < 24) {
    //Desliga o rele
  //digitalWrite(8, LOW);
  apaga_simbolo_cr();
  }
}


Faz um teste e veja se assim resolveu.


Problema resolvido =D

Apenas uma duvida, eu conseguira fazer a mudança de temperatura do acionamento apertando os botões, pensei em algo assim:

- Apertando o botão do pino 11 diminuiria a temperatura.
- Apertando os dois botões aumentaria a temperatura.

Já criei um sub item (apertando o botão do pino 11) e uma variável para a temperatura, mas o lance dos botões estou apanhando um pouco.


cansei
:: Piquet ::
Mensagens: 302
Registrado em: Quinta-feira 06th 2008f Março 2008 10:30:35 PM
Localização: São Paulo - SP
Modelo do veiculo: CORSA HATCH 1 8 FLEXPOWER
Ano de fabricação: 2004

Re: [TUTORIAL] - Computador de bordo através do TID

Mensagempor cansei » Quarta-feira 27th 2017f Setembro 2017 11:08:47 AM

ChavesHe escreveu:Problema resolvido =D

Apenas uma duvida, eu conseguira fazer a mudança de temperatura do acionamento apertando os botões, pensei em algo assim:

- Apertando o botão do pino 11 diminuiria a temperatura.
- Apertando os dois botões aumentaria a temperatura.

Já criei um sub item (apertando o botão do pino 11) e uma variável para a temperatura, mas o lance dos botões estou apanhando um pouco.

Então, bolar essa parte é meio chatinho mesmo... apertar os dois botões juntos é uma opção mas vc precisa levar em conta que nunca vai conseguir apertar os dois botões ao mesmo tempo, sempre vai ter uns milissegundos de diferença entre um botão e outro, aí vc precisa fazer um código que leve isso em conta.

Quando eu tava pensando em fazer isso no meu carro (pro caso de um dia eu conseguir instalar o A/C), eu pensei em fazer o menu de temperatura interna agir como menu de opções, onde apertando o botão R eu entraria nele e passaria a usar o botão R pra aumentar a temperatura e o S pra reduzir, até imaginei como ficaria mostrado no TID:

Código: Selecionar todos

"<S  25  R>" ou "-S  25  R+"

Aí pra sair do menu eu apertaria e seguraria um dos botões por alguns segundos mas nesse caso eu teria que fazer um código que diferenciasse o aperto rápido do aperto longo do botão (eu até tenho código pra isso mas é chatinho...)

Outra opção mais simples é fazer tipo menu opções tb mas quando vc entra no menu o botão R serve só pra aumentar a temperatura, tipo assim:

Código: Selecionar todos

"    25  R>"

aí qdo vc aperta o botão S vc passa a usar o botão R pra reduzir a temperatura:

Código: Selecionar todos

"<R  25    "

e se apertar o S mais uma vez vc sai do menu:

Código: Selecionar todos

"<     Sair"


Pensando bem essa última sugestão parece ser a melhor, é a mais simples e viável de fazer...


Ikaro
:: Moderador ::
Mensagens: 2748
Registrado em: Sábado 27th 2004f Novembro 2004 11:58:12 PM
Localização: São Paulo - SP
Modelo do veiculo: CORSA WAGON GLS 1.6 MPFI
Ano de fabricação: 2001

Re: [TUTORIAL] - Computador de bordo através do TID

Mensagempor Ikaro » Terça-feira 03rd 2017f Outubro 2017 08:21:29 AM

Cansei,

Peguei um kit com o Guilherme, já instalei e já fiz uma calibração para acertar a distância.

Está praticamente tudo funcionando, menos a velocidade média total (VM). Ela sempre fica marcando 0 km/h

Tem noção do que pode estar acontecendo?


cansei
:: Piquet ::
Mensagens: 302
Registrado em: Quinta-feira 06th 2008f Março 2008 10:30:35 PM
Localização: São Paulo - SP
Modelo do veiculo: CORSA HATCH 1 8 FLEXPOWER
Ano de fabricação: 2004

Re: [TUTORIAL] - Computador de bordo através do TID

Mensagempor cansei » Terça-feira 03rd 2017f Outubro 2017 12:01:22 PM

Hum... acho que encontrei o problema mas preciso simular pra ter certeza.

Me faz um favor, me diz quanto ta marcando a distância total (DT) e o tempo total (TT)




Voltar para “Tutoriais”

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 6 visitantes