Ich möchte meinen Barcode-Scanner über RS232 mit einem Arduino verbinden. Ich habe 2 (RX), 3 (TX) und 5 (GND) des RS232 mit den entsprechenden Pins des MAX232 verbunden. Ich nehme TTL-Ausgänge an den Arduino-Pins 6 und 7.
Dies ist der Code des Arduino-Programms:
#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); } }
Ich bin es nicht Beim Scannen eines Produkts wird eine Ausgabe auf dem seriellen Monitor angezeigt.
Kommentare
- Bitte bearbeiten Sie Ihre Frage und fügen Sie Ihren Schaltplan bei.
- Haben Sie alle die Antwort gefunden?
- @Ahnet: Ja, zu dieser Zeit hatten wir auch einige andere Probleme, wie im Kommentar erwähnt, also nicht ' t dann einen Scheck setzen. Vielen Dank für Ihre Erinnerung.
Antwort
Angenommen, Ihr Arduino verfügt nur über eine serielle Hardwareverbindung (es ist so etwas wie) ein Uno statt eines Mega) Sie haben völlig Recht mit der Verwendung von serieller Software. Der Arduino verwendet bereits die Pins 2 und 3, um über USB mit dem seriellen Monitor zu kommunizieren, sodass Sie sie nicht für die Kommunikation mit dem Scanner verwenden können.
Wie genau Sie sich auch Ihre erste Codezeile ansehen, Sie haben die Software-Serie gebeten, die Pins 6 & 7 zu verwenden, aber den Barcode-Scanner an die Pins 2 & 3. Verschieben Sie diese Pins auf die von Ihnen angegebenen.
Zweitens haben Sie in Ihrer Setup-Funktion mit der Kommunikation mit Hardware Serial, aber nicht mit Software Serial begonnen „Ich muss etwas wie mySerial.begin (XXX) hinzufügen, wobei XXX die Baudrate für den Scanner ist.
Schließlich haben Sie dem Arduino nicht gesagt, welchen PinMode er für 6 und 7 verwenden soll Ich möchte auch PinMode (6, INPUT) und PinMode (7, OUTPUT).
C. omments
- Nach dem Hinzufügen von mySerial.begin (XXXX) hat der Code ordnungsgemäß funktioniert. Immer wenn ich die RS232-Pins leicht bewege, werden Ziffern auf dem Bildschirm gedruckt. Aber nicht, wenn ich scanne.
- Sind Sie sicher, dass Sie ' sie richtig herum haben?
Antwort
RS 232 arbeitet mit anderen Spannungspegeln als Arduino. Ich glaube, die Werte, die Sie auf dem Bildschirm erhalten, haben keinerlei Bedeutung. Wenn die Scannerausgabe TTL ist dann würde es ja funktionieren, aber nach meiner eigenen Erfahrung ist diese Logik invertiert und Sie müssen der Software-Serie eine 1 hinzufügen:
SoftwareSerial mySerial (6, 7, 1); // RX, TX
Der erste Schritt besteht darin, zu überprüfen, welcher Spannungspegel von Ihrem Scannerausgang gegeben wird.
Antwort
Ich habe es auch versucht, aus irgendeinem Grund funktioniert es NICHT an den Pins 6 und 7, aber es funktioniert perfekt, wenn stattdessen die Pins 10 und 11 verwendet werden. Natürlich müssen Sie noch die mySerial.begin()
hinzufügen.