RS232を使用してバーコードスキャナーをArduinoに接続したい。 RS232の2(RX)、3(TX)、5(GND)をMAX232の対応するピンに接続しました。 Arduinoのピン6と7でTTL出力を取得しています。
これはArduinoプログラムのコードです:
#include <SoftwareSerial.h> SoftwareSerial mySerial(6, 7); // RX, TX void setup() { Serial.begin(9600); } void loop() { // run over and over if (mySerial.available()) { byte x = mySerial.read(); Serial.println(x); } }
私はそうではありません製品をスキャンすると、シリアルモニターに出力が表示されます。
コメント
- 質問を編集して、回路図を含めてください。
- 答えは見つかりましたか?
- @Ahnet:はい、コメントに記載されているように、当時は他にも問題がありました。' t次にチェックを入れます。思い出させてくれてありがとう。
回答
Arduinoにハードウェアシリアル接続が1つしかない場合(次のようになります)メガではなく宇野)あなたは「ソフトウェアシリアルを使用するのに非常に正しいです。Arduinoはすでにピン2と3を使用してUSB経由でシリアルモニターに通信しているので、それらを使用してスキャナーと通信することはできません。」 p>
ただし、コードの最初の行を注意深く見てください。「ソフトウェアシリアルにピン6 & 7を使用するように依頼しましたが、バーコードスキャナーをピン2に接続しました& 3。これらのピンを指定したピンに移動します。
次に、セットアップ機能で、ソフトウェアシリアルではなくハードウェアシリアルとの通信を開始しました。 「mySerial.begin(XXX)のようなものを追加する必要があります。ここで、XXXはスキャナーのボーレートです。
最後に、Arduinoに6と7に使用するpinModeを指示していません。」そこにもpinMode(6、INPUT)とpinMode(7、OUTPUT)が必要です。
C omments
- mySerial.begin(XXXX)を追加した後、コードは正しく機能しました。RS232ピンを少し動かすと、画面に数字が印刷されます。しかし、私がスキャンしたときではありません。
- '正しい方法でそれらを取得したと確信していますか?
回答
RS 232はArduinoとは異なる電圧レベルで動作します。スキャナー出力がTTLの場合、画面に表示される値はまったく意味がないと思います。そうすれば機能しますが、私自身の経験では、ロジックが逆になっているため、ソフトウェアシリアルに1を追加する必要があります。
SoftwareSerial mySerial(6、7、1); // RX、TX
最初のステップは、スキャナー出力によって与えられる電圧レベルを確認することです。
回答
これも試しました。何らかの理由でピン6と7では機能しませんが、代わりにピン10と11を使用すると完全に機能します。もちろん、mySerial.begin()
を追加する必要があります。