Problem: Softw. Serial auslesen

Hallöchen, ich hoffe hier kann mir jemand helfen.
ich bastel gerade seid 2-3 Tagen an einem Datenlogger für meinen Solarregler.
Aber irgendwie will es nicht klappen div. Codebeispiele habe ich durchprobiert…

Ausgangsbasis: Arduino Uni, Software Serial und einem Solarregeler, der Serial
mit TTL Pegel Daten sendet.

Anschlussfehler kann ich ausschließen. Wenn ich den Solarregler direkt an PIN1/2
anschließe und den Reset Pin auf GND schieße (USB/TTL Interface), empfange ich
Daten im Terminalfenster.

Nun habe ich den Software Serial programmiert will dort die Daten/Zeichen ersteinmal
nur auslesen und auf einen LCD anzeigen bzw. via Hardware Serial zum PC senden
zum testen. Beides funktioniert nicht. Selbst die Funktion gtSerial.available() reagiert
nicht. Ich weiss nicht was ich falsch mache. Ich habe schon daten via Byte und String
auslesen wollen.

Ganz einfaches Codebeispiel klappt nicht:

#include <SoftwareSerial.h>
SoftwareSerial gtSerial(8, 9); // Arduino RX, Arduino TX

int incomingByte = 0; // for incoming serial data

void setup() {
gtSerial.begin(19200);
Serial.begin(19200);
}

void loop() {

// send data only when you receive data:
if (gtSerial.available() > 0) {
// read the incoming byte:
incomingByte = gtSerial.read();

// say what you got:
Serial.print("I received: ");
Serial.println(incomingByte, DEC);
}
}

Wie gesagt mit STRING Beispielen klappt auch nichts. Es kommen keine Zeichen an. Der Code
springt nicht einmal in die IF Anweisung.

Hallo
Willkommen im Forum.
Deine Anweisung "gtSerial.available" ist nicht richtig.
Sieh dir das mal im folgenden Beispiel and:

Edit:
Auch mit 19200 baud könnte es knapp werden, 9600 sind da besser.

Willkommen im Forum!

Sind die beiden GND miteineinander verbunden?

RX, TX richtig angeschlossen RX an TX und TX an RX?
Mal austauschen?

Wenn du schreibst:

tt2k:
Wenn ich den Solarregler direkt an PIN1/2
anschließe ...

und du dich nicht vertippt hast, dann ist möglicherweise was faul, denn RX/TX am Arduino Board sind Pin 0 und 1 und nicht Pin 1 und 2.

Geschwindigkeitsproblem
SoftwareSerial funktioniert nur bei niedrigen Geschwindigkeiten (etwa bis 9600), bei höheren nicht so gut.
19200 sind schon ein wenig viel... aber da kommen dann eher "Zufallszeichen" an und nicht nichts - deshalb denke ich es ist eher ein anderes Problem.

Du kannst AltSoftSerial versuchen, das geht auch mit höheren Geschwindigkeiten, funktioniert aber nur auf speziellen Pins (beim UNO Pin-8 für RX und Pin-9 für TX).

Hallo,
danke für die Antworten. Natürlich habt ihr Recht, die Hardware PINS sind 0/1. Wie gesagt,
wenn ich die PINs direkt zum PC an das terminal durchleite funktioniert alles und die richtigen
Daten vom Solarlader werden angezeigt. GND habe ich verbunden und auch RX/TX schon vertauscht.

Die available Funktion habe ich schon in diversen Varianten ausprobiert. Ich habe auch schon nur das
serial.read() direkt abgefragt. Es kommen auch keine Zeichen an.

19200 liefert der Solarlader, das kann ich auch nicht verstellen. Kann es sein, dass die Software.Serial
auf dem UNO die 19200 nicht schafft?

Ich versuche mal die AltSoftSerial Funktion.

Ich berichtet euch wie es ausgegangen ist.

MfG
Timo Herde

tt2k:
19200 liefert der Solarlader, das kann ich auch nicht verstellen. Kann es sein, dass die Software.Serial
auf dem UNO die 19200 nicht schafft?

Ich versuche mal die AltSoftSerial Funktion.

Das hatten wir ja schon geschrieben.
Also AltSoftserial verwenden.

Ich versuche mal die AltSoftSerial Funktion.

AltSoftSerial ist keine Funktion sondern eine andere Bibliothek/Klasse

Ansonsten nimm einen Arduino Leonardo. Da ist USb und Seial voneinander unabhängig.
Grüße Uwe