Merge mode3/4

Optimise code
Add more PIDs
This commit is contained in:
brendan gecse 2019-12-01 23:53:59 +13:00
parent 894855a4e5
commit 492a95c2ab
5 changed files with 77 additions and 45 deletions

View File

@ -7,7 +7,10 @@ void DOCAN()
PID = buf[2];
if (MODE == 1)
{
ProcessMode1(PID);
if (ProcessMode1(PID))
{
CAN.sendMsgBuf(0x7E8, 0, 8, OBDIImsg);
}
}
else if (MODE == 3)
{
@ -15,7 +18,7 @@ void DOCAN()
}
else if (MODE == 4)
{
//ProcessMode4();
ProcessMode4();
}
else if (MODE == 9)
{

View File

@ -15,6 +15,7 @@ byte MODE = 0;
bool IsSweep = true;
byte sweep = 0;
//Adjustable values
byte Load = 10;
byte TPS = 15;
@ -24,26 +25,30 @@ int ECT = 80;
int IAT = 30;
byte MAP = 99;
int RPM = 2000;
int MAF = 50;
byte VSS = 50;
byte FP = 10;
void setup() {
Serial.begin(115200);
Serial.setTimeout(50);
Serial.println("HTS");
Serial.println(("HTS CAN SIM 01"));
if (CAN.begin(MCP_ANY, CAN_500KBPS, MCP_8MHZ) == CAN_OK)
{
Serial.println("HTS CAN SIM 01");
CAN.setMode(MCP_NORMAL);
pinMode(CAN0_INT, INPUT);
}
else
{
Serial.println("Failed To setup HTS CAN SIM 01");
Serial.println("Setup Failed");
;
}
pinMode(CAN0_INT, INPUT);
}
void loop() {
DOCAN();
if (Serial)
{
DOSERIAL();
}
}

View File

@ -1,96 +1,111 @@
void ProcessMode1(byte PID)
bool ProcessMode1(byte PID)
{
OBDIImsg[0] = 4;
OBDIImsg[1] = 65;
OBDIImsg[2] = PID;
if (IsSweep)
{
Load = 0;
TPS = 0;
TA = 0;
O2 = 0;
ECT = 0;
IAT = 0;
MAP = 0;
RPM = 0;
VSS = 0;
FP = 0;
sweep++;
}
else
{
sweep = 0;
}
if (PID == 0x00) //PID list 1
if (PID == 0x00) //PID list 1 387F9000
{
OBDIImsg[0] = 6;
OBDIImsg[3] = 0xFF;
OBDIImsg[4] = 0xFF;
OBDIImsg[5] = 0xFF;
OBDIImsg[6] = 0xFF;
OBDIImsg[3] = 0x38;
OBDIImsg[4] = 0x7F;
OBDIImsg[5] = 0x90;
OBDIImsg[6] = 0x00;
OBDIImsg[7] = 0x00;
return true;
}
if (PID == 0x03) //Fuel system status
{
OBDIImsg[2] = PID;
OBDIImsg[3] = 2;
return true;
}
if (PID == 0x04) //Engine Load
{
OBDIImsg[2] = PID;
OBDIImsg[3] = (((Load + sweep) * 255) / 100);
return true;
}
if (PID == 0x05) //ECT
{
OBDIImsg[2] = PID;
OBDIImsg[3] = ((ECT + sweep) + 40);
return true;
}
if (PID == 0x0A) //Fuel Pressure
{
OBDIImsg[2] = PID;
OBDIImsg[3] = ((FP + sweep) * 3);
return true;
}
if (PID == 0x0B) //MAP
{
OBDIImsg[2] = PID;
OBDIImsg[3] = MAP + sweep;
return true;
}
if (PID == 0x0C) //RPM
{
int TRPM = RPM + (sweep * 20);
TRPM = TRPM * 4;
OBDIImsg[2] = PID;
OBDIImsg[3] = TRPM / 256;
OBDIImsg[4] = TRPM & 0xFF;
return true;
}
if (PID == 0x0D) //Speed
{
OBDIImsg[2] = PID;
OBDIImsg[3] = VSS + sweep;
return true;
}
if (PID == 0x0E) //Timing Advance
{
OBDIImsg[2] = PID;
OBDIImsg[3] = (((TA + sweep) * 2) + 128);
return true;
}
if (PID == 0x0F) //IAT
{
OBDIImsg[2] = PID;
OBDIImsg[3] = (IAT + sweep) + 40;
return true;
}
if (PID == 0x10) //MAF
{
int TMAF = MAF + (sweep * 20);
TMAF = MAF * 100;
OBDIImsg[3] = TMAF / 256;
OBDIImsg[4] = TMAF & 0xFF;
return true;
}
if (PID == 0x11) //TPS
{
TPS = (TPS + sweep);
OBDIImsg[2] = PID;
OBDIImsg[3] = TPS;
OBDIImsg[3] = (TPS + sweep);
return true;
}
if (PID == 0x14) //O2
{
OBDIImsg[2] = PID;
if (IsSweep)
{
O2 = random(80, 120);
O2 = O2 / 100;
}
OBDIImsg[3] = O2 * 200;
return true;
}
CAN.sendMsgBuf(0x7E8, 0, 8, OBDIImsg);
if (PID == 0x42) //Control module voltage
{
OBDIImsg[3] = sweep;
return true;
}
if (PID == 0x2F) //Fuel Tank Level
{
OBDIImsg[3] = sweep;
return true;
}
if (PID == 0x4D) //Time run with MIL on
{
OBDIImsg[3] = sweep;
return true;
}
return false;
}

View File

@ -1,9 +0,0 @@
void ProcessMode3()
{
OBDIImsg[0] = 6;
OBDIImsg[1] = 67;
OBDIImsg[2] = 1;
OBDIImsg[3] = 2;
OBDIImsg[4] = 23;
CAN.sendMsgBuf(0x7E8, 0, 8, OBDIImsg);
}

18
MODE34.ino Normal file
View File

@ -0,0 +1,18 @@
void ProcessMode3()
{
OBDIImsg[0] = 6;
OBDIImsg[1] = 67;
OBDIImsg[2] = 1;
OBDIImsg[3] = 2;
OBDIImsg[4] = 23;
CAN.sendMsgBuf(0x7E8, 0, 8, OBDIImsg);
}
void ProcessMode4()
{
OBDIImsg[0] = 4;
OBDIImsg[1] = 65;
OBDIImsg[2] = 04;
OBDIImsg[3] = 44;
OBDIImsg[4] = 00;
CAN.sendMsgBuf(0x7E8, 0, 8, OBDIImsg);
}