Simple Perl code for interfacing with Arduino

Hi All,

I did a quick search on the web site and the forum and found that there is not much code on how to interface Arduino with Perl. The only sensible thread that I found linking to an external site was using a Perl module to do the interfacing. I managed to get it working without using any additional Perl modules, just using the Linux TTY at the beginning. I also did a bit of a workaround to make sure that the autoloading of the NG does not get triggered when you do the communication. Here is some simple code to write to the Arduino.


$|=1; # to ensure that there is no buffering delaying the outputs

#Initialize the port using the Linux TTY code. Change the 19200 to whatever baud rate that you are using in Serial.begin()
#Also change /dev/ttyUSB0 to whatever the Arduino is connected to.
`stty -F /dev/ttyUSB0 cs8 19200 ignbrk -brkint -icrnl -imaxbel -opost -onlcr -isig -icanon -iexten -echo -echoe -echok -echoctl -echoke noflsh -ixon -crtscts`; 

#open the port for output
open OUT, ">/dev/ttyUSB0" or die "Couldn't open usb device";

#use bin mode on the file if you will be sending pure binary data
#binmode OUT;

#delay for about 1 second to avoid the Arduino NG auto loading getting triggered

# send output to the Arduino
print OUT "Hello World";

I will post one on how to read using Perl once I get the code cleaned up a bit. For the moment I just use

$tail -f /dev/ttyUSB0

to read the output coming from the Arduino.


stty raw is your friend

Also, if you stty -hup, it shouldn't reset next time the port is opened.

Check out for an example of a perl serial I/O utility I use for a different microcontroller.