############################################# package main; use strict; use warnings; use Device::Firmata; use Device::Firmata::Constants qw/ :all /; ##################################### sub FRM_PWM_Initialize($) { my ($hash) = @_; $hash->{SetFn} = "FRM_PWM_Set"; $hash->{DefFn} = "FRM_Client_Define"; $hash->{InitFn} = "FRM_PWM_Init"; $hash->{UndefFn} = "FRM_PWM_Undef"; $hash->{AttrFn} = "FIR_Attr"; $hash->{AttrList} = "IODev loglevel:0,1,2,3,4,5 $main::readingFnAttributes"; } sub FRM_PWM_Init($$) { my ($hash,$args) = @_; FRM_Init_Pin_Client($hash,$args); if (defined $hash->{IODev}) { my $firmata = $hash->{IODev}->{FirmataDevice}; if (defined $firmata and defined $hash->{PIN}) { $firmata->pin_mode($hash->{PIN},PIN_PWM); main::readingsSingleUpdate($hash,"state","initialized",1); } } } sub FRM_PWM_Set($@) { my ($hash, @a) = @_; my $value = $a[1]; my $iodev = $hash->{IODev}; if (defined $iodev and defined $iodev->{FirmataDevice} and defined $iodev->{FD}) { $iodev->{FirmataDevice}->analog_write($hash->{PIN},$value); main::readingsSingleUpdate($hash,"state",$a[1], 1); } else { return $hash->{NAME}." no IODev assigned" if (!defined $iodev); return $hash->{NAME}.", ".$iodev->{NAME}." is not connected"; } return undef; } sub FRM_PWM_Undef($$) { my ($hash, $name) = @_; } 1; =pod =begin html

FRM_PWM


=end html =cut