Este es el código del 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); } }
No soy obteniendo cualquier resultado en el monitor serial cuando escaneo un producto.
Comentarios
- Edite su pregunta e incluya su esquema.
- ¿Todos encontraron la respuesta?
- @Ahnet: Sí, en ese momento también tuvimos otros problemas, como se menciona en el comentario, así que no ' t poner un cheque entonces. Gracias por recordarlo.
Respuesta
Suponiendo que su Arduino tiene solo una conexión serial de hardware (es algo así como un Uno en lugar de un Mega) tiene bastante razón al usar el software en serie, el Arduino ya estará usando los pines 2 y 3 para comunicarse a través de USB con el monitor en serie, por lo que no puede usarlos para comunicarse con el escáner.
Sin embargo, mire cuidadosamente su primera línea de código, le ha pedido a la serie de software que use los pines 6 & 7 pero conectó el escáner de código de barras a los pines 2 & 3. Mueva esos pines al «s» que ha especificado.
En segundo lugar, en su función de configuración, ha comenzado la comunicación con el hardware en serie pero no con el software. «Necesitaré agregar algo como mySerial.begin (XXX) donde XXX es la velocidad en baudios para el escáner.
Finalmente, no le ha dicho al Arduino qué pinMode usar para 6 y 7. Usted» quiero pinMode (6, INPUT) y pinMode (7, OUTPUT) allí también.
C omments
- Después de agregar mySerial.begin (XXXX) el código funcionó correctamente. Siempre que muevo los pines RS232 ligeramente, aparecen dígitos impresos en la pantalla. Pero no cuando escaneo.
- ¿Está seguro de que ' los tiene de la manera correcta?
Respuesta
RS 232 funciona en diferentes niveles de voltaje que Arduino, creo que los valores que está obteniendo en la pantalla no tendrán ningún significado, si la salida del escáner es TTL entonces sí, funcionaría, pero en mi propia experiencia esa lógica está invertida y tienes que agregar un 1 al software serial:
SoftwareSerial mySerial (6, 7, 1); // RX, TX
El primer paso es verificar qué nivel de voltaje proporciona la salida de su escáner.
Respuesta
Intenté esto también, por alguna razón NO FUNCIONA en los pines 6 y 7, pero funciona perfectamente usando los pines 10 y 11 en su lugar. Por supuesto, aún necesita agregar mySerial.begin()
.