Chci propojit svůj skener čárových kódů s Arduino pomocí RS232. Připojil jsem 2 (RX), 3 (TX) a 5 (GND) RS232 s odpovídajícími kolíky MAX232. Beru výstupy TTL na piny Arduino 6 a 7.
Toto je kód programu 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); } }
nejsem získávání jakéhokoli výstupu na sériovém monitoru při skenování produktu.
Komentáře
- Upravte prosím svou otázku a uveďte své schéma.
- Našli jste každý odpověď?
- @Ahnet: Ano, v té době jsme měli i nějaké další problémy, jak bylo zmíněno v komentáři, ' t pak zkontrolujte. Děkujeme za připomenutí.
Odpověď
Za předpokladu, že vaše Arduino má pouze jedno hardwarové sériové připojení (je to něco jako spíše než Uno, než Mega), máte v používání softwarového seriálu pravdu, Arduino již bude používat piny 2 a 3 ke komunikaci přes USB s monitorem Serial, takže je nebudete moci použít ke komunikaci se skenerem.
Jakkoli pečlivě se podívejte na svůj první řádek kódu, požádali jste sériové číslo softwaru, aby používal piny 6 & 7, ale přesto připojil skener čárových kódů k pinům 2 & 3. Přesuňte tyto piny na ten, který jste zadali.
Zadruhé ve své funkci nastavení jste zahájili komunikaci s hardwarovým sériovým, nikoli však softwarovým sériovým. „Musím přidat něco jako mySerial.begin (XXX), kde XXX je přenosová rychlost pro skener.
Nakonec jste Arduinu neřekli, jaký pinMode má použít pro 6 a 7. Vy budete chcete tam také pinMode (6, INPUT) a pinMode (7, OUTPUT).
C omments
- Po přidání mySerial.begin (XXXX) kód fungoval správně .. Kdykoli lehce posunu piny RS232, zobrazí se na obrazovce číslice. Ale ne, když skenuji.
- Jste si jisti, že jste je ' dostali správně?
Answer
RS 232 pracuje na různých napěťových úrovních než Arduino, věřím, že hodnoty, které získáte na obrazovce, nebudou mít vůbec žádný význam, Pokud je výstup skeneru TTL pak ano, fungovalo by to, ale podle mých vlastních zkušeností je logika obrácená a do sériového softwaru musíte přidat 1:
SoftwareSerial mySerial (6, 7, 1); // RX, TX
Prvním krokem je kontrola, jaké úrovně napětí je dáno výstupem vašeho skeneru.
Odpověď
Zkoušel jsem to také, z nějakého důvodu to nefunguje na pinech 6 a 7, ale funguje to perfektně pomocí pinů 10 a 11 místo. Samozřejmě stále musíte přidat mySerial.begin()
.