Es ist ein Arduino Pro Mini 3.3v, 8MHz
Das mit den Pins wusste ich gar nicht. Hier ist das auch nochmal
erklärt:
http://www.arduino.cc/en/Reference/SoftwareSerial
Ich besorge mir etwas mit mehr Hardware serials....
Ist das Programm ansonsten so brauchbar? Komme aus der Java Welt...
Ich sehe auf dem Softwareserial "Müll" - da sind teilweise
abgeschnittene Ausgaben oder vertauschte Zeichen. Manchmal ists auch so
wie erwartet.
Beispiel:
Erwartet wird Ausgabe wie "41 0C 00 00"
Stattdessen kommt zB "414 0C 00000" oder "C 0000 04" usw.
Das hatten wir doch gerade schon mal mit der Soft-UART beim Arduino?
Ah, ja, siehe hier:
Beitrag "GPS Sensor - UART Ausgabe"
Vllt. kannst du da Erkenntnisse draus ziehen. Nur noch mal zur Klärung:
Am DB9 hast du dein Adapterkabel auf OBD-II und auf der 6-pol
Stiftleiste (wo GRN und BLK dransteht) den Arduino über ein paar
Dämpfungswiderstande auf Pin 4 und 5 des Port A?
Ziehst du die Versorgung des ELM aus der OBD Buchse oder dem Arduino?
filth schrieb:> Mir geht es speziell um meine String readOBDId(String id, int numBytes){> Methode.
Das kannst du leicht über dein Startup rausfinden, du musst dir ja nur
mal den Antwortstring auf
Filth __ schrieb:> //Reset the OBD-II-UART> readOBDId("ATZ\r", 0);> delay(5000);
ausgeben, also
1
Stringresult;
2
result=readOBDId("ATZ\r",12);
3
softwareSerial.print(result);
Frag mich nicht, ob die Syntax stimmt, ich bin Arduino Ignorant. Aber
dann weisst du zumindest, ob die Routine richtig ist, denn der ELM muss
ja mit der Version antworten. Vermutlich ist es auch sinnvoll, nicht auf
eine feste Anwortlänge zu setzen, sondern die Routine entweder nach
Timeout oder dem EOF Zeichen (CR? LF?)des ELM zu beenden.
Marc S. schrieb:> anstatt einfach einen neuen arduino zu kaufen wäre es sinnvoller zu> sagen was denn nicht klappt und wie du das ganze verkabelt hast.
Diese Fragen sind aber schon beantwortet:
Filth __ schrieb:> Beispiel:> Erwartet wird Ausgabe wie "41 0C 00 00"> Stattdessen kommt zB "414 0C 00000" oder "C 0000 04" usw.Filth __ schrieb:> TX/RX/GND einfach an den uC und gib ihm ;)
Da der TE auch Zeichen bekommt, ist die Verkabelung (bis auf die o.a.
Dämpfungswiderstände) funktionsfähig.
Moin,
ich hab zwar nur den 323, aber möglicherweise ist es das gleiche
Problem.
Irgendwie passt die Baudrate nicht perfekt beim ELM, sodass es nicht
sicher mit dem AVR ging.
Ich musste die Baudrate geringfügig in den Registern ändern.
MfG
Matthias Sch. schrieb:> Marc S. schrieb:>> anstatt einfach einen neuen arduino zu kaufen wäre es sinnvoller zu>> sagen was denn nicht klappt und wie du das ganze verkabelt hast.>> Diese Fragen sind aber schon beantwortet:>> Filth __ schrieb:>> Beispiel:>> Erwartet wird Ausgabe wie "41 0C 00 00">> Stattdessen kommt zB "414 0C 00000" oder "C 0000 04" usw.
das hab ich glatt überlesen.
ich würde noch probieren den software serial langsamer zu machen.
Danke für den Tipp! Setze ich die Register einfach so in dem Programm?
void setup() {
...
UCSRA=0x00;
UCSRB=0x18;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x33;
...
}
Filth __ schrieb:> Serial.begin(9600);
Schau nochmal in den Libraries, aber eigentlich sollte es gehen, wenn du
z.B.
[c]
Serial.begin(9580);
// oder
Serial.begin(9630);
[/]
benutzt, die Library sollte dir die Register richtig besetzen. Das
gleiche gilt für die Soft-UART.