diff options
Diffstat (limited to 'Matrix-5x6')
-rw-r--r-- | Matrix-5x6/Matrix-5x6.pde | 174 |
1 files changed, 0 insertions, 174 deletions
diff --git a/Matrix-5x6/Matrix-5x6.pde b/Matrix-5x6/Matrix-5x6.pde deleted file mode 100644 index 8f95209..0000000 --- a/Matrix-5x6/Matrix-5x6.pde +++ /dev/null @@ -1,174 +0,0 @@ -/* -5x6 LEDs Text scroller -Frank Bartels 2010 - */ - -#define leaner 1 // 0:std 1:normal 2:lean -//char myoutstring[]="ABCDEFGHIJKLMNOPQRSTUVWXYZ "; -//char myoutstring[]="0123456789 "; -//char myoutstring[]="789"; -char myoutstring[]="TOPPOINT KIEL FRICKL 27C3 "; -int myoutstringpos=0; - -#define NledPins 6 -int ledPins[NledPins] = { 7,6,5,4,3,2 }; - -int i, j, k, x,y,xx,yy, lum=0,newscr=0,tmp; -int scrollx,scrolly; -#define SCRdx 5 -#define SCRdy 6 -#define OSf 4 // oversampling factor <=5, sonst Speicher voll! - -// int=2 ByteFRICKL FRICKL -int scr[SCRdx][SCRdy]; // (real) screen -int vscr[SCRdx*OSf][SCRdy*OSf]; // virtual (high res) screen - -#define CFONTwidth 0x5 // (font constant) -#define CFONTwidth2 0x7 // with std space between chars std=7 -#define CFONTstart 0x20 -#define CFONTend 0x5b -char cfont[]= -{ 0x00, 0x00, 0x00, 0x00, 0x00, // 0x20 - 0x00, 0x00, 0x00, 0x00, 0x00, // 0x21 - 0x00, 0x00, 0x00, 0x00, 0x00, // 0x22 - 0x00, 0x00, 0x00, 0x00, 0x00, // 0x23 - 0x00, 0x00, 0x00, 0x00, 0x00, // 0x24 - 0x00, 0x00, 0x00, 0x00, 0x00, // 0x25 - 0x00, 0x00, 0x00, 0x00, 0x00, // 0x26 - 0x00, 0x00, 0x00, 0x00, 0x00, // 0x27 - 0x00, 0x00, 0x00, 0x00, 0x00, // 0x28 - 0x00, 0x00, 0x00, 0x00, 0x00, // 0x29 - 0x00, 0x00, 0x00, 0x00, 0x00, // 0x2a - 0x00, 0x00, 0x00, 0x00, 0x00, // 0x2b - 0x00, 0x00, 0x00, 0x00, 0x00, // 0x2c - 0x00, 0x00, 0x00, 0x00, 0x00, // 0x2d - 0x00, 0x00, 0x00, 0x00, 0x00, // 0x2e - 0x00, 0x00, 0x00, 0x00, 0x00, // 0x2f - //0x1e, 0x31, 0x29, 0x25, 0x1e, // 0x30 0 - 0x1e, 0x21, 0x2d, 0x21, 0x1e, // 0x30 0 - 0x00, 0x22, 0x3f, 0x20, 0x00, // 0x31 1 - 0x22, 0x31, 0x29, 0x29, 0x26, // 0x32 2 - 0x12, 0x21, 0x25, 0x25, 0x1a, // 0x33 3 - 0x18, 0x14, 0x12, 0x3f, 0x10, // 0x34 4 - 0x22, 0x25, 0x25, 0x25, 0x18, // 0x35 5 - //0x1e, 0x29, 0x29, 0x29, 0x1a, // 0x36 6 - 0x1e, 0x25, 0x25, 0x25, 0x18, // 0x36 6 - 0x01, 0x01, 0x31, 0x0d, 0x03, // 0x37 7 - 0x1a, 0x25, 0x25, 0x25, 0x1a, // 0x38 8 - 0x06, 0x29, 0x29, 0x29, 0x1e, // 0x39 9 - 0x00, 0x00, 0x00, 0x00, 0x00, // 0x3a - 0x00, 0x00, 0x00, 0x00, 0x00, // 0x3b - 0x00, 0x00, 0x00, 0x00, 0x00, // 0x3c - 0x00, 0x00, 0x00, 0x00, 0x00, // 0x3d - 0x00, 0x00, 0x00, 0x00, 0x00, // 0x3e - 0x00, 0x00, 0x00, 0x00, 0x00, // 0x3f - - 0x00, 0x00, 0x00, 0x00, 0x00, // SPACE (0x40 or 0x20) - 0x38, 0x16, 0x11, 0x16, 0x38, // A (0x41) - 0x3f, 0x25, 0x25, 0x26, 0x18, // B (0x42) - 0x1e, 0x21, 0x21, 0x21, 0x12, // C - 0x3f, 0x21, 0x21, 0x21, 0x1e, // D - 0x3f, 0x25, 0x25, 0x25, 0x21, // E - 0x3f, 0x05, 0x05, 0x05, 0x01, // F - 0x1e, 0x21, 0x21, 0x29, 0x1a, // G - 0x3f, 0x08, 0x08, 0x08, 0x3f, // H - 0x00, 0x21, 0x3f, 0x21, 0x00, // I - 0x00, 0x11, 0x21, 0x1f, 0x00, // J - 0x3f, 0x08, 0x14, 0x14, 0x22, // K - 0x3f, 0x20, 0x20, 0x20, 0x20, // L - 0x3f, 0x02, 0x0c, 0x02, 0x3f, // M - 0x3f, 0x02, 0x04, 0x08, 0x3f, // N - 0x1e, 0x21, 0x21, 0x21, 0x1e, // O - 0x3f, 0x09, 0x09, 0x09, 0x06, // P - 0x1e, 0x21, 0x29, 0x11, 0x2e, // Q - 0x3f, 0x09, 0x09, 0x19, 0x26, // R - 0x22, 0x25, 0x25, 0x25, 0x18, // S - 0x01, 0x01, 0x3f, 0x01, 0x01, // T - 0x1f, 0x20, 0x20, 0x20, 0x1f, // U - 0x03, 0x0c, 0x30, 0x0c, 0x03, // V - 0x3f, 0x10, 0x0c, 0x10, 0x3f, // W - 0x31, 0x0a, 0x04, 0x0a, 0x31, // X - 0x01, 0x02, 0x3c, 0x02, 0x01, // Y - 0x31, 0x29, 0x25, 0x23, 0x21, // Z -}; - -volatile int dummy; - -void setup() -{ for (int i=0; i<NledPins; i++) - pinMode(ledPins[i], INPUT); -} - -void vscr2scr() -{ int x,y,xx,yy,xxx,yyy,sum; - for(x=0; x<SCRdx; x++) - { xxx=x*OSf; - for(y=0; y<SCRdy; y++) - { yyy=y*OSf; - sum=0; - for(xx=0; xx<OSf; xx++) for(yy=0; yy<OSf; yy++) sum+=vscr[xxx+xx][yyy+yy]; - scr[x][y]=sum/OSf/OSf; - } - } -} - -#define ANIMm (20) -int lum2=0; -void loop() -{ newscr++; - if (newscr%(ANIMm)==0) - { //int p0=myoutstringpos/OSf; - - //int p0=myoutstringpos/(OSf-1); // Zeichen nur (OSf-1)/OSf breit ausgeben - //int p0=myoutstringpos/(OSf-leaner); // Zeichen nur (OSf-1)/OSf breit ausgeben - int p0=myoutstringpos*42/100; // Zeichen nur (OSf-1)/OSf breit ausgeben - - int p2=p0/CFONTwidth2; - char c=myoutstring[p2]; - if (c==0) { myoutstringpos=0; p0=0; p2=p0/CFONTwidth2; c=myoutstring[p2]; } - int p1=p0%CFONTwidth2; - int bits=0; - if (c==0x20) c=0x40; // 0x40 is SPACE ! - if (p1<CFONTwidth && c<CFONTend) bits=cfont[(c-CFONTstart)*CFONTwidth+p1]; - for (int b=1, p=0; b<0x40 && p<OSf*6; b*=2, p+=OSf) if (bits&b) - for(y=0; y<OSf; y++) vscr[OSf*SCRdx-1][p+y]=256; - myoutstringpos++; - - for(y=0; y<SCRdy*OSf; y++) - { for(x=0; x<SCRdx*OSf-1; x++) vscr[x][y]=vscr[x+1][y]; - vscr[SCRdx*OSf-1][y]=0; // clear - } - vscr2scr(); - } - - lum+=16; if (lum>254) lum=0; - - int xx=-1; - int yy=-1; - for (int y=0; y<NledPins; y++) - { digitalWrite(ledPins[y], HIGH); - pinMode(ledPins[y], OUTPUT); - for (int x=0; x<NledPins; x++) - if (x==y) - { xx=(xx+1)%NledPins; - yy++; - } - else - { xx=(xx+1)%NledPins; - lum2= (lum2+23) & 0xFF; - //if (xx==0 && yy==0) - //if (xx==yy) - //if (scr[yy][xx]>lum2) // (real) screen - //if (scr[yy][xx]+48<lum2) // inverted - if (scr[yy][xx]-48 > lum2*13/16) // good for font scroll - { //digitalWrite(ledPins[x], LOW); // digitalWrite(ledPins[y], LOW); (ganz unten) - pinMode(ledPins[x], OUTPUT); - //for (int ll=0; ll!=10; ll++) for (int l=0; l!=0x7fff; l++) dummy=l; - for (int l=0; l!=0x80; l++) dummy=l; - pinMode(ledPins[x], INPUT); - } - } - pinMode(ledPins[y], INPUT); - digitalWrite(ledPins[y], LOW); - } -} |