Jeg vil interface min stregkodescanner med en Arduino ved hjælp af RS232. Jeg har tilsluttet 2 (RX), 3 (TX) og 5 (GND) på RS232 med de tilsvarende ben på MAX232. Jeg tager TTL-udgange på Arduino-ben 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 noget output på den serielle skærm, når jeg scanner et produkt.
Kommentarer
- Rediger dit spørgsmål og inkluder din skematiske beskrivelse.
- Fandt I alle svaret?
- @Ahnet: Ja, på det tidspunkt havde vi også nogle andre problemer, som nævnt i kommentaren så ' t sæt en check derefter. Tak for påmindelsen.
Svar
Hvis du antager, at din Arduino kun har en seriel hardwareforbindelse (det ligner noget en Uno snarere end en Mega) du har ret med at bruge softwareserie, Arduino bruger allerede ben 2 og 3 til at kommunikere via USB til den serielle skærm, så du ikke kan bruge dem til at kommunikere med scanneren.
Uanset om du ser nøje på din første kodelinje, har du bedt softwareserien om at bruge stifter 6 & 7 men alligevel tilsluttet stregkodescanneren til stifter 2 & 3. Flyt disse ben over til den, du har angivet.
For det andet i din opsætningsfunktion er du begyndt at kommunikere med hardware Seriel, men ikke softwareseriel. “Jeg bliver nødt til at tilføje noget i retning af mySerial.begin (XXX), hvor XXX er baudhastigheden for scanneren.
Endelig har du ikke fortalt Arduino, hvad pinMode skal bruges til 6 og 7. Du” ll vil også have pinMode (6, INPUT) og pinMode (7, OUTPUT).
C om
- Efter tilføjelse af mySerial.begin (XXXX) fungerede koden korrekt .. Når jeg flytter RS232-stifterne lidt, får jeg udskrevet cifre på skærmen. Men ikke når jeg scanner.
- Er du sikker på, at du ' har fået dem den rigtige vej rundt?
Svar
RS 232 fungerer på forskellige spændingsniveauer end Arduino, jeg tror, at de værdier, du får på skærmen, ikke har nogen betydning overhovedet, hvis scannerens output er TTL så ja, det ville fungere, men efter min egen erfaring er logikken inverteret, og du skal tilføje en 1 til softwareserien:
SoftwareSerial mySerial (6, 7, 1); // RX, TX
Det første trin er at kontrollere, hvilket spændingsniveau der gives af din scanneroutput.
Svar
Jeg prøvede det også, af en eller anden grund fungerer det IKKE på ben 6 og 7, men det fungerer perfekt ved hjælp af ben 10 og 11 i stedet. Selvfølgelig skal du stadig tilføje mySerial.begin()
.