Hvordan får jeg seriedata i Arduino fra en strekkodeleser?

Jeg vil koble strekkodeleseren min til en Arduino ved hjelp av RS232. Jeg har koblet 2 (RX), 3 (TX) og 5 (GND) på RS232 med de tilsvarende pinnene på MAX232. Jeg tar TTL-utganger på Arduino-pinner 6 og 7.

Dette er koden til 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); } } 

Jeg er ikke får utgang på seriell skjerm når jeg skanner et produkt.

Kommentarer

  • Vennligst rediger spørsmålet ditt og inkluder skjematisk.
  • Fant dere alle svaret?
  • @Ahnet: Ja, den gangen hadde vi også noen andre problemer, som nevnt i kommentaren, så ' t sette en sjekk da. Takk for påminnelsen.

Svar

Forutsatt at Arduino bare har en seriell tilkobling for maskinvare (det er omtrent som en Uno i stedet for en Mega) du har ganske rett i å bruke programvareserien, vil Arduino allerede bruke pinne 2 og 3 for å kommunisere via USB til seriell skjerm, slik at du ikke kan bruke dem til å kommunisere med skanneren.

Uansett hvordan du ser nøye på den første kodelinjen din, har du bedt programvareserien om å bruke pinner 6 & 7, men likevel koblet strekkodeleseren til pinner 2 & 3. Flytt pinnene til den du har spesifisert.

For det andre i konfigurasjonsfunksjonen har du begynt å kommunisere med maskinvaren Seriell, men ikke programvareserie. «Jeg må legge til noe sånt som mySerial.begin (XXX) der XXX er baudhastigheten for skanneren.

Endelig har du ikke fortalt Arduino hva pinMode du skal bruke for 6 og 7. Du» ll vil ha pinMode (6, INPUT) og pinMode (7, OUTPUT) der også.

C omment

  • Etter at mySerial.begin (XXXX) ble lagt til, fungerte koden ordentlig .. Når jeg flytter RS232-pinnene litt, får jeg sifre skrevet ut på skjermen. Men ikke når jeg skanner.
  • Er du sikker på at du ' har fått dem riktig vei?

Svar

RS 232 fungerer på forskjellige spenningsnivåer enn Arduino, jeg tror at verdiene du får på skjermen ikke vil ha noen betydning overhodet, hvis skannerutgangen er TTL da ja, det ville fungere, men etter min egen erfaring er logikken invertert, og du må legge til en 1 til programvareserien:

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

Det første trinnet er å sjekke hvilket spenningsnivå som blir gitt av skannerutgangen.

Svar

Jeg prøvde dette også, av en eller annen grunn fungerer det IKKE på pinne 6 og 7, men det fungerer perfekt ved å bruke pinne 10 og 11 i stedet. Selvfølgelig må du fortsatt legge til mySerial.begin().

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *