ich hab ein Arduino Uno und das Sparkfun CAN Shield und würde gern die Geschwindigkeit des Wagens und Drehzahl des Motors (Audi, BJ 2008) auslesen.
Ich hab CAN High, Can Low, 5V und GND hinterm Navi.
Verbinde ich jeden der Pins vom Shield mit den jeweiligen Pins auf dem Arduino? Dann ist der Uno nämlich komplett voll und ich muss mindestens ein, besser ein paar mehr Pins frei haben für ein paar kontroll LEDs. Braucht das Shield immer alle Pins oder kann man die ggf noch anders benutzen, falls sie das Shield nicht braucht ?
Dann die wichtige Frage:
Wie kriege ich die Drehzahl und die Geschwindigkeit aus dem CAN ausgelesen?
#include <Canbus.h>
if(Canbus.init(CANSPEED_500)) den Can Chip initialisieren
und dann mit Canbus.ecu_req(VEHICLE_SPEED,buffer) in einen puffer schreiben ?
Ich hätte am liebsten so eine funktion wie
es läuft schonmal so weit, über den Seriellen Port kann ich alles auslesen. Aber was, wenn ich jetzt das auf dem LC Display anschließen will? Ich hab noch nie gesehen, dass ein LCD mit nur 3 Pins angesteuert wird, ich kenn nur den 4 und 8 bit Modus.
BesterMann:
Ich hab noch nie gesehen, dass ein LCD mit nur 3 Pins angesteuert wird, ich kenn nur den 4 und 8 bit Modus.
Parallel ja. Da ist 4 Bit üblich.
Es gibt aber auch LCDs für die serielle Schnittstelle (was das in dem Link haben wird), oder noch besser I2C (die haben einfach einen Adapter, der auf das normale Display aufgelötet wird).
Ja da hab ich auch drüber nachgedacht, nur wie finde ich heraus, welche Ports vom Shield belegt sind und welche nicht? Nicht, dass sie in irgendeiner internen Routine doch verwendet werden, ich das nicht weiß und sie versehentlich benutze? Auf der Webseite hab ich nichts dazu gefunden.
MFG
Daniel
edit: hab es doch gefunden:
Jetzt ist das Problem, dass ja sicher noch Pins verwendet werden, die das sLCD in Anspruch nimmt. Nehme ich das sLCD nicht in Anspruch und will ein "normales" LCD anschließen, könnte ich diese ja anders belegen, da sie gar nicht aufgerufen werden. Nur wie soll ich das raus kriegen?
Ich glaube dass es D13-D11 ist, da die bezeichnungen ja für ein serielles interface stehen. Lieg ich da richtig?
Du musst dir den Schaltplan vom Shield anschauen, den findet man auf der Homepage.
Frei sein sollten D3, D4 und D5. D6 wäre für das LCD, wenn du ein anderes Display anschliesst könntest du den Ausgang hierfür aber auch verwenden. D9 ist für die SD-Karte, wenn du keine nutzt wäre der auch frei. Hat bei mir mit diesen 5 Ausgängen problemlos funktioniert.
Kurze Frage, welche Library nutzt du mit dem Shield?
Spexx:
Du musst dir den Schaltplan vom Shield anschauen, den findet man auf der Homepage.
Frei sein sollten D3, D4 und D5. D6 wäre für das LCD, wenn du ein anderes Display anschliesst könntest du den Ausgang hierfür aber auch verwenden. D9 ist für die SD-Karte, wenn du keine nutzt wäre der auch frei. Hat bei mir mit diesen 5 Ausgängen problemlos funktioniert.
Kurze Frage, welche Library nutzt du mit dem Shield?
Bist du dir ganz sicher mit den Ausgängen? Denn hier Arduino Shield List: Sparkfun CAN-Bus Shield hab ich was anderes gefunden. Hast du vielleicht einen Link von der betreffenden Stelle auf der Homepage? War da wie gesagt nicht fündig.
Ich nutze die Canbus (Canbus.h) Library von Sukkin Pang (2010). Sollte ich besser eine andere verwenden bzw welche hast du verwendet ?
Hallo Martin, besten Dank!
Ich gehe davon aus, dass nicht aufgeführte Pins auch nicht verwendet werden.
Die LED kann ich ja auch raus kicken . Pin 11 bis 13 sind die serielle Kommunikation für das LCD oder für die SD Karte oder für noch etwas anderes? Ich muss gestehen effektiv 2 Pins fände ich recht wenig als Verbindung zum Arduino.
Auf der Sparkfun-Seite gibt es dazu auch einen Schaltplan:
Wenn ich das richtig interpretiere, wäre zu den von mir bereits genannten Pins auch noch A0 frei verwendbar. Habe mein LCD-Display an folgenden Pins angeschlossen: A0, D3, D4, D5, D6, und D9. Einfacher wäre vermutlich über I2C, dann wären noch Pins für andere Sachen frei.
Hatte mal verschiedene Bibliotheken probiert, die ich entweder über Google oder hier im Forum gefunden habe. Die meisten haben aber nicht richtig funktioniert. Daher rein interessehalber die Frage, mit welcher du arbeitest