Forum: Mikrocontroller und Digitale Elektronik Arduino Leonardo UART Daten empfangen und über Serial Montior darstellen


von Norbert V. (norbie)


Lesenswert?

Hallo zusammen,

ich möchte über die UART Schnittstellte (Pin 0 und 1) eines Leonardo 
Boards Daten an einen Slave schicken beziehungsweise auch empfangen. Das 
Senden funktioniert auch schon super, nur habe ich ein bisschen Probleme 
mit dem Empfangen. Mein Programmausschnitt sieht wie folgt aus:

Serial.begin(BAUDRATE, SERIAL_8N1);
  if (Serial.available()) {
                // read the incoming byte:
                rx = Serial.read();

                Serial.print("received: ");
                Serial.println(rx, HEX);
  }


  /*
  Serial.end();
  delayMicroseconds(2000);
  Serial.print("received: ");
  Serial.println(rx, HEX);*/

Es macht komischerweise keinen Unterschied ob ich Serial1 oder 
Serial.read()... verwende. Für das Schreiben verwende ich z.B. 
Serial1.write(). Ich sehe, dass die gewünschten Daten auch am RX Pin 
anliegen, nur möchte ich diese zur Kontrollte am Seriellen Monitor der 
Entwicklungsumgebung auch anzeigen lassen. Es funktioniert bislang weder 
mit den nicht auskommentierten Zeilen, noch mit den auskommentierten. 
Mit dem unteren Teil empfange ich auch gar keine Daten am RX Pin, dies 
scheint also der falsche Weg zu sein. Womöglich habe ich auch noch nicht 
zu 100% verstanden, wie es richtig programmiert werden muss.

Wie bereits geschrieben, sende ich eine Art Aufforderung an den Slave 
und erwarte in diesem Beispiel 2 Byte an Daten zurück. Wie würde hierfür 
der richtige Code aussehen? Was ich mich vor allem Frage, wie kann ich 
die beiden Bytes der Reihe nach aufrufen bzw. aus dem Buffer holen und 
dann weiter verarbeiten?

Des Weiteren weis ich nicht, ob es mit dem Leonardo überhaupt möglich 
ist, mit den Pins 0 und 1 zu arbeiten und anschließend auch mit 
Serial.println() etwas über den Seriellen Monitor darstellen zu lassen. 
Hier wäre auch etwas Erklärungsbedarf :-)

Vielen Dank schon mal im Voraus für eure Hilfe.

von Jürgen S. (jurs)


Lesenswert?

Norbert Van der Heyd schrieb:
> Des Weiteren weis ich nicht, ob es mit dem Leonardo überhaupt möglich
> ist, mit den Pins 0 und 1 zu arbeiten und anschließend auch mit
> Serial.println() etwas über den Seriellen Monitor darstellen zu lassen.
> Hier wäre auch etwas Erklärungsbedarf :-)

Der Leonardo hat zwei serielle Schnittstellen: Serial und Serial1

Dabei ist "Serial" über das USB-Kabel an Deinen PC angeschlossen, per 
USB CDC (communications device class). Über "Serial" läuft also die 
Kommunikation mit dem "Seriellen Monitor" auf Deinem PC. Irgendwelche 
Pins werden beim Leonardo dafür NICHT benötigt, das läuft rein über USB.

Darüber hinaus hat der Leonardo eine serielle Schnittstelle Serial1 an 
den Arduino Pins 0 und 1 mit TTL-Pegel. Diese Schnittstelle ist nicht 
mit Deinem PC verbunden und daran könntest Du andere serielle Geräte 
hängen, z.B. ein GPS- oder GSM-Modul.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.