Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- This is for use with Sparkfun's CAN Bus Shield: https://www.sparkfun.com/products/10039
- Library located in Sparkfun CAN Bus Shield Library on Github: https://github.com/sparkfun/SparkFun_CAN-Bus_Arduino_Library
- */
- #include <Canbus.h>
- #include <defaults.h>
- #include <global.h>
- #include <mcp2515.h>
- #include <mcp2515_defs.h>
- void setup() {
- Serial.begin(9600);
- Serial.println("CAN BUS Vehicle Speed");
- delay(1000);
- if(Canbus.init(CANSPEED_500)) //Initialise MCP2515 CAN controller at the specified speed
- Serial.println("CAN Init ok");
- else
- Serial.println("Can't init CAN");
- delay(1000);
- }
- void loop(){
- //FIRST ---- Send PID Request for vehicle speed
- tCAN message;
- float engine_data;
- char *buffer;
- message.id = 0x7DF; //PID REQUEST message.id =0x7DF
- message.header.rtr = 0;
- message.header.length = 8;
- message.data[0] = 0x02;
- message.data[1] = 0x01;
- message.data[2] = 0x0D; //vehicle speed PID
- message.data[3] = 0x00;
- message.data[4] = 0x00;
- message.data[5] = 0x00;
- message.data[6] = 0x00;
- message.data[7] = 0x00;
- mcp2515_bit_modify(CANCTRL, (1<<REQOP2)|(1<<REQOP1)|(1<<REQOP0), 0);
- mcp2515_send_message(&message);
- delay(200); //delay 0.2 seconds, but may not be needed
- //SECOND ---- Filter for PID REPLY with message.id =0x7E8 and message.data[2] =0x0D
- //tCAN message;
- if (mcp2515_check_message())
- {
- if (mcp2515_get_message(&message))
- {
- if(message.id == 0x7E8 and message.data[2] == 0x0D) //Filter
- {
- engine_data = message.data[3];
- sprintf(buffer,"%d km ",(int) engine_data);
- }
- }
- }
- delay(1000);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement