Hallo zusammen,
kurz zu meiner Person: Heiße Michael, bin 22 Jahre alt und studiere Maschinenbau. Bin Hobbyelektroniker und benötige eure Hilfe.
Zu meinem Vorhaben: Ich habe einen Audi A3 8P (Baujahr 2011). In diesen möchte ich mir einen Car PC bauen. Über das Konzept habe ich mir schon einige Gedanken gemacht. Nur habe ich dabei das Problem, dass ich meine Lenkradfernbedienung erhalten möchte (also das Multifunktionslenkrad). Ich habe mich dazu in der Vergangenheit bereits schon etwas informiert wie die Ansteuerung des Radios funktioniert und habe mir daraufhin einen Arduino mit dem Can Bus Shield von Seeed zugelegt.
http://wiki.seeed.cc/CAN-BUS_Shield_V1.2/
Der Ablauf meines Projekts war jetzt so geplant, dass ich erstmal meinen Can Bus auswerte, und mir ein Programm (für den Arduino) schreibe, welches mir zunächst die wichtigen Werte raus filtert (lauter, leiser, Titel vor und zurück...) und dann über USB an meinen PC "Werte" sendet. Dort wollte ich mir dann nochmal ein kleines Programm schreiben, welches die "Werte" auswertet und dann intern im Windows lauter und leiser dreht. Sobald dann Softwareseitig alles stehen sollte, wollte ich Hardware kaufen (Bildschirm und PC) und alles fertig zusammenbauen und Spaß haben.
Nun zu meinem Problem: Ich schaffe es einfach nicht, mir die Can Codes anzeigen zu lassen. Dabei muss ich anmerken, dass ich definitiv kein Programmierprofi bin und meine Kunstwerke auf Trial & Error beruhen. Zum Auslesen habe ich bis jetzt einen Beispielcode von Seeed verwendet, nur damit ich mal was in der Hand habe. Den Code hab ich unten mal angehängt. Kann leider nicht sagen, ob dieser grundsätzlich geeignet ist. Verkabelungsfehler schließe ich aus. Hab das Can High und Low vom Radio Stecker abgegriffen und mit dem Oszi bekomm ich auch ein Signal.
Wenn jemand vielleicht drüber schauen könnte um mir womöglich die Augen zu öffnen, wäre ich sehr dankbar (ich persönlich vermute ja sehr schwer einen Fehler im Code).
Viele Grüße
Michael
Code: |
// demo: CAN-BUS Shield, receive data with check mode
// send data coming to fast, such as less than 10ms, you can use this way
// loovee, 2014-6-13
#include <SPI>
#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
void setup()
{
Serial.begin(115200);
while (CAN_OK != CAN.begin(CAN_500KBPS)) // init can bus : baudrate = 500k
{
Serial.println("CAN BUS Shield init fail");
Serial.println(" Init CAN BUS Shield again");
delay(100);
}
Serial.println("CAN BUS Shield init ok!");
}
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();
}
}
/*********************************************************************************************************
END FILE
*********************************************************************************************************/ |
[/url]