Hoe krijg ik seriële gegevens in Arduino van een streepjescodescanner?

Ik wil mijn barcodescanner verbinden met een Arduino via RS232. Ik heb 2 (RX), 3 (TX) en 5 (GND) van de RS232 verbonden met de overeenkomstige pinnen van MAX232. Ik gebruik TTL-uitgangen op Arduino-pinnen 6 en 7.

Dit is de code van het Arduino-programma:

#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); } } 

Ik ben niet uitvoer op de seriële monitor krijgen wanneer ik een product scan.

Opmerkingen

  • Bewerk uw vraag en voeg uw schema toe.
  • Hebben jullie allemaal het antwoord gevonden?
  • @Ahnet: Ja, op dat moment hadden we ook een aantal andere problemen, zoals vermeld in de opmerking, ' t zet een cheque dan. Bedankt voor het eraan herinneren.

Answer

Ervan uitgaande dat uw Arduino slechts één seriële hardware-aansluiting heeft (het is zoiets als een Uno in plaats van een Mega) je helemaal gelijk hebt met het gebruik van seriële software, de Arduino zal al pinnen 2 en 3 gebruiken om via USB te communiceren met de seriële monitor, dus je kunt ze niet gebruiken om met de scanner te communiceren.

Hoe zorgvuldig je eerste coderegel ook kijkt, je “hebt softwarereeks gevraagd om pinnen 6 te gebruiken & 7 maar de barcodescanner aan pinnen 2 vastgemaakt & 3. Verplaats die pinnen naar de “s” die je hebt gespecificeerd.

Ten tweede ben je in je setup-functie begonnen met communicatie met hardware Serieel maar niet seriële software. “Ik zal iets als mySerial.begin (XXX) moeten toevoegen, waarbij XXX de baudrate voor de scanner is.

Ten slotte heb je de Arduino niet verteld welke pinMode moet worden gebruikt voor 6 en 7. Je zult willen pinMode (6, INPUT) en pinMode (7, OUTPUT) daar ook in.

C omments

  • Na het toevoegen van mySerial.begin (XXXX) werkte de code goed. Telkens als ik de RS232-pinnen een beetje verplaats, krijg ik cijfers op het scherm. Maar niet wanneer ik scan.
  • Weet u zeker dat u ' ze op de juiste manier hebt gekregen?

Answer

RS 232 werkt op andere spanningsniveaus dan Arduino, ik denk dat de waarden die je op het scherm krijgt geen enkele betekenis hebben, als de scanner output TTL is dan zou het werken, maar in mijn eigen ervaring is die logica omgekeerd en moet je een 1 toevoegen aan software-serie:

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

De eerste stap is controleren welk spanningsniveau wordt gegeven door uw scanneruitvoer.

Antwoord

Ik heb dit ook geprobeerd, om de een of andere reden WERKT het NIET op pinnen 6 en 7, maar het werkt perfect met pinnen 10 en 11. U moet natuurlijk nog steeds de mySerial.begin() toevoegen.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *