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; }
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; }