void LedControl::setSegment(int addr, int digit, byte value) { int offset; if(addr<0 || addr>=maxDevices) return; if(digit<0 || digit>7 ) return; offset=addr*8; if(reflectMode) { reflect(value); } if(upsidedownMode) { upsidedown(value); } status[offset+digit]=value; //spiTransfer(addr, digit+1,value); if (anodeMode) { transposeData(addr); for(int i=0;i<8;i++) { spiTransfer(addr, i+1, statusTransposed[offset+i]); } } else { spiTransfer(addr, digit+1, value); } }
void LedControl::setDigit(int addr, int digit, byte value, boolean dp) { int offset; byte v; if(addr<0 || addr>=maxDevices) return; if(digit<0 || digit>7 || value>15) return; offset=addr*8; v=charTable[value]; if(dp) v|=B10000000; if(reflectMode) { //pABCGEFD reflect(v); } if(upsidedownMode) { upsidedown(v); } status[offset+digit]=v; if (anodeMode) { //transpose the digit matrix transposeData(addr); //send the entire set of digits for(int i=0;i<8;i++) { spiTransfer(addr, i+1, statusTransposed[offset+i]); } } else { spiTransfer(addr, digit+1, v); } }
int main(){ char s[MAX]; printf("Unesite string: "); gets(s); upsidedown(s,strlen(s)); printf("%s\n",s); return 0; }
void main(int argc, char *argv[]) { Memimage *m; int fd, r; char f; f = 0; r = 0; fd = 0; ARGBEGIN { case 'u': f = 'u'; break; case 'l': f = 'l'; break; case 'r': r = atoi(EARGF(usage())); break; default: usage(); } ARGEND; if(*argv){ fd = open(*argv, OREAD); if(fd < 0) sysfatal("open: %r"); } memimageinit(); if((m = readmemimage(fd)) == nil) sysfatal("readmemimage: %r"); if(f == 'u' || f == 'l'){ m = upsidedown(m); if(f == 'l') r = 180; } switch(r % 360){ case 270: m = rot90(m); case 180: m = rot90(m); case 90: m = rot90(m); break; } if(writememimage(1, m) < 0) sysfatal("writememimage: %r"); exits(0); }