バーコードスキャナーからArduinoのシリアルデータを取得するにはどうすればよいですか?

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()を追加する必要があります。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です