From 492a95c2ab3e9433fee58ba24e912824167635f9 Mon Sep 17 00:00:00 2001 From: brendan gecse Date: Sun, 1 Dec 2019 23:53:59 +1300 Subject: [PATCH] Merge mode3/4 Optimise code Add more PIDs --- CAN.ino | 7 +++-- HTSCANSIM.ino | 13 ++++++--- MODE1.ino | 75 ++++++++++++++++++++++++++++++--------------------- MODE3.ino | 9 ------- MODE34.ino | 18 +++++++++++++ 5 files changed, 77 insertions(+), 45 deletions(-) delete mode 100644 MODE3.ino create mode 100644 MODE34.ino diff --git a/CAN.ino b/CAN.ino index e45b984..9d303c8 100644 --- a/CAN.ino +++ b/CAN.ino @@ -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) { diff --git a/HTSCANSIM.ino b/HTSCANSIM.ino index 3116ebb..80c73ec 100644 --- a/HTSCANSIM.ino +++ b/HTSCANSIM.ino @@ -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(); + } } diff --git a/MODE1.ino b/MODE1.ino index fb300c9..00df22f 100644 --- a/MODE1.ino +++ b/MODE1.ino @@ -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; } diff --git a/MODE3.ino b/MODE3.ino deleted file mode 100644 index d80c487..0000000 --- a/MODE3.ino +++ /dev/null @@ -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); -} diff --git a/MODE34.ino b/MODE34.ino new file mode 100644 index 0000000..b19c99e --- /dev/null +++ b/MODE34.ino @@ -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); +}