parent
894855a4e5
commit
492a95c2ab
7
CAN.ino
7
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)
|
||||
{
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
|
75
MODE1.ino
75
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;
|
||||
}
|
||||
|
|
|
@ -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