ich habe den obigen Thread hier gefunden aber ich werde weder draus schlau noch bekomme ich es hin die Nachricht 0x280 (Die im Seriellen Monitor der Ardunio IDE u.a. sehe) zu filter.
Ich möchte auf dem TFT Display die Drehzahl zum Beispiel des Autos darstellen. Frage: wie mache ich das ? Ich bin das ganze Wochenende dabei gewesen, über viele Stunden das hinzubekommen. Ich schaffe es nicht.
Mein Code
#include <mcp_can.h>
#include <SPI.h>
long unsigned int rxId;
unsigned char len = 0;
unsigned char rxBuf[8];
MCP_CAN CAN0(5); // Set CS to pin 10
void setup()
{
Serial.begin(115200);
if(CAN0.begin(MCP_STD, CAN_500KBPS, MCP_8MHZ) == CAN_OK) Serial.print("MCP2515 Init Okay!!\r\n");
else Serial.print("MCP2515 Init Failed!!\r\n");
pinMode(34, INPUT); // Setting pin 2 for /INT input
CAN0.init_Mask(0,0,0x07FF); // Init first mask...
CAN0.init_Filt(0,0,0x280); // Init first filte
CAN0.init_Filt(0,0,0x288); // Init first filter...
CAN0.init_Mask(1,0,0x07FF); // Init second mask...
// CAN0.init_Filt(0,0,0x0288); // Init third filter...
// Init sixth filter...
Serial.println("MCP2515 Library Mask & Filter Example...");
CAN0.setMode(MCP_NORMAL);
}
void loop()
{
if(!digitalRead(34)) // If pin 2 is low, read receive buffer
{
CAN0.readMsgBuf(&rxId, &len, rxBuf); // Read data: len = data length, buf = data byte(s)
Serial.print("ID: ");
Serial.print(rxId, HEX);
Serial.print(" Data: ");
for(int i = 0; i<len; i++) // Print each byte of the data
{
if(rxBuf[i] < 0x10) // If data byte is less than 0x10, add a leading zero
{
Serial.print("0");
}
Serial.print(rxBuf[i], HEX);
Serial.print(" ");
}
Serial.println();
}
}
Die Ausgabe im Arduino Seriellen Monitor:
D2 Data: 00 00 00 20 00 06 6B
ID: 2A0 Data: 00 00 00 00 00 00 30 30
ID: 4A0 Data: 00 00 00 00 00 00 00 00
ID: 2A0 Data: 00 00 00 00 00 00 40 40
ID: 4A0 Data: 00 00 00 00 00 00 00 00
ID: 2A0 Data: 00 00 00 00 00 00 50 50
ID: 4A0 Data: 00 00 00 00 00 00 00 00
ID: 2A0 Data: 00 00 00 00 00 00 60 60
ID: 4A0 Data: 00 00 00 00 00 00 00 00
ID: 2A0 Data: 00 00 00 00 00 00 70 70
ID: 4A0 Data: 00 00 00 00 00 00 00 00
ID: 2A0 Data: 00 00 00 00 00 00 80 80
ID: 4A0 Data: 00 00 00 00 00 00 00 00
ID: 2A0 Data: 00 00 00 00 00 00 90 90
ID: 4A0 Data: 00 00 00 00 00 00 00 00
ID: 2A0 Data: 00 00 00 00 00 00 A0 A0
ID: 4A0 Data: 00 00 00 00 00 00 00 00
ID: 2A0 Data: 00 00 00 00 00 00 B0 B0
ID: 4A0 Data: 00 00 00 00 00 00 00 00
ID: 2A0 Data: 00 00 00 00 00 00 C0 C0
ID: 4A0 Data: 00 00 00 00 00 00 00 00
Ich verstehe den Zusammenhang (trotz lesens im Internet u. im Code) nicht, wie ich
a) die FIlter setze.
b) wieso 2A0 und 4A0 dabei herauskommen.
c) Muss ich in meinem Fall überhaupt Filter setzen ?
d) wie kann ich mit (cansniffer) mit dem Arduino + mcp2515 Daten auslesen. Im Seriellen Monitor der Arduino IDE sehe ich die Can Nachrichten, in Savvy Can oder cansniffer in der bash, sehe ich gar nichts.
Wer kann mir helfen ? Ich komme absolut nicht weiter und es ist nur noch ein Rätsel raten.