#!/usr/bin/perl -w
use Time::HiRes;
require "./config.pl";
sub lauflicht
    {
    $num=shift;
    $pause=shift;
    for($l=0;$l<$num;$l++)
	{
	for($i=0;$i<8;$i++)
	    {
	    $val=2**$i;
	    $val=255-$val;
	    system("i2cset -y $channel $address1 $val");
	    Time::HiRes::usleep($pause);
	    }
	system("i2cset -y $channel $address1 0xff");
        for($i=0;$i<8;$i++)
    	    {
	    $val=2**$i;
	    $val=255-$val;
	    system("i2cset -y $channel $address2 $val");
	    Time::HiRes::usleep($pause);
	    }
	system("i2cset -y $channel $address2 0xff");
	for($i=7;$i>=0;$i--)
	    {
	    $val=2**$i;
	    $val=255-$val;
	    system("i2cset -y $channel $address4 $val");
	    Time::HiRes::usleep($pause);
	    }
	system("i2cset -y $channel $address4 0xff");
	for($i=7;$i>=0;$i--)
	    {
	    $val=2**$i;
	    $val=255-$val;
	    system("i2cset -y $channel $address3 $val");
	    Time::HiRes::usleep($pause);
	    }
	system("i2cset -y $channel $address3 0xff");
	}
    }
sub blink
    {
    $num=shift;
    $pause=shift;
    for($l=0;$l<$num;$l++)
	{
	$val=0x00;
	system("i2cset -y $channel $address1 $val");
	system("i2cset -y $channel $address2 $val");
	system("i2cset -y $channel $address3 $val");
	system("i2cset -y $channel $address4 $val");
	Time::HiRes::usleep($pause);
	$val=0xff;
	system("i2cset -y $channel $address1 $val");
	system("i2cset -y $channel $address2 $val");
	system("i2cset -y $channel $address3 $val");
	system("i2cset -y $channel $address4 $val");
	Time::HiRes::usleep($pause);
	
	}
	
    }
sub up2down
    {
    $num=shift;
    $pause=shift;
    for($l=0;$l<$num;$l++)
	{
	system("i2cset -y $channel $address1 0x00");
	Time::HiRes::usleep($pause);
	system("i2cset -y $channel $address1 0xff");
	for($i=0;$i<8;$i++)
	    {
	    $val=2**$i;
	    $val=255-$val;
	    system("i2cset -y $channel $address2 $val");
	    system("i2cset -y $channel $address3 $val");
	    Time::HiRes::usleep($pause);
	    }
	system("i2cset -y $channel $address2 0xff");
	system("i2cset -y $channel $address3 0xff");
	system("i2cset -y $channel $address4 0x00");
	Time::HiRes::usleep($pause);
	system("i2cset -y $channel $address4 0xff");
	Time::HiRes::usleep($pause);
	}
    }
sub down2up
    {
    $num=shift;
    $pause=shift;
    for($l=0;$l<$num;$l++)
	{
	system("i2cset -y $channel $address4 0x00");
	Time::HiRes::usleep($pause);
	system("i2cset -y $channel $address4 0xff");
	for($i=7;$i>0;$i--)
	    {
	    $val=2**$i;
	    $val=255-$val;
	    system("i2cset -y $channel $address2 $val");
	    system("i2cset -y $channel $address3 $val");
	    Time::HiRes::usleep($pause);
	    }
	system("i2cset -y $channel $address2 0xff");
	system("i2cset -y $channel $address3 0xff");
	system("i2cset -y $channel $address1 0x00");
	Time::HiRes::usleep($pause);
	system("i2cset -y $channel $address1 0xff");
	Time::HiRes::usleep($pause);
	}
    }

sub left2right
    {
    $num=shift;
    $pause=shift;
    for($l=0;$l<$num;$l++)
	{
	system("i2cset -y $channel $address3 0x00");
	Time::HiRes::usleep($pause);
	system("i2cset -y $channel $address3 0xff");
	for($i=0;$i<8;$i++)
	    {
	    $val=2**$i;
	    $val=255-$val;
	    system("i2cset -y $channel $address1 $val");
	    system("i2cset -y $channel $address4 $val");
	    Time::HiRes::usleep($pause);
	    }
	system("i2cset -y $channel $address1 0xff");
	system("i2cset -y $channel $address4 0xff");
	system("i2cset -y $channel $address2 0x00");
	Time::HiRes::usleep($pause);
	system("i2cset -y $channel $address2 0xff");
	Time::HiRes::usleep($pause);
	}
    }




