Como obter dados seriais no Arduino de um leitor de código de barras?

Quero fazer a interface do meu leitor de código de barras com um Arduino usando RS232. Eu conectei 2 (RX), 3 (TX) e 5 (GND) do RS232 com os pinos correspondentes do MAX232. Estou obtendo saídas TTL nos pinos 6 e 7 do Arduino.

Este é o código do programa 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); } } 

Não estou obter qualquer saída no monitor serial quando eu digitalizar um produto.

Comentários

  • Edite sua pergunta e inclua seu esquema.
  • Todos vocês encontraram a resposta?
  • @Ahnet: Sim, naquela época, tivemos alguns outros problemas também, conforme mencionado no comentário, não ' t coloque um cheque então. Obrigado por lembrar.

Resposta

Presumindo que seu Arduino tenha apenas uma conexão serial de hardware (é algo como um Uno em vez de um Mega) se você acertar em usar o software serial, o Arduino já estará usando os pinos 2 e 3 para se comunicar via USB com o monitor serial, de forma que você não pode usá-los para se comunicar com o scanner.

Por mais que observe cuidadosamente sua primeira linha de código, você pediu ao serial do software para usar os pinos 6 & 7, mas conectou o leitor de código de barras aos pinos 2 & 3. Mova esses pinos para aquele que você especificou.

Em segundo lugar, em sua função de configuração, você iniciou a comunicação com o serial de hardware, mas não com o serial de software. Você “Precisarei adicionar algo como mySerial.begin (XXX), onde XXX é a taxa de transmissão do scanner.

Finalmente, você não disse ao Arduino qual pinMode usar para 6 e 7. Você” deseja pinMode (6, INPUT) e pinMode (7, OUTPUT) lá também.

C omentos

  • Depois de adicionar mySerial.begin (XXXX), o código funcionou corretamente. Sempre que movo os pinos RS232 levemente, vejo dígitos impressos na tela. Mas não quando eu digitalizo.
  • Tem certeza de que ' os acertou da maneira certa?

Resposta

RS 232 funciona em níveis de tensão diferentes do Arduino, acredito que os valores que você está obtendo na tela não terão nenhum significado, se a saída do scanner for TTL então sim funcionaria, mas na minha própria experiência essa lógica é invertida e você tem que adicionar 1 ao serial do software:

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

A primeira etapa é verificar qual nível de tensão é fornecido pela saída do scanner.

Resposta

Eu tentei isso também, por algum motivo NÃO FUNCIONA nos pinos 6 e 7, mas funciona perfeitamente usando os pinos 10 e 11. Claro, você ainda precisa adicionar o mySerial.begin().

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *