Arduino 1.0.5 SoftwareSerial ライブラリに少し問題があります。理想的には、ここで Mega を使用する必要があることは理解していますが、残念ながら Uno R3 で間に合わせる必要があります。
複数の SoftSerial ポートを使用できることは理解していますが、2 つのポートを切り替えるSoft1.listen();
などして使用すると問題が発生するようです。
たとえば、以下のスケッチを実行すると:
#include <SoftwareSerial.h>
SoftwareSerial Soft1(3,2);
SoftwareSerial Soft2(5,4);
void setup()
{
Soft2.begin(9600);
}
void loop()
{
Soft2.print("Test");
delay(1000);
}
私はまさに私が期待していたものを手に入れました-「Test」という単語が毎秒印刷されました。今、私が置き換えSoft2.begin
てSoft1.begin
も何も得られません。Soft1.listen();
「印刷」の前に追加しても、「開始」の前に追加しても違いはありません。1 つのポートから読み取り/書き込みを行い、2 番目のポートにのみ書き込む必要がありますが、SoftwareSerial ライブラリは、プログラム中に宣言されたときに、どのポートを使用するかを決定しているようです。
複数の SoftwareSerial ポートを正常に使用したことがある人はいますか?
編集:
ソフトウェアシリアル宣言の順序を入れ替えると、ライブポートとデッドポートが逆になるため、実際にはその時点で何かがあるように見えます。テストのために、必要になるまでどちらのポートも開始せず、次のことを試しました。
void loop() {
Soft2.begin(9600);
Soft2.print("test2");
Soft2.end();
delay(1000); // For stability/to alleviate timing issues, whatever.
Soft1.begin(9600);
Soft1.print("test1");
Soft1.end();
}
しかし、役に立たない。「test2」出力が表示されているだけです。
乾杯、
アレックス。