1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84
| #include <SPI.h>
#include "mcp_can.h"
// the cs pin of the version after v1.1 is default to D9
// v0.9b and v1.0 is default D10
const int SPI_CS_PIN = 9;
MCP_CAN CAN(SPI_CS_PIN); // Set CS pin
unsigned char speeds[] = { CAN_5KBPS,CAN_10KBPS,CAN_20KBPS,CAN_25KBPS,CAN_31K25BPS,CAN_33KBPS,CAN_40KBPS,CAN_50KBPS,CAN_80KBPS,CAN_83K3BPS,CAN_95KBPS,CAN_100KBPS,CAN_125KBPS,CAN_200KBPS,CAN_250KBPS,CAN_500KBPS,CAN_666KBPS,CAN_1000KBPS};
String speedslib[]={"CAN_5KBPS","CAN_10KBPS","CAN_20KBPS","CAN_25KBPS","CAN_31K25BPS","CAN_33KBPS","CAN_40KBPS","CAN_50KBPS","CAN_80KBPS","CAN_83K3BPS","CAN_95KBPS","CAN_100KBPS","CAN_125KBPS","CAN_200KBPS","CAN_250KBPS","CAN_500KBPS","CAN_666kbps","CAN_1000KBPS"};
unsigned char flagRecv = 0;
unsigned char len = 0;
unsigned char buf[8];
char str[20];
void setup()
{
Serial.begin(115200);
unsigned char speed = getspeed();
// unsigned char speed= CAN_200KBPS;
while (CAN_OK != CAN.begin(speed)) // init can bus : baudrate = 200k
{
Serial.println("CAN BUS Shield init fail");
Serial.println(" Init CAN BUS Shield again");
delay(100);
}
Serial.println("CAN BUS Shield init ok!");
}
unsigned char getspeed() {
int speedindex=-1;
for (int i =0; i<18;i++) {
Serial.print("[");
//Serial.print(i+65);
Serial.write(i+65);
Serial.print("] ");
Serial.println(speedslib[i]);
}
Serial.println(">>");
while ( (speedindex<0 || speedindex>17)) {
while (Serial.available()) {
char c = Serial.read();
speedindex=c-65;
if ( (speedindex>=0 && speedindex<17)) {
Serial.println(speedslib[speedindex]);
return speeds[speedindex];
} else {
Serial.println("Speed unknown - try again\n>>");
}
}
}
return CAN_200KBPS;
}
void loop()
{
unsigned char len = 0;
unsigned char buf[8];
if( CAN_MSGAVAIL == CAN.checkReceive()) // check if data coming
{
CAN.readMsgBuf(&len, buf); // read data, len: data length, buf: data buf
unsigned int canId = CAN.getCanId();
Serial.println("-----------------------------");
Serial.print("Get data from ID: ");
Serial.println(canId, HEX);
for(int i = 0; i<len; i++) // print the data
{
Serial.print(buf[i], HEX);
Serial.print("\t");
}
Serial.println();
}
} |
Partager