Jag vill ansluta min streckkodsläsare till en Arduino med RS232. Jag har anslutit 2 (RX), 3 (TX) och 5 (GND) på RS232 med motsvarande stift på MAX232. Jag tar TTL-utgångar på Arduino-stift 6 och 7.
Detta är koden för Arduino-programmet:
#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); } }
Jag är inte få utdata på den seriella bildskärmen när jag skannar en produkt.
Kommentarer
- Redigera din fråga och inkludera din schemat.
- Hittade ni alla svaret?
- @Ahnet: Ja då hade vi också några andra problem, som nämnts i kommentaren så ' t sätta en check sedan. Tack för påminnelsen.
Svar
Förutsatt att din Arduino bara har en seriell maskinvaruanslutning (det är ungefär som en Uno snarare än en Mega) du har rätt i att använda programvaru-serie, Arduino kommer redan att använda stift 2 och 3 för att kommunicera via USB till den seriella bildskärmen så att du inte kan använda dem för att kommunicera med skannern.
Hur noga som helst, titta på din första kodrad, du har bett programvaru serie att använda stift 6 & 7 men ändå anslutit streckkodsläsaren till stift 2 & 3. Flytta dessa stift till den du har angett.
För det andra i din installationsfunktion har du börjat kommunicera med hårdvaran Seriell men inte mjukvaruserie. ”Jag måste lägga till något som mySerial.begin (XXX) där XXX är överföringshastigheten för skannern.
Äntligen har du inte berättat för Arduino vilken pinMode du ska använda för 6 och 7. Du kommer att vill ha pinMode (6, INPUT) och pinMode (7, OUTPUT) där också.
C omment
- Efter att ha lagt till mySerial.begin (XXXX) fungerade koden korrekt .. När jag flyttar RS232-stiften något får jag siffror tryckta på skärmen. Men inte när jag skannar.
- Är du säker på att du ' har fått dem rätt sätt?
Svar
RS 232 fungerar på andra spänningsnivåer än Arduino, jag tror att värdena du får på skärmen inte har någon betydelse alls, om skannerutmatningen är TTL då ja det skulle fungera, men enligt min egen erfarenhet är logiken inverterad och du måste lägga till en 1 till programserien:
SoftwareSerial mySerial (6, 7, 1); // RX, TX
Det första steget är att kontrollera vilken spänningsnivå som ges av din skannerutgång.
Svar
Jag försökte det också, av någon anledning FUNGERAR det INTE på stift 6 och 7, men det fungerar perfekt med stift 10 och 11 istället. Naturligtvis måste du fortfarande lägga till mySerial.begin()
.