回答:
この回答には、4つの基本的な選択肢がリストされています。
HardwareSerial
、 いつも最高。事前定義されたSerial
変数を使用するだけです。いくつかのArduinosでは、と呼ばれる余分なHardwareSerialポートがあるSerial1
、Serial2
などのザ・ナノしかありSerial
。
AltSoftSerial
、最高のソフトウェアシリアルライブラリ。許可されるインスタンスは1つだけであり、いずれかの入力キャプチャピン(Nanoのピン8および9)で使用する必要があります。
私NeoSWSerial
は次善です。2つのピンで動作しますが、ボーレートは9600、19200、38400のみです。
SoftwareSerial
最悪の選択です。任意の2つのピンで機能しますが、非常に非効率的です。これは、文字が送信または受信されている間ずっと割り込みを無効にし、(他のすべてのシリアル選択とは異なり)同時に両方を行うことはできません。これは、スケッチの他の部分、他のデバイス通信、またはライブラリと干渉する可能性があります。
低速のボーレートを使用できる場合は、デバッグプリントをオンSerial
にして、AltSoftSerial
またはのいずれかNeoSWSerial
をデバイスで使用できます。
しかし、115200を使用する必要がある場合、信頼できる唯一の選択はSerial
です。けれどもAltSoftSerial
およびSoftwareSerial
そのボーレートを許可し、彼らは送信しないこと/データを正しく受信します。
その場合、Serial
115200デバイスに使用することをお勧めします。ISPを使用している場合を除き、USB経由で新しいスケッチをアップロードするには、デバイスを切断する必要があります。
次に、デバッグ文にAltSoftSerial
またはNeoSWSerial
を使用します。PCに接続するには、選択したピンにTTLシリアル-USBアダプター(別名FTDI)が必要です。Serial Monitor
またはその他のターミナルエミュレータプログラムは、そのUSBのCOMポートから読み込みます。
NeoICSerial
追加するだけです。おそらく、割り込みで各文字を処理する必要はありません。ただ、使用してコールし、その後やcharが準備ができている場合。同様に、同じ機能をコアに追加します。ただし、完全に異なるクラスです(機能もあります)。attachInterrupt
AltSoftSerial
AltSoftSerial
available()
read()
NeoHWSerial
attachInterrupt
HardwareSerial
NeoSWSerial
attachInterrupt
シリアルソフトウェアはシリアルポートをエミュレートします。これは、すべてのビットを順番に保存するためのレジスタを備えたネイティブポートとは異なり、メインループを呼び出すフラグを設定します。ソフトウェアシリアルにはそれがありません。ソフトウェアシリアルはすべてのビットを1つずつ受信する必要があるため、デジタルポートを読み取り、特定の時間待機してからデジタルピンを再度読み取る必要があります。あなたはそれを10回作る必要があります(1スタートビット、8データビット、1エンドビット)。時間は非常に重要です。ソフトウェアシリアルを使用するには、パフォーマンスについてもっと心配する必要があります。
RXピンにデジタル割り込みピンを使用できるため、ダウン境界(開始ビット)で「呼び出され」、8ビットを受信します。
key=getKey();
使用していますが、GSM を追加すると(ピン2&3 Arduino Unoを使用)、SMSを受信しません。お願い助けて。