NAME

    Electronics::SigGen::FY3200 - control a FeelTech FY32xx signal
    generator

SYNOPSIS

       use Electronics::SigGen::FY3200;
    
       my $fy3200 = Electronics::SigGen::FY3200->new( dev => "/dev/ttyUSB0" );
    
       my $ch1 = $fy3200->channel(1);
    
       $ch1->set_wave( 'sine' )->get;
       $ch1->set_frequency( 1E3 )->get; # in Hz
       $ch->set_amplitude( 2 )->get;    # in Volts peak

DESCRIPTION

    This module allows control of a FeelTech FY32xx series signal
    generator, such as the FY3224S, when connected over USB.

 Interface Design

    The interface is currently an ad-hoc collection of whatever seems to
    work here, but my hope is to find a more generic shareable interface
    that multiple different modules can use, to provide standard interfaces
    to various kinds of electronics test equipment.

    The intention is that it should eventually be possible to write a
    script for performing automated electronics testing or experimentation,
    and easily swap out modules to suit the equipment available. Similar
    concepts apply in fields like DBI, or Device::Chip, so there should be
    plenty of ideas to borrow.

METHODS

 identify

       $str = $fy3200->identify->get

 channel

       $ch = $fy3200->channel( $n )

    Returns a Channel object representing the main (if $n is 1) or
    secondary (if $n is 2) channel.

CHANNEL METHODS

 set_wave

       $ch->set_wave( $type )->get

    Sets the basic wave shape - one of sine, square, triangle, etc... or
    one of the direct numbers from 0 to 16 recognised by the device.

 set_frequency

       $ch->set_frequency( $hz )->get

    Sets the frequency in Hz.

 set_amplitude

       $ch->set_amplitude( $vpk )->get

    Sets the amplitude in Volts peak.

 set_offset

       $ch->set_offset( $v )->get

    Sets the offset in Volts.

 set_duty

       $ch->set_duty( $duty )->get

    Sets the duty cycle as a fraction from 0 to 1.

 set_phase

       $ch->set_phase( $phase )->get

    Sets the phase offset as a fraction from 0 to 1.

    Note that due to hardware limitations this only takes effect on the
    secondary channel; the primary channel will ignore it.

AUTHOR

    Paul Evans <leonerd@leonerd.org.uk>