sub right2left
{
    $num=shift;
    $pause=shift;
    for($l=0;$l<$num;$l++)
	{
	system("i2cset -y $channel $address2 0x00");
	Time::HiRes::usleep($pause);
	system("i2cset -y $channel $address2 0xff");
	for($i=7;$i>-1;$i--)
	    {
	    $val=2**$i;
	    $val=255-$val;
	    system("i2cset -y $channel $address1 $val");
	    system("i2cset -y $channel $address4 $val");
	    Time::HiRes::usleep($pause);
	    }
	system("i2cset -y $channel $address1 0xff");
	system("i2cset -y $channel $address4 0xff");
	system("i2cset -y $channel $address3 0x00");
	Time::HiRes::usleep($pause);
	system("i2cset -y $channel $address3 0xff");
	Time::HiRes::usleep($pause);
	}

}
sub diagonal1
{
    $num=shift;
    $pause=shift;
    for($l=0;$l<$num;$l++)
	{
	for($i=0;$i<8;$i++)
	    {
	    $val=2**$i;
	    $val=255-$val;
	    system("i2cset -y $channel $address1 $val");
	    system("i2cset -y $channel $address3 $val");
	    Time::HiRes::usleep($pause);
	    }
	system("i2cset -y $channel $address1 0xff");
	system("i2cset -y $channel $address3 0xff");
	
    for($i=0;$i<8;$i++)
	    {
	    $val=2**$i;
	    $val=255-$val;
	    system("i2cset -y $channel $address2 $val");
	    system("i2cset -y $channel $address4 $val");
	    Time::HiRes::usleep($pause);
	    }
	system("i2cset -y $channel $address2 0xff");
	system("i2cset -y $channel $address4 0xff");
	}
}

sub diagonal2
{
    $num=shift;
    $pause=shift;
    for($l=0;$l<$num;$l++)
	{
	for($i=7;$i>-1;$i--)
	    {
	    $val=2**$i;
	    $val=255-$val;
	    system("i2cset -y $channel $address2 $val");
	    system("i2cset -y $channel $address4 $val");
	    Time::HiRes::usleep($pause);
	    }
	system("i2cset -y $channel $address2 0xff");
	system("i2cset -y $channel $address4 0xff");
	for($i=7;$i>-1;$i--)
	    {
	    $val=2**$i;
	    $val=255-$val;
	    system("i2cset -y $channel $address1 $val");
	    system("i2cset -y $channel $address3 $val");
	    Time::HiRes::usleep($pause);
	    }
	system("i2cset -y $channel $address1 0xff");
	system("i2cset -y $channel $address3 0xff");
	
	}



}
sub diagonal3
{
    $num=shift;
    $pause=shift;
    for($l=0;$l<$num;$l++)
	{
	for($i=0;$i<8;$i++)
	    {
	    $val=2**$i;
	    $val=255-$val;
	    $ival=2**(7-$i);
	    $ival=255-$ival;
	    system("i2cset -y $channel $address2 $val");
	    system("i2cset -y $channel $address1 $ival");
	    Time::HiRes::usleep($pause);
	    }
	system("i2cset -y $channel $address2 0xff");
	system("i2cset -y $channel $address1 0xff");
	
	for($i=0;$i<8;$i++)
	    {
	    $val=2**$i;
	    $val=255-$val;
	    $ival=2**(7-$i);
	    $ival=255-$ival;
	    system("i2cset -y $channel $address4 $ival");
	    system("i2cset -y $channel $address3 $val");
	    Time::HiRes::usleep($pause);
	    }
	system("i2cset -y $channel $address4 0xff");
	system("i2cset -y $channel $address3 0xff");
	

	
	}

}
sub diagonal4
{
    $num=shift;
    $pause=shift;
    for($l=0;$l<$num;$l++)
	{
	for($i=0;$i<8;$i++)
	    {
	    $val=2**$i;
	    $val=255-$val;
	    $ival=2**(7-$i);
	    $ival=255-$ival;
	    system("i2cset -y $channel $address4 $val");
	    system("i2cset -y $channel $address3 $ival");
	    Time::HiRes::usleep($pause);
	    }
	system("i2cset -y $channel $address4 0xff");
	system("i2cset -y $channel $address3 0xff");
	
	for($i=0;$i<8;$i++)
	    {
	    $val=2**$i;
	    $val=255-$val;
	    $ival=2**(7-$i);
	    $ival=255-$ival;
	    system("i2cset -y $channel $address2 $ival");
	    system("i2cset -y $channel $address1 $val");
	    Time::HiRes::usleep($pause);
	    }
	system("i2cset -y $channel $address2 0xff");
	system("i2cset -y $channel $address1 0xff");
	}

	

}