parent
894855a4e5
commit
492a95c2ab
7
CAN.ino
7
CAN.ino
|
@ -7,7 +7,10 @@ void DOCAN()
|
||||||
PID = buf[2];
|
PID = buf[2];
|
||||||
if (MODE == 1)
|
if (MODE == 1)
|
||||||
{
|
{
|
||||||
ProcessMode1(PID);
|
if (ProcessMode1(PID))
|
||||||
|
{
|
||||||
|
CAN.sendMsgBuf(0x7E8, 0, 8, OBDIImsg);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if (MODE == 3)
|
else if (MODE == 3)
|
||||||
{
|
{
|
||||||
|
@ -15,7 +18,7 @@ void DOCAN()
|
||||||
}
|
}
|
||||||
else if (MODE == 4)
|
else if (MODE == 4)
|
||||||
{
|
{
|
||||||
//ProcessMode4();
|
ProcessMode4();
|
||||||
}
|
}
|
||||||
else if (MODE == 9)
|
else if (MODE == 9)
|
||||||
{
|
{
|
||||||
|
|
|
@ -15,6 +15,7 @@ byte MODE = 0;
|
||||||
bool IsSweep = true;
|
bool IsSweep = true;
|
||||||
byte sweep = 0;
|
byte sweep = 0;
|
||||||
|
|
||||||
|
|
||||||
//Adjustable values
|
//Adjustable values
|
||||||
byte Load = 10;
|
byte Load = 10;
|
||||||
byte TPS = 15;
|
byte TPS = 15;
|
||||||
|
@ -24,26 +25,30 @@ int ECT = 80;
|
||||||
int IAT = 30;
|
int IAT = 30;
|
||||||
byte MAP = 99;
|
byte MAP = 99;
|
||||||
int RPM = 2000;
|
int RPM = 2000;
|
||||||
|
int MAF = 50;
|
||||||
byte VSS = 50;
|
byte VSS = 50;
|
||||||
byte FP = 10;
|
byte FP = 10;
|
||||||
|
|
||||||
void setup() {
|
void setup() {
|
||||||
Serial.begin(115200);
|
Serial.begin(115200);
|
||||||
Serial.setTimeout(50);
|
Serial.setTimeout(50);
|
||||||
Serial.println("HTS");
|
Serial.println(("HTS CAN SIM 01"));
|
||||||
if (CAN.begin(MCP_ANY, CAN_500KBPS, MCP_8MHZ) == CAN_OK)
|
if (CAN.begin(MCP_ANY, CAN_500KBPS, MCP_8MHZ) == CAN_OK)
|
||||||
{
|
{
|
||||||
Serial.println("HTS CAN SIM 01");
|
|
||||||
CAN.setMode(MCP_NORMAL);
|
CAN.setMode(MCP_NORMAL);
|
||||||
|
pinMode(CAN0_INT, INPUT);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Serial.println("Failed To setup HTS CAN SIM 01");
|
Serial.println("Setup Failed");
|
||||||
|
;
|
||||||
}
|
}
|
||||||
pinMode(CAN0_INT, INPUT);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void loop() {
|
void loop() {
|
||||||
DOCAN();
|
DOCAN();
|
||||||
|
if (Serial)
|
||||||
|
{
|
||||||
DOSERIAL();
|
DOSERIAL();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
75
MODE1.ino
75
MODE1.ino
|
@ -1,96 +1,111 @@
|
||||||
void ProcessMode1(byte PID)
|
bool ProcessMode1(byte PID)
|
||||||
{
|
{
|
||||||
OBDIImsg[0] = 4;
|
OBDIImsg[0] = 4;
|
||||||
OBDIImsg[1] = 65;
|
OBDIImsg[1] = 65;
|
||||||
|
OBDIImsg[2] = PID;
|
||||||
if (IsSweep)
|
if (IsSweep)
|
||||||
{
|
{
|
||||||
Load = 0;
|
|
||||||
TPS = 0;
|
|
||||||
TA = 0;
|
|
||||||
O2 = 0;
|
|
||||||
ECT = 0;
|
|
||||||
IAT = 0;
|
|
||||||
MAP = 0;
|
|
||||||
RPM = 0;
|
|
||||||
VSS = 0;
|
|
||||||
FP = 0;
|
|
||||||
sweep++;
|
sweep++;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
sweep = 0;
|
sweep = 0;
|
||||||
}
|
}
|
||||||
if (PID == 0x00) //PID list 1
|
if (PID == 0x00) //PID list 1 387F9000
|
||||||
{
|
{
|
||||||
OBDIImsg[0] = 6;
|
OBDIImsg[0] = 6;
|
||||||
OBDIImsg[3] = 0xFF;
|
OBDIImsg[3] = 0x38;
|
||||||
OBDIImsg[4] = 0xFF;
|
OBDIImsg[4] = 0x7F;
|
||||||
OBDIImsg[5] = 0xFF;
|
OBDIImsg[5] = 0x90;
|
||||||
OBDIImsg[6] = 0xFF;
|
OBDIImsg[6] = 0x00;
|
||||||
|
OBDIImsg[7] = 0x00;
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
if (PID == 0x03) //Fuel system status
|
if (PID == 0x03) //Fuel system status
|
||||||
{
|
{
|
||||||
OBDIImsg[2] = PID;
|
|
||||||
OBDIImsg[3] = 2;
|
OBDIImsg[3] = 2;
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
if (PID == 0x04) //Engine Load
|
if (PID == 0x04) //Engine Load
|
||||||
{
|
{
|
||||||
OBDIImsg[2] = PID;
|
|
||||||
OBDIImsg[3] = (((Load + sweep) * 255) / 100);
|
OBDIImsg[3] = (((Load + sweep) * 255) / 100);
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
if (PID == 0x05) //ECT
|
if (PID == 0x05) //ECT
|
||||||
{
|
{
|
||||||
OBDIImsg[2] = PID;
|
|
||||||
OBDIImsg[3] = ((ECT + sweep) + 40);
|
OBDIImsg[3] = ((ECT + sweep) + 40);
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
if (PID == 0x0A) //Fuel Pressure
|
if (PID == 0x0A) //Fuel Pressure
|
||||||
{
|
{
|
||||||
OBDIImsg[2] = PID;
|
|
||||||
OBDIImsg[3] = ((FP + sweep) * 3);
|
OBDIImsg[3] = ((FP + sweep) * 3);
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
if (PID == 0x0B) //MAP
|
if (PID == 0x0B) //MAP
|
||||||
{
|
{
|
||||||
OBDIImsg[2] = PID;
|
|
||||||
OBDIImsg[3] = MAP + sweep;
|
OBDIImsg[3] = MAP + sweep;
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
if (PID == 0x0C) //RPM
|
if (PID == 0x0C) //RPM
|
||||||
{
|
{
|
||||||
int TRPM = RPM + (sweep * 20);
|
int TRPM = RPM + (sweep * 20);
|
||||||
TRPM = TRPM * 4;
|
TRPM = TRPM * 4;
|
||||||
OBDIImsg[2] = PID;
|
|
||||||
OBDIImsg[3] = TRPM / 256;
|
OBDIImsg[3] = TRPM / 256;
|
||||||
OBDIImsg[4] = TRPM & 0xFF;
|
OBDIImsg[4] = TRPM & 0xFF;
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
if (PID == 0x0D) //Speed
|
if (PID == 0x0D) //Speed
|
||||||
{
|
{
|
||||||
OBDIImsg[2] = PID;
|
|
||||||
OBDIImsg[3] = VSS + sweep;
|
OBDIImsg[3] = VSS + sweep;
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
if (PID == 0x0E) //Timing Advance
|
if (PID == 0x0E) //Timing Advance
|
||||||
{
|
{
|
||||||
OBDIImsg[2] = PID;
|
|
||||||
OBDIImsg[3] = (((TA + sweep) * 2) + 128);
|
OBDIImsg[3] = (((TA + sweep) * 2) + 128);
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
if (PID == 0x0F) //IAT
|
if (PID == 0x0F) //IAT
|
||||||
{
|
{
|
||||||
OBDIImsg[2] = PID;
|
|
||||||
OBDIImsg[3] = (IAT + sweep) + 40;
|
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
|
if (PID == 0x11) //TPS
|
||||||
{
|
{
|
||||||
TPS = (TPS + sweep);
|
OBDIImsg[3] = (TPS + sweep);
|
||||||
OBDIImsg[2] = PID;
|
return true;
|
||||||
OBDIImsg[3] = TPS;
|
|
||||||
}
|
}
|
||||||
if (PID == 0x14) //O2
|
if (PID == 0x14) //O2
|
||||||
{
|
{
|
||||||
OBDIImsg[2] = PID;
|
|
||||||
if (IsSweep)
|
if (IsSweep)
|
||||||
{
|
{
|
||||||
O2 = random(80, 120);
|
O2 = random(80, 120);
|
||||||
O2 = O2 / 100;
|
O2 = O2 / 100;
|
||||||
}
|
}
|
||||||
OBDIImsg[3] = O2 * 200;
|
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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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);
|
|
||||||
}
|
|
|
@ -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);
|
||||||
|
}
|
Loading…
Reference in New Issue