Using Arduino as a Parallel port -> usb bridge

I was wondering if it was possible to make an Arduino diecimila act as a parallel port for my pc? I'm trying to hook up a stepper driver from an old cnc machine but my laptop or desktop don't have parallel ports. Also it would be really nice if I could monitor the communication to the pins with the Arduino. That way I could figure out the commands that are sent to the board from the computer so maybe I could eventually run everything from the Arduino.

I'm going to have to expand the pins I was thinking with shift registers. I would need 25 pins not sure if they need to be pwm or not, have never worked with parallel ports before.

Thanks for any help or direction.


A lot of the pins on a 25-pin parallel port are Ground, so there's fewer data/control signals than one would expect. PWM will not be needed. Digital signals - just 0 & 5V. Could use shift register - or just drive the 17 pins, leave Rx/Tx free, still have 1 pin free. Power is not supplied via the parallel port.

Hi, as much as I like Arduinos to do everything, maybe this is a better solution:

And there are many other choices if you google...

I think is what I need. But I'm not really sure how to use it.

The USB to parallel port cables usually only support printers and may not work with other software. If you have a full sized pc, then you might consider a pci card like below.

terryking228: Hi, as much as I like Arduinos to do everything, maybe this is a better solution:

And there are many other choices if you google...

Yeah... I might just have to break down and buy one. I really wanted to figure out what it was sending over the parallel port so I could emulate it with the Arduino.

A couple of years ago I bought an FTDI UM245R module (USB - parallel) thinking I could use it as a substitute for a PC printer port to interconnect with a DIY digital storage oscilloscope I had made when PCs still had parallel ports.

Unfortunately USB is fundamentally different from the parallel port and it doesn't support fast single byte write-read sequences, even though it works exceptionally well as fast multi-byte reads or writes.

This FTDI document may throw some light on the subject

I now have a simplified version of my OScope working with the UM245R - it reads data at 1 MByte /second and I think it should work at 4MB/s - but the way I interface with it is very different from the old parallel port - partly because the UM245R only has 8 I/O pins. If I was buying again I would probably buy a UM232R module.

So whether an Arduino (or any of the USB-parallel adapters) would substitute for a parallel port very much depends on how your application works. The Arduino will be a great deal slower than on of the FTDI modules because it interfaces with the PC as a serial device rather than a USB device.


So I have found an old computer that has a parallel port. The application that came with the stepper driver seems basic, and I have been trying to map it out. I think I have the basic pin out, and am thinking I can run this with my Arduino.

1 high
2 hi=ccw low=cw
3 pulse=step
4 hi=ccw low=cw
5 pulse=step
6 hi=ccw low=cw
7 pulse=step

There is also a document that came with it that says this:

Pin [Bit] addr I/O Function
2- [D0] bs OUTPUT X axis direction
3- [D1] bs OUTPUT X axis step
4- [D2] bs OUTPUT Y axis direction
5- [D3] bs OUTPUT Y axis step
6- [D4] bs OUTPUT Z axis direction
7- [D5] bs OUTPUT Z axis step
8- [D6] bs OUTPUT Aux Out (d6)
9- [D7] bs OUTPUT Aux Out (d7)
10- [S6] bs+1 INPUT Z switch detect
12- [S5] bs+1 INPUT Y switch detect
13- [S4] bs+1 INPUT X switch detect
14- [C1] bs+2 OUTPUT X axis *Enable (active LO)
16- [C2] bs+2 OUTPUT Y axis *Enable (active LO)
17- [C3] bs+2 OUTPUT Z axis *Enable (active LO)
18- Gnd
25- Gnd

Any thoughts, will I need the computer at all?