The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Device::Firmata - A Perl implementation of the Firmata protocol.

This module allows a computer running Perl to connect to Firmata devices (Arduinos and compatible, including ESP8266), either via serial IO (RS-232, USB, etc.) or TCP/IP (LAN, WiFi). Protocol details can be found at https://github.com/firmata/protocol.

VERSION

Version 0.65

SYNOPSIS

    use strict;
    use warnings;

    use Device::Firmata::Constants qw/ :all /;
    use Device::Firmata;

    use Time::HiRes 'sleep';

    $|++;

    my $led_pin = 13;

    my $device = Device::Firmata->open('/dev/ttyUSB0') or die "Could not connect to Firmata Server";
    $device->pin_mode($led_pin=>PIN_OUTPUT);
    my $iteration = 0;
    while (1) {
        my $strobe_state = $iteration++%2;
        $device->digital_write($led_pin=>$strobe_state);
        sleep 0.5;
    }

METHODS

open ( serialPort , [opts] )

Establish a serial connection with a Firmata device. The first parameter is the name of the serial device connected with the Firmata device, e.g. '/dev/ttyUSB0' or 'COM9'. The second parameter is an optional hash of parameters for the serial port. The parameter baudrate is supported and defaults to 57600. Returns a Device::Firmata::Platform object.

listen ( host, port )

Start a TCP server bound to given local address and port for the Arduino to connect to. Returns a Device::Firmata::IO::NetIO object. An implementation example can be found in file examples/example-tcpserver.pl.

EXAMPLES

In the folder examples you will find more than 15 implementation examples for various Firmata IO operations including digital I/O, PWM, stepper and encoder as well as bus I/O for I2C and 1-Wire.

SEE ALSO

Device::Firmata::Base

LICENSE

Copyright (C) 2010 Aki Mimoto

Copyright (C) 2012 Norbert Truchsess

Copyright (C) 2016 Jens B.

This is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

See http://dev.perl.org/licenses/ for more information.