Is it possible to use OS drivers for Arduino based printer?

It's quite easy to make some sort of printer with Arduino - couple of steppers or dc/encoders, a ton of nuts and bolts, a week of headache and you're done.
The question is - is there any way to controll it with some sort of default drivers or write one?
Ideally - communicating through USB. Amounts of needed talking code between Arduino and usb frighten me, but I guess Leonardo USB capabilities should do.

A 40$ DIY printer that runs on 10 cent ball pens IMHO could be a viable thing if software compatible.
Modern printer manufacturers basically live from massively overpriced inks justifying it by quality, while that quality outperforms most needs by orders of magnitude. Not mentioning one-time-use design and other issues.

A bit of search suggested use matrix printer drivers, but I have none understanding of how they work yet.
Any advice or comment on feasibility is welcome :slight_smile:

Look up HPGL - stood for HP Graphics Language - used in older plotters. I have a couple Pen Plotters that use a version of HPGL. Had instructions for Pen Up, Pen Down, Line, Circle, Pen Change and more. Was primarily for plotting out engineering drawings.

A dot matrix printer uses a printhead with multiple wires or drops of ink. Move the head one dot position and fire the necessary dots.

Either way you would want to study the docs on some printer and then emulate it so you could use a driver for that printer.

Are you envisaging this being a single colour printer?

If you're using ball pens they have to move to have ink flow so you need to draw lines rather than dots. That's fine if you only want to print text but would make graphics much harder or impossible. You will be extremely limited in the characters you can draw (constant width lines, and curves will only be as good as your stepping precision).

It will be very slow, since you are physically moving quite large objects around in the shape of your letters, rather than throwing a print head across the page in a straight line.

You have no obvious way to detect the ink running out.

There are much easier ways to reduce the ink costs. If you want a colour graphics printer, look at inkjet continuous ink supply systems. If you want a high volume black and white graphics printer, get an old laser printer. If you only want text, you could even get an old line printer. That's if you can find one - most places have chucked them out because modern inkjet printers are so ridiculously cheap and capable that it usually doesn't make sense to use anything else.

You should be able to print plain ASCII text without a driver. For anything else you'll need to create a printer driver. How to create a printer driver will depend what operating system you're using. If you're on Windows then look at MSDN Best Practices Guide for Developing Printer Drivers to get an idea of what is involved. (You may need an MSDN subscription to see it.)

If its a pen plotter type device you are thinking of, then there are projects to build a CNC machine with an Arduino controller.

Use the drive parts from two flatbed scanners for x and y.

Replace Z-axis with a solenoid or servo pen holder for penup and down.

If you want to swap pen colours, then things could get more complicated.

G-Code plugins available for Sketchup, Inkscape etc.