Come ottenere dati seriali in Arduino da uno scanner di codici a barre?

Voglio interfacciare il mio lettore di codici a barre con un Arduino utilizzando RS232. Ho collegato 2 (RX), 3 (TX) e 5 (GND) della RS232 con i corrispondenti pin del MAX232. Sto utilizzando le uscite TTL sui pin 6 e 7 di Arduino.

Questo è il codice del programma 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); } } 

Non lo sono ottenere qualsiasi output sul monitor seriale quando eseguo la scansione di un prodotto.

Commenti

  • Modifica la tua domanda e includi il tuo schema.
  • Avete tutti trovato la risposta?
  • @Ahnet: Sì, a quel tempo avevamo anche altri problemi, come menzionato nel commento, quindi ' allora metti un assegno. Grazie per il ricordo.

Risposta

Supponendo che il tuo Arduino abbia una sola connessione seriale hardware (è qualcosa di simile uno Uno piuttosto che un Mega) hai ragione nellusare il software seriale, Arduino utilizzerà già i pin 2 e 3 per comunicare via USB al monitor seriale in modo che tu non possa usarli per comunicare con lo scanner.

Tuttavia, guarda attentamente la tua prima riga di codice, hai “chiesto al software seriale di utilizzare i pin 6 & 7 ma hai collegato lo scanner di codici a barre ai pin 2 & 3. Sposta quei pin su quello “che” hai specificato.

In secondo luogo nella funzione di configurazione hai iniziato la comunicazione con seriale hardware ma non seriale software. “Dovrò aggiungere qualcosa come mySerial.begin (XXX) dove XXX è il baud rate per lo scanner.

Finalmente non hai detto ad Arduino quale pinMode usare per 6 e 7. Tu” ll voglio anche pinMode (6, INPUT) e pinMode (7, OUTPUT).

C omments

  • Dopo aver aggiunto mySerial.begin (XXXX) il codice ha funzionato correttamente. Ogni volta che sposto leggermente i pin RS232, ottengo cifre stampate sullo schermo. Ma non quando eseguo la scansione.
  • Sei sicuro di ' di averli capiti nel modo giusto?

risposta

RS 232 funziona su diversi livelli di tensione rispetto ad Arduino, credo che i valori che stai ottenendo sullo schermo non avranno alcun significato, se luscita dello scanner è TTL allora sì, funzionerebbe, ma nella mia esperienza personale quella logica è invertita e devi aggiungere un 1 al seriale del software:

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

Il primo passo è controllare quale livello di tensione è dato dalluscita dello scanner.

Risposta

Ho provato anche questo, per qualche motivo NON FUNZIONA sui pin 6 e 7, ma funziona perfettamente usando invece i pin 10 e 11. Ovviamente, devi ancora aggiungere mySerial.begin().

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *