Arduino: Softserial - TX-Pin recyclen?

OP (Firma: Q3) #7181657
Lesenswert?
• ▲
▼
Ich habe ein Projekt mit Wemos D1 Mini, bei dem die IO-Pins knapp 
werden. U.a. liefert ein GPS-Chip über Softserial Daten. Da benötige ich 
eigentlich nur die RX-Leitung am ESP.

Kann ich die zugehörige TX-Leitung einfach mit digitalWrite für andere 
Zwecke verwenden, oder stört das irgendwelche internen Prozesse in der 
SoftSerial-Lib?
Gast #7181725
Lesenswert?
• ▲
▼
Frank E. schrieb:
> oder stört das irgendwelche internen Prozesse in der
> SoftSerial-Lib?

Du könntest in deren Quelltext nachsehen, was die mit dem Pin 
anstellt. Und Du könntest Dir eine Variante davon basteln, die erst gar 
keine Sendefunktionen enthält, um auf Nummer Sicher zu gehen.
Gast #7181996
Lesenswert?
• ▲
▼
Frank E. schrieb:
> Kann ich die zugehörige TX-Leitung einfach mit digitalWrite
> für andere Zwecke verwenden

Vermutlich wird das klappen. Du kannst auch versuchen für TX entweder 
denselben Pin wie für RX oder -1 anzugeben; zumindest manche SW-Serial 
Libs unterstützen auf diese Art halbduplex-Verbindungen und solange Du 
dann nichts sendest kannst Du eben Daten empfangen.
OP (Firma: Q3) #7185223
Lesenswert?
• ▲
▼
Die Frage hat sich zum Positiven klären lassen!

Weil die Arduino-Standard-Lib "SoftSerial" den WLAN-Betrieb des ESP8266 
stört, habe ich nach einer speziellen Version für diesen Chip gesucht 
und gefunden:

https://github.com/plerup/espsoftwareserial

Beim Durchsehen des Sourcecodes entdeckte ich dann auch die Methode 
"void SoftSerial.disableTX(boolean)", die genau tut, was man erwartet. 
Es gibt übrigens auch eine entsprechende Methode für RX, falls man 
einfach nur senden möchte.

Man muss zwar im Constructor trotzdem zwei Pins abgeben, aber für den 
jeweils nich tbenötigten wird z.B. 0 akzeptiert. Beispiel (Parameter 
RX-Pin, TX-Pin, invertierte Logik, Puffergröße):

SoftwareSerial mySerial1(13,0,false,128); mySerial1.disableTX(true);
SoftwareSerial mySerial2(14,0,false,128); mySerial2.disableTX(true);
SoftwareSerial mySerial3(15,0,false,128); mySerial3.disableTX(true);
usw. ...

Bei der Deklaration kann man dann z.B. einfach die entsprechenden RX- 
bzw. TX-Pins in Einer-Schritten direkt nebeneinander definieren ... 
funzt.

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.