Go Down

Topic: Simple Perl code for interfacing with Arduino (Read 960 times) previous topic - next topic


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.

Code: [Select]


$|=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
Code: [Select]
$tail -f /dev/ttyUSB0
to read the output coming from the Arduino.


Triffid Hunter

stty raw is your friend

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

Check out http://hc11-ide.funkmunch.net/bart-v3/sender.pl for an example of a perl serial I/O utility I use for a different microcontroller.

Go Up

Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

via Egeo 16
Torino, 10131