前提・実現したいこと
ECUとArduinoを用いて、CAN通信を行うプログラムを作成しています。
ここで、Arduino側でCAN受信プログラムを作成していますが、正しく受信できません。
発生している問題・エラーメッセージ
作成したプログラムでは、データの中身を受信することが出来ません。
(以下参照)
ID: 0 Data:
ID: 0 Data:
ID: 0 Data:
ID: 0 Data:
ID: 0 Data:
ID: 0 Data:
ID: 0 Data:
・・・
該当のソースコード
Arduino
1//CAN受信 2//受信画面をシリアルで送信 3 4#include <mcp_can.h> 5#include <SPI.h> 6 7//設定値 8#define CS_PIN (10) 9#define INT_PIN (9) 10 11long unsigned int rxId; 12unsigned char len =0; 13unsigned char rxBuf[8]; 14 15MCP_CAN CAN0(CS_PIN); 16 17void setup() { 18 // put your setup code here, to run once: 19 Serial.begin(9600); 20 CAN0.begin(CAN_STDID, CAN_500KBPS, MCP_8MHZ); // CANの通信速度を500kbpsにする 21 pinMode(INT_PIN,INPUT); 22 CAN0.setMode(MCP_NORMAL); //?? 23 Serial.println("CAN受信テスト"); 24} 25 26void loop() { 27 // put your main code here, to run repeatedly: 28 if(!digitalRead(INT_PIN)) 29 { 30 CAN0.readMsgBuf(&rxId,&len,rxBuf); 31 //rxId = CAN0.getCanId(); 32 Serial.print("ID: "); 33 Serial.print(rxId, HEX); 34 Serial.print(" Data: "); 35 for(int i = 0; i<len; i++) 36 { 37 if(rxBuf[i] < 0x10) 38 { 39 Serial.print("0"); 40 } 41 Serial.print(rxBuf[i], HEX); 42 Serial.print(" "); 43 } 44 Serial.println(); 45 } 46}
試したこと
mcp_can.h の中身などを調査。
CANの調査。
Seeed社のサイトの調査。
http://wiki.seeedstudio.com/CAN-BUS_Shield_V2.0/
補足情報(FW/ツールのバージョンなど)
Arduino UNO, seeed製 CAN-BUS Shield を使用。
ECU側で送信できることは確認済み。
ターミナルブロックがワンタッチ式で使い方に若干不安あり。
サイトなどを読み、少し変えて動かしてみたものになります。
プログラムの十分な理解はまだ出来ていません。
ECUってだけでは意味不明です。詳しい型番を提示しましょう。
んで、Arduinoのなにを使ってますか?
また、回路図も必要です
