すべてのソフトウェアシリアルライブラリの違いは何ですか?Arduino Nanoと互換性があるのはどれですか?


11

ソフトウェアシリアルライブラリはたくさんありますが、それらの違いは何ですか?Arduino Nanoで使用できるのはどれですか?私のArduino Nanoには、115200のボーレートで1つのハードウェアシリアルポートと1つのソフトウェアシリアルポートが必要です。

Arduino Nanoのどのピンでソフトウェアシリアルライブラリを使用できますか?


I2Cキーパッドでneoswserialをkey=getKey();使用していますが、GSM を追加すると(ピン2&3 Arduino Unoを使用)、SMSを受信しません。お願い助けて。
グエンチュオンハイ

回答:


16

この回答には、4つの基本的な選択肢がリストされています。

  • HardwareSerial、 いつも最高。事前定義されたSerial変数を使用するだけです。いくつかのArduinosでは、と呼ばれる余分なHardwareSerialポートがあるSerial1Serial2などのザ・ナノしかありSerial

  • AltSoftSerial、最高のソフトウェアシリアルライブラリ。許可されるインスタンスは1つだけであり、いずれかの入力キャプチャピン(Nanoのピン8および9)で使用する必要があります。

  • NeoSWSerialは次善です。2つのピンで動作しますが、ボーレートは9600、19200、38400のみです。

  • SoftwareSerial最悪の選択です。任意の2つのピンで機能しますが、非常に非効率的です。これは、文字が送信または受信されている間ずっと割り込みを無効にし、(他のすべてのシリアル選択とは異なり)同時に両方を行うことはできません。これは、スケッチの他の部分、他のデバイス通信、またはライブラリと干渉する可能性があります。

低速のボーレートを使用できる場合は、デバッグプリントをオンSerialにして、AltSoftSerialまたはのいずれかNeoSWSerialをデバイスで使用できます。

しかし、115200を使用する必要がある場合、信頼できる唯一の選択はSerialです。けれどもAltSoftSerialおよびSoftwareSerialそのボーレートを許可し、彼らは送信しないこと/データを正しく受信します。

その場合、Serial115200デバイスに使用することをお勧めします。ISPを使用している場合を除き、USB経由で新しいスケッチをアップロードするには、デバイスを切断する必要があります。

次に、デバッグ文にAltSoftSerialまたはNeoSWSerialを使用します。PCに接続するには、選択したピンにTTLシリアル-USBアダプター(別名FTDI)が必要です。Serial Monitorまたはその他のターミナルエミュレータプログラムは、そのUSBのCOMポートから読み込みます。


AltSoftSerialのパフォーマンスと特性は同じですか、NeoICSerialが何の機能を追加するだけですか?完全には理解できませんでした。github.com/SlashDevin/NeoICSerial
William Roy

2
@WilliamRoy、メソッドをにNeoICSerial追加するだけです。おそらく、割り込みで各文字を処理する必要はありません。ただ、使用してコールし、その後やcharが準備ができている場合。同様に、同じ機能をコアに追加します。ただし、完全に異なるクラスです(機能もあります)。attachInterruptAltSoftSerialAltSoftSerialavailable()read()NeoHWSerialattachInterruptHardwareSerialNeoSWSerialattachInterrupt
slash-dev 2017

-2

シリアルソフトウェアはシリアルポートをエミュレートします。これは、すべてのビットを順番に保存するためのレジスタを備えたネイティブポートとは異なり、メインループを呼び出すフラグを設定します。ソフトウェアシリアルにはそれがありません。ソフトウェアシリアルはすべてのビットを1つずつ受信する必要があるため、デジタルポートを読み取り、特定の時間待機してからデジタルピンを再度読み取る必要があります。あなたはそれを10回作る必要があります(1スタートビット、8データビット、1エンドビット)。時間は非常に重要です。ソフトウェアシリアルを使用するには、パフォーマンスについてもっと心配する必要があります。

RXピンにデジタル割り込みピンを使用できるため、ダウン境界(開始ビット)で「呼び出され」、8ビットを受信します。


1
これは、元の質問に答えようとするものではありません。
Edgar Bonet、2017

1
はい、これは元の質問に答えようとするものではありません。これは、Arduinoコミュニティがペリフェラルコードを知らないためです。
ロドリゴ2017
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.