Exemple #1
0
int bargraph(int spi_fd,
             char *left_color,
             char *right_color) {

    int i;
    unsigned char data[128];
    int lr,lg,lb,rr,rg,rb;
    int bar=0;
    double x=0;
    double f=(PI/16);

    printf("Running bargraph %s %s\n",left_color,right_color);

    /* color left */
    if (left_color) {
        get_color(left_color,&lr,&lg,&lb);
    }
    else {
        lr=63;
        lg=0;
        lb=0;
    }


    /* color right */
    if (right_color) {
        get_color(right_color,&rr,&rg,&rb);
    }
    else {
        rr=0;
        rg=0;
        rb=0;
    }

    for(i=0; i<128; i++) data[i]=0;

    while(1) {

        x=x+f;
        bar=(int)((sin(x)+1.0)*16.0);

        for(i=0; i<32; i++) {
            if (i<bar) {
                data[(i*3)+0]=128+lg;
                data[(i*3)+1]=128+lr;
                data[(i*3)+2]=128+lb;
            } else {
                data[(i*3)+0]=128+rg;
                data[(i*3)+1]=128+rr;
                data[(i*3)+2]=128+rb;
            }
        }

        lpd8806_write(spi_fd,data);

        usleep(10000);

    }

    return 0;
}
Exemple #2
0
int two_color_scroll(int spi_fd, char *col1, char *col2, char *dir) {

	int i,j;
	unsigned char data[128];
	int location=0;
	int direction=0;
	int r1,g1,b1,r2,g2,b2;

	printf("two_color_scroll %s %s %s\n",col1,col2,dir);

	if (dir) direction=atoi(dir);
	if (col1) get_color(col1, &r1,&g1,&b1);
	if (col2) get_color(col2, &r2,&g2,&b2);

	/* Set data to all black */
	for(i=0;i<128;i++) data[i]=128;

	while(1) {

		if (direction==0) {
			location++;
			if (location>=8) location=0;
		}
		else {
			location--;
			if (location>=8) location=0;
			if (location<1) location=7;
		}

		for(i=0;i<32;i++) {
			j=i+location;
			if (j%8==0) {
				data[(i*3)]=128+r1;	/* Bright Red */
				data[(i*3)+1]=128+g1;
				data[(i*3)+2]=128+b1;
			}

			if (j%8==1) {
				data[(i*3)]=128+r1/4;	/* Less Bright Red */
				data[(i*3)+1]=128+g1/4;
				data[(i*3)+2]=128+b1/4;
			}

			if (j%8==2) {
				data[(i*3)]=128+r2/4;	/* Less Bright Green */
				data[(i*3)+1]=128+g2/4;
				data[(i*3)+2]=128+b2/4;
			}

			if (j%8==3) {
				data[(i*3)]=128+r2;	/* Bright Green */
				data[(i*3)+1]=128+g2;
				data[(i*3)+2]=128+b2;
			}
			if (j%8==4) {
				data[(i*3)]=128+r2;	/* Bright Green */
				data[(i*3)+1]=128+g2;
				data[(i*3)+2]=128+b2;
			}

			if (j%8==5) {
				data[(i*3)]=128+r2/4;	/* Less Bright Green */
				data[(i*3)+1]=128+g2/4;
				data[(i*3)+2]=128+b2/4;
			}

			if (j%8==6) {
				data[(i*3)]=128+r1/4;	/* Less Bright Red */
				data[(i*3)+1]=128+g1/4;
				data[(i*3)+2]=128+b1/4;
			}

			if (j%8==7) {
				data[(i*3)]=128+r1;	/* Bright Red */
				data[(i*3)+1]=128+g1;
				data[(i*3)+2]=128+b1;
			}

		}

		lpd8806_write(spi_fd,data);

		usleep(200000);

	}

	return 0;
}