Cum se obțin date seriale în Arduino de la un scaner de coduri de bare?

Vreau să îmi interfațez scanerul de coduri de bare cu un Arduino folosind RS232. Am conectat 2 (RX), 3 (TX) și 5 (GND) ale RS232 cu pinii corespunzători ai MAX232. Prind ieșiri TTL pe pinii Arduino 6 și 7.

Acesta este codul programului 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); } } 

Nu sunt obținând orice ieșire pe monitorul serial când scanez un produs.

Comentarii

  • Vă rugăm să editați întrebarea și să includeți schema.
  • Ați găsit fiecare răspuns?
  • @Ahnet: Da, în acel moment am avut și alte probleme, așa cum sa menționat în comentariu, așa că nu ' t pune atunci un cec. Vă mulțumim pentru reamintire.

Răspuns

Presupunând că Arduino dvs. are o singură conexiune serială hardware (este ceva de genul un Uno mai degrabă decât un Mega) aveți dreptate când utilizați serialul software, Arduino va folosi deja pinii 2 și 3 pentru a comunica prin USB către monitorul serial, astfel încât să nu le puteți folosi pentru a comunica cu scanerul.

Cu toate acestea, uitați-vă cu atenție la prima dvs. linie de cod, ați solicitat serialului software să folosească pinii 6 & 7, dar ați conectat scanerul de coduri de bare la pinii 2 & 3. Mutați acei pini pe cei pe care i-ați specificat.

În al doilea rând, în funcția dvs. de configurare, ați început comunicarea cu hardware Serial, dar nu cu serialul software. „Va trebui să adăugăm ceva de genul mySerial.begin (XXX) unde XXX este rata de transmisie a scanerului.

În cele din urmă nu i-ai spus Arduino ce pinMode să folosești pentru 6 și 7. Vei„ doresc și pinMode (6, INPUT) și pinMode (7, OUTPUT) acolo.

C omisiuni

  • După adăugarea mySerial.begin (XXXX) codul a funcționat corect .. Ori de câte ori mișc ușor pinii RS232, primesc cifre imprimate pe ecran. Dar nu când scanez.
  • Sunteți sigur că ' le-ați găsit în sensul corect?

Răspuns

RS 232 funcționează la niveluri de tensiune diferite de Arduino, cred că valorile pe care le obțineți pe ecran nu vor avea niciun sens, dacă ieșirea scanerului este TTL atunci da, ar funcționa, dar, din propria mea experiență, logica este inversată și trebuie să adăugați un 1 la serialul software:

SoftwareSerial mySerial (6, 7, 1); // RX, TX

Primul pas este verificarea nivelului de tensiune dat de ieșirea scanerului dvs.

Răspuns

Am încercat și asta, dintr-un anumit motiv, NU FUNCȚIONEAZĂ pe pinii 6 și 7, dar funcționează perfect folosind pinii 10 și 11. Desigur, trebuie să adăugați în continuare mySerial.begin().

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *