Es gibt so viele serielle Software-Bibliotheken. Was sind die Unterschiede zwischen ihnen? Und welches kann ich mit meinem Arduino Nano verwenden? Für meinen Arduino Nano benötige ich einen seriellen Hardware-Port und einen seriellen Software-Port mit einer Baudrate von 115200.
An welchen Pins des Arduino Nano kann ich die serielle Softwarebibliothek verwenden?
serial
arduino-nano
uart
William Roy
quelle
quelle
key=getKey();
mein GSM hinzufüge (mit Pin 2 & 3, empfängt Arduino Uno) keine SMS. Hilf mir bitte.Antworten:
Diese Antwort listet die 4 grundlegenden Optionen auf:
HardwareSerial
, immer das Beste. Verwenden Sie einfach die vordefinierteSerial
Variable. Auf einigen Arduinos gibt es zusätzliche HardwareSerial Ports genanntSerial1
,Serial2
usw. Der Nano hat nurSerial
.AltSoftSerial
, die besten seriellen Softwarebibliotheken. Es ist nur eine Instanz zulässig, die an einem der Input Capture-Pins (Pins 8 und 9 für einen Nano) verwendet werden muss.Mein
NeoSWSerial
ist das nächstbeste. Es funktioniert mit zwei beliebigen Pins, jedoch nur mit den Baudraten 9600, 19200 und 38400.SoftwareSerial
ist die schlechteste Wahl. Es funktioniert mit zwei beliebigen Pins, ist aber sehr ineffizient. Es deaktiviert Interrupts für die gesamte Zeit, in der ein Zeichen gesendet wird oder empfangen werden , und es kann nicht beides gleichzeitig tun ( im Gegensatz zu allen anderen seriellen Entscheidungen). Dies kann andere Teile Ihrer Skizze, andere Gerätekommunikation oder Bibliotheken beeinträchtigen.Wenn Sie eine langsamere Baudrate verwenden könnten, könnten Sie Ihre Debug-Ausdrucke beibehalten
Serial
und entwederAltSoftSerial
oderNeoSWSerial
für Ihr Gerät verwenden.Wenn Sie jedoch 115200 verwenden müssen, ist die einzig zuverlässige Wahl
Serial
. ObwohlAltSoftSerial
undSoftwareSerial
erlauben diese Baudrate, können sie Daten nicht korrekt senden / empfangen.In diesem Fall würde ich die Verwendung
Serial
für das 115200-Gerät vorschlagen. Sofern Sie keinen ISP verwenden, müssen Sie das Gerät trennen, um eine neue Skizze über USB hochzuladen.Verwenden Sie dann
AltSoftSerial
oderNeoSWSerial
für Ihre Debug-Anweisungen. Sie benötigen einen TTL Serial-zu-USB-Adapter (auch bekannt als FTDI) an den ausgewählten Pins, um eine Verbindung zum PC herzustellen. DasSerial Monitor
oder ein anderes Terminalemulatorprogramm liest von diesem USB-COM-Anschluss.quelle
NeoICSerial
fügt nur dieattachInterrupt
Methode hinzuAltSoftSerial
. Sie müssen wahrscheinlich nicht jedes Zeichen in einem Interrupt behandeln. Verwenden Sie einfachAltSoftSerial
und rufen Sie dieavailable()
und dann,read()
wenn ein Zeichen bereit ist. In ähnlicher Weise wird dem KernNeoHWSerial
dieselbeattachInterrupt
Funktion hinzugefügtHardwareSerial
. IstNeoSWSerial
jedoch eine völlig andere Klasse (es hat auch dieattachInterrupt
Funktion).Serielle Software emuliert eine serielle Schnittstelle, die sich von einer nativen Schnittstelle unterscheidet, die ein Register hat, um alle Bits in der richtigen Reihenfolge zu speichern, und ein Flag zum Aufrufen der Hauptschleife setzt. Eine serielle Software hat nichts davon. Die serielle Software muss alle Bits einzeln empfangen. Sie müssen also einen digitalen Port lesen, eine bestimmte Zeit warten und den digitalen Pin erneut lesen. Sie müssen es 10 Mal machen (1 Startbit, 8 Datenbits und 1 Endbit). Die Zeit ist sehr wichtig. Um eine Software-Serie zu verwenden, müssen Sie sich mehr Gedanken über die Leistung machen.
Sie können einen digitalen Interrupt-Pin für den RX-Pin verwenden, sodass Sie am unteren Rand (Startbit) "angerufen" werden und die 8 Bits empfangen.
quelle