diff options
Diffstat (limited to 'trasmitter/sender-chip.pl')
-rw-r--r-- | trasmitter/sender-chip.pl | 57 |
1 files changed, 43 insertions, 14 deletions
diff --git a/trasmitter/sender-chip.pl b/trasmitter/sender-chip.pl index 27ae20e..f6d3dd3 100644 --- a/trasmitter/sender-chip.pl +++ b/trasmitter/sender-chip.pl @@ -3,12 +3,12 @@ use strict; use warnings; use Time::HiRes qw(usleep sleep gettimeofday tv_interval); -my $base = do { - open my $fh,'<','/sys/class/gpio/gpiochip405/base' or die "can't get base: $!"; - my $line = <$fh>; - chomp($line); - $line; -}; +# my $base = do { +# open my $fh,'<','/sys/class/gpio/gpiochip405/base' or die "can't get base: $!"; +# my $line = <$fh>; +# chomp($line); +# $line; +# }; sub gpio_enable { my ($pin,$state) = @_; @@ -49,14 +49,43 @@ gpio_write($pin,0); $SIG{INT} = sub {warn"disabling";gpio_enable($pin,0) }; END { warn"disabling";gpio_enable($pin,0) } -my $width = 400; # this seems to provide pulse widths close enough to +my $width = 370; # this seems to provide pulse widths close enough to # what we need, it's 106 samples at 192kHz -while (1) { - for (0..50) { - gpio_write($pin,1); - usleep($width); - gpio_write($pin,0); - usleep($width); + +sub send_array { + my $state = 1; + for (@_) { + gpio_write($pin,$state); + usleep($width*$_); + $state = $state ? 0 : 1; } - sleep(0.5); } + +my @prologue = ( + 1,1, 1,1, 1,1, 1,1, 1,1, 1,1, + 2,3, 1,1, 2,2, 1,1, 1,1, 2,1, + 1,1, 1,1, 1,2, 1,1, 1,1, 1,1, + 1,1, 1,1, +); +my @epilogue = ( + 1,2, 2,2, 1,3, # the last value doesn't much matter +); + +my @on_signal = ( + 2,2, 1,1, 1,1, 1,1, 1,1, 2,1, 1,1, +); +my @off_signal = ( + 1,1, 1,1, 1,1, 1,1, 1,1, 2,2, 2,1, +); + +my @train = ( + @prologue, + ( $ARGV[0] ? @on_signal : @off_signal ), + @epilogue, +); + +send_array(@train); +sleep(1); +send_array(@train); +sleep(2); +send_array(@train); |