Arduino Leonardo UART Daten empfangen und über Serial Montior darstellen

OP #3814859
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.
#3825537
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.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.