| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- package Device::Firmata;
- use strict;
- use warnings;
- use Device::Firmata::Constants;
- use Device::Firmata::Base
- ISA => 'Device::Firmata::Base',
- FIRMATA_ATTRIBS => {
- };
- =head1 NAME
- Device::Firmata - Perl interface to Firmata for the arduino platform.
- =head1 VERSION
- Version 0.64
- =cut
- our $VERSION = '0.64';
- our $DEBUG = 0;
- =head1 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;
- }
- =head1 SUBROUTINES/METHODS
- =head2 open
- establish serial connection with an Arduino micro-controller. Single argument is the name of the device file mapped to the arduino. Typically '/dev/ttyUSB0' or 'COM9'
- =cut
- sub open {
- # --------------------------------------------------
- # Establish a connection to Arduino via the serial port
- #
- my ( $self, $serial_port, $opts ) = @_;
- # We're going to try and create the device connection first...
- my $package = "Device::Firmata::Platform";
- eval "require $package";
- my $serialio = "Device::Firmata::IO::SerialIO";
- eval "require $serialio";
- my $io = $serialio->open( $serial_port, $opts );
- my $platform = $package->attach( $io, $opts ) or die "Could not connect to Firmata Server";
- # Figure out what platform we're running on
- $platform->probe;
- return $platform;
- }
- sub listen {
- # --------------------------------------------------
- # Listen on socket and wait for Arduino to establish a connection
- #
- my ( $pkg, $ip, $port, $opts ) = @_;
- my $netio = "Device::Firmata::IO::NetIO";
- eval "require $netio";
- return $netio->listen( $ip, $port, $opts ) || die "Could not bind to socket";
- }
- 1;
|