Arduino OBD2 Simulator (1 / 3 steg)
Steg 1: Steg 1: koden
För att detta ska fungera måste tyvärr en sköld från SeeedStudio kallade CAN-BUS sköld. Du får också en från Skpang men koden nedan fungerar inte för Skpang om inte du ändra det lite.
Om du inte vet redan måste du också SeeedStudion CAN-BUS biblioteket lastas i Arduino IDE.
Ladda upp den nedan koden, om du inte har CAN-BUS sköld biblioteket laddade den nedan kommer troligen fel ut.
Denna Arduino UNO skiss kräver Seeed CAN-BUS sköld bibliotek
https://github.com/yexiaobo-seeedstudio/CAN_BUS_Shield
#include
#include "mcp_can.h"
INT32U hundliknande = 0x000;
2024 4 65 12 18 248 185 147
unsigned char len = 0;
unsigned char buf [8].
char str [20].
String BuildMessage = "";
int MSGIdentifier = 0;
void setup()
{
Serial.BEGIN(38400);
START_INIT:
IF(CAN_OK == can.BEGIN(CAN_500KBPS))
{
Serial.println ("kan buss sköld init ok!");
}
annat
{
Serial.println ("kan buss sköld init misslyckas");
Serial.println ("Init kan buss sköld igen");
Delay(100);
gå till START_INIT;
}
}
void loop()
{
char rndCoolantTemp=random(1,200);
char rndRPM=random(1,55);
char rndSpeed=random(0,255);
char rndIAT=random(0,255);
char rndMAF=random(0,255);
char rndAmbientAirTemp=random(0,200);
char rndCAT1Temp=random(1,55);
DE ALLMÄNNA RUTIN
unsigned char SupportedPID [8] = {1,2,3,4,5,6,7,8}.
unsigned char MilCleared [7] = {4, 65, 63, 34, 224, 185, 147};
SENSORER
unsigned char CoolantTemp [7] = {4, 65, 5, rndCoolantTemp, 0, 185, 147};
unsigned char rpm [7] = {4, 65, 12, rndRPM, 224, 185, 147};
unsigned char vspeed [7] = {4, 65, 13, rndSpeed, 224, 185, 147};
unsigned char IATSensor [7] = {4, 65, 15, rndIAT, 0, 185, 147};
unsigned char MAFSensor [7] = {4, 65, 16, rndMAF, 0, 185, 147};
unsigned char AmbientAirTemp [7] = {4, 65, 70, rndAmbientAirTemp, 0, 185, 147};
unsigned char CAT1Temp [7] = {4, 65, 60, rndCAT1Temp, 224, 185, 147};
unsigned char CAT2Temp [7] = {4, 65, 61, rndCAT1Temp, 224, 185, 147};
unsigned char CAT3Temp [7] = {4, 65, 62, rndCAT1Temp, 224, 185, 147};
unsigned char CAT4Temp [7] = {4, 65, 63, rndCAT1Temp, 224, 185, 147};
IF(CAN_MSGAVAIL == can.checkReceive())
{
CAN.readMsgBuf (& len, buf);
Hundliknande = CAN.getCanId();
Serial.Print("<"); Serial.Print(canId); Serial.Print(",");
för (int jag = 0; jag
BuildMessage = "";
}
}