Elmduino geeft geen waarde

Ik ben bezig om een esp32 met een elm327 te verbinden. Het verbinden lukt, maar ik krijg alleen maar nul (0) te zien in het display.

Ik hebook Torque op de tel geprobeerd en die doet het. De elm geeft dus waardes.

Waar zit de fout?

#include "BluetoothSerial.h"
#include "ELMduino.h"
#include <Adafruit_GFX.h>     
#include <Adafruit_ILI9341.h>   
#define TFT_SCK    18
#define TFT_MOSI   23
#define TFT_MISO   19
#define TFT_CS    22     
#define TFT_RST   17     
#define TFT_DC    21    
#define ELM_PORT   SerialBT
#define DEBUG_PORT Serial
BluetoothSerial SerialBT;
Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC, TFT_RST);
uint8_t address[6]  = {0x88, 0x18, 0x56, 0x68, 0x98, 0xEB}; 
ELM327 myELM327;
uint32_t rpm = 0;
uint32_t cool = 0;
void setup()
{
    DEBUG_PORT.begin(115200);
  ELM_PORT.begin("ArduHUD", true);
 tft.begin();
   tft.setRotation(3);
  tft.fillScreen(ILI9341_BLACK);
 tft.setCursor(50, 20);
  tft.setTextSize(3);
  tft.setTextColor(ILI9341_RED);
 tft.print("OPSTARTEN....");
  if (!ELM_PORT.connect(address))           
  {
    DEBUG_PORT.println("Couldn't connect to OBD scanner - Phase 1");
    while (1);
  }
  if (!myELM327.begin(ELM_PORT))
  {
    Serial.println("Couldn't connect to OBD scanner - Phase 2");
    while (1);
  }
  Serial.println("Connected to ELM327");
   tft.fillScreen(ILI9341_BLACK);
}
void loop()
{
  float tempRPM = myELM327.rpm();
    rpm = (uint32_t)tempRPM;
  tft.print(rpm);
 tft.setCursor(50, 40);
float tempcool = myELM327.engineCoolantTemp();
  cool = (uint32_t)tempcool;
  tft.print(cool);

}

Je zegt dat het verbinden lukt, komt dat omdat je via de seriële poort de melding hebt gekregen dat de verbinding tot stand is gekomen ?
Want dat is voor zover ik kan zien de enige manier om dat te weten.

Als dat zo is, kun je daarna ook de waardes die je binnen (zou moeten) krijgt ook nog ff naar die poort dumpen.
Je kan ook allerlei andere zaken daarheen dumpen.
Dus eerst de rauwe data die je binnen krijgt, en dan nadat je 'm bewerkt hebt.
Zoals tempRPM en rpm.
Wie weet zie je daar dan iets fout gaan.
Omdat data heel snel voorbij zou kunnen komen, is het als debug middel niet alleen handig om de seriële poort te gebruiken, maar ook om er even een delay (900) tegenaan te gooien zodat je ongeveer een seconde hebt om te lezen wat er voorbij komt.
Die debug hulpmiddelen kun je er weer uit slopen wanneer je uit gedebugd bent.

Ja, dat zie ik via de serial idd.
Het lastige is dat ik in de auto die waardes kan lezen, maar ik geen laptop heb die ik in de auto kan gebruiken​:thinking: en aangezien ik ook geen parkeerplaats voor de deur heb, wordt het lastig. je idee is zeker niet verkeerd. Even nadenken hoe ik dat kan realiseren.:thinking:

Wijzig dat in
tft.setTextColor(ILI9341_RED, ILI9341_BLACK);

Anders krijg je uiteindelijk een rode punt. De niet benodigde pixels van de vorige letters of cijfers blijven dan gewoon aan.

#define TFT_SCK    18
#define TFT_MOSI   23
#define TFT_MISO   19

Mogen gewoon weg. Heb je alleen nodig als je softwarematig het display wil aansturen op poorten die er niet voor bedoeld zijn. Is wel ongeveer 10 maal trager als de hardware variant.

Hoe goed werkt de BT van de ESP32? Ray Jones heeft in zijn Afterburner project de interne BT uitgeschakeld en een seriële (Serial2) HC-05 BT module toegevoegd. Hij had er meer miserie mee dan wat anders.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.