INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
mcp2515 CAN BUS nur eine ID auslesen
19.10.2018, 01:23
Beitrag #1
mcp2515 CAN BUS nur eine ID auslesen
Wunderschönen guten Abend liebes Arduino Forum Team,
Ich lese schon seit längerem mit, und sehe das hier einem auch geholfen wird ! deswegen wollte ich mich anschließen und habe mich auch registriert.

Nun zu meiner Frage, wie oben Beschrieben will ich mit einem Arduino (egal ob uno oder Mini etc.) über ein MCP2515 den CAN BUS meines Autos auslesen. mit der Standard Library kann ich den CAN BUS auslesen und sehe die einzelnen ID´s und die Bytes, jetzt ist mein vorhaben so, aus meinem Motorsteuergerät kommen über den CAN Daten wie z.B. Drehmoment Daten, Daten von Ladedruck etc. die ich gerne an ein LCD Modul oder eventuell an ein Nextion Touch bringen möchte. Ich habe die Passenden ID´s und Bytes in denen das steht, nur lese ich ja mit der Standard Library ja immer alle Daten, was mich ja nichts bringt, ich wollte jetzt einfach aus der ID 480 Byte 2 und 3 herausziehen, berechnen und dann auf dem Display wiedergeben. kann mir eventuell jemand dabei helfen ?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
19.10.2018, 08:58
Beitrag #2
RE: mcp2515 CAN BUS nur eine ID auslesen
Dann zeige uns doch einfach mal, was Du schon hast.
Stelle Deinen Sketch bitte in Codetags.
Wie das geht, steht hier.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
23.10.2018, 00:25
Beitrag #3
RE: mcp2515 CAN BUS nur eine ID auslesen
Guten Abend,
Entschuldigung für die lange Wartezeit, da ich Geschäftlich leider länger als gedacht weg musste, die Antwort leider erst jetzt,
Code:
// CAN Receive Example
//

#include <mcp_can.h>
#include <SPI.h>

long unsigned int rxId;
unsigned char len = 0;
unsigned char rxBuf[8];
char msgString[128];                        // Array to store serial string

#define CAN0_INT 2                              // Set INT to pin 2
MCP_CAN CAN0(10);                               // Set CS to pin 10


void setup()
{
  Serial.begin(115200);
  
  // Initialize MCP2515 running at 16MHz with a baudrate of 500kb/s and the masks and filters disabled.
  if(CAN0.begin(MCP_ANY, CAN_500KBPS, MCP_16MHZ) == CAN_OK)
    Serial.println("MCP2515 Initialized Successfully!");
  else
    Serial.println("Error Initializing MCP2515...");
  
  CAN0.setMode(MCP_NORMAL);                     // Set operation mode to normal so the MCP2515 sends acks to received data.

  pinMode(CAN0_INT, INPUT);                            // Configuring pin for /INT input
  
  Serial.println("MCP2515 Library Receive Example...");
}

void loop()
{
  if(!digitalRead(CAN0_INT))                         // If CAN0_INT pin is low, read receive buffer
  {
    CAN0.readMsgBuf(&rxId, &len, rxBuf);      // Read data: len = data length, buf = data byte(s)
    
    if((rxId & 0x80000000) == 0x80000000)     // Determine if ID is standard (11 bits) or extended (29 bits)
      sprintf(msgString, "Extended ID: 0x%.8lX  DLC: %1d  Data:", (rxId & 0x1FFFFFFF), len);
    else
      sprintf(msgString, "Standard ID: 0x%.3lX       DLC: %1d  Data:", rxId, len);
  
    Serial.print(msgString);
  
    if((rxId & 0x40000000) == 0x40000000){    // Determine if message is a remote request frame.
      sprintf(msgString, " REMOTE REQUEST FRAME");
      Serial.print(msgString);
    } else {
      for(byte i = 0; i<len; i++){
        sprintf(msgString, " 0x%.2X", rxBuf[i]);
        Serial.print(msgString);
      }
    }
        
    Serial.println();
  }
}

/********************************************************************************​*************************
  END FILE
********************************************************************************​*******
der Code ist Original so aus der Library herauskopiert.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
23.10.2018, 09:55
Beitrag #4
RE: mcp2515 CAN BUS nur eine ID auslesen
Na die ID hast Du ja. Wenn die == 480 ist, machst Du Deine Auswertung auf die beiden Bytes und zeigst die an. Ansonsten tust Du nichts.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
24.10.2018, 01:00
Beitrag #5
RE: mcp2515 CAN BUS nur eine ID auslesen
ok, also im Endeffekt eine normale if Funktion ?
das habe ich allerdings schon versucht, aber hat leider nicht funktioniert, eventuell habe ich es auch falsch gemacht. könnte es einer kurz nur als Beispiel kurz beschreiben?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
24.10.2018, 10:26
Beitrag #6
RE: mcp2515 CAN BUS nur eine ID auslesen
Ich habe keinen mcp2515, kann da also nichts testen. Das wirst Du an Deinem Bus selbst machen müssen.
Lass Dir erst mal alle Meldungen anzeigen.
Dann baust Du das if, dass die id erkennen soll und lässt Dir erst mal nur "gefunden" ausgeben.
Da siehst Du dann im Datenstrom, ob es passt.
Danach bearbeitest Du dann nur noch diese id.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
24.10.2018, 20:51
Beitrag #7
RE: mcp2515 CAN BUS nur eine ID auslesen
ok, danke vielmals Smile ,
ich werde es dann einmal so versuchen und dann dazu berichten
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Eine Frage zu SPI Gary 3 402 01.10.2019 20:54
Letzter Beitrag: Gary
  Zeit vom Nextion Enhanced mit Arduino auslesen MarkoM 47 5.540 06.03.2019 18:08
Letzter Beitrag: Tommy56
  Keypad auslesen Dieter_T 10 1.406 11.02.2019 20:46
Letzter Beitrag: Dieter_T
  Switch erkennt eine Phase nicht DonSonora 27 2.404 30.01.2019 22:24
Letzter Beitrag: MicroBahner
  2 Pt1000 über externen AD wandler auslesen Noob63 16 2.466 15.11.2018 20:10
Letzter Beitrag: ardu_arne
  Per Tastendruck Stepper-Motor eine bestimmte Drehung machen lassen Chef_2 2 1.056 09.10.2018 21:59
Letzter Beitrag: Chef_2
  Neuer versuch eine Schaltung zu bauen. AndreasOHZ 2 906 16.09.2018 21:27
Letzter Beitrag: GuaAck
Smile Punktestand von einem Arduino in eine Access Datenbank schreiben ThePhil 8 1.783 16.07.2018 22:24
Letzter Beitrag: Tommy56
  Sensor mit 10 Hz auslesen Olafson Larson 7 1.510 05.07.2018 15:59
Letzter Beitrag: Tommy56
  Windmesser auslesen will noch nicht so recht klappen.. Stargazer 12 3.223 05.04.2018 10:54
Letzter Beitrag: amithlon

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste