// Seven Segment Display // software mock-up // // Robert Twomey // 8/16/2007 // Constants // timing int ON_TIME = 0;//1000; int lineOn = 2000; int HOLD_TIME = 32000; // graphics constants int L= 48; int S = 5; int XSPACING = S*4; int CHARXSIZE = L+S*2+XSPACING; int YSPACING = 80; int CHARYSIZE = L*2+S*4+YSPACING; int NUMCHARS = 12; // Globals // text buffers String inputBuff =""; String outputBuff=""; // character font byte[] font = new byte[128]; byte[] mapping = new byte[128]; // Program void setup() { size(CHARXSIZE*(NUMCHARS+2), CHARYSIZE*2); background(0); initCharacterArray(); }; void draw() { int charIndex; char k; // display text buffers displayInputBuff(); displayOutputBuff(); } void keyPressed() { // handle keyboard input char k; k = (char)key; switch(k){ case 8: // BACKSPACE if(inputBuff.length()>0){ inputBuff = inputBuff.substring(0, inputBuff.length()-1); } background(0); break; case ENTER: case RETURN: sendBuffToDisplay(); break; case 65535: case 127: case 27: // ESCAPE, QUIT break; default: // add current input to buffer if(inputBuff.length()_ font[38]=0x00; mapping[38]=43; // &->+ font[39]=0x00; mapping[39]=95; // '->_ font[46]=0x00; mapping[46]=95; // .->_ font[58]=0x00; mapping[58]=95; // :->_ font[43]=0x46; // + font[44]=0x00; mapping[44]=95; // ,->_ font[45]=0x40; // - font[48]=0x3F; // 0 font[49]=0x06; // 1 font[50]=0x5B; // 2 font[51]=0x4F; // 3 font[52]=0x66; // 4 font[53]=0x6D; // 5 font[54]=0x7D; // 6 font[55]=0x07; // 7 font[56]=0x7F; // 8 font[57]=0x67; // 9 for(i=58; i<65; i++) font[i]=0x00; // blank // upper case letters. font[65]=0x77; // A font[66]=0x7F; // B font[67]=0x39; // C //font[68]=0x00; mapping[68] = 100; // D->d font[68]=0x3F; // D font[69]=0x79; // E font[70]=0x71; // F font[71]=0x3D; // G font[72]=0x76; // H font[73]=0x06; // I font[74]=0x0E; // J font[75]=0x00; mapping[75]=72; // K->H font[76]=0x38; // L font[77]=0x00; mapping[77]=78; // M->N font[78]=0x37; // N font[79]=0x3F; // O font[80]=0x73; // P font[81]=0x00; mapping[81]=113; // Q->q font[82]=0x00; mapping[82]=65; // R->A font[83]=0x6D; // S font[84]=0x07; // T font[85]=0x3E; // U font[86]=0x00; mapping[86]=85; // V->U font[87]=0x00; mapping[87]=85; // W->U font[88]=0x00; mapping[88]=72; // X->H` font[89]=0x66; // Y font[90]=0x5B; // Z for(i=91; i<95; i++) font[i]=0x00; // blank font[95]=0x08; // _ font[96]=0x00; // blank // lower case letters font[97]=0x5c; // a font[98]=0x7C; // b font[99]=0x58; // c font[100]=0x5E; // d font[101]=0x00; mapping[101]=69; // e->E font[102]=0x71; // f font[103]=0x6F; // g font[104]=0x74; // h font[105]=0x04; // i font[106]=0x0c; // j font[107]=0x00; mapping[107]=72; // k->H font[108]=0x06; // l font[109]=0x00; mapping[109]=110; // m->n font[110]=0x54; // n font[111]=0x5C; // o font[112]=0x73; // p font[113]=0x67; // q font[114]=0x50; // r font[115]=0x00; mapping[115]=83; // s->S font[116]=0x46; // t, alternately, could be 0x70 font[117]=0x1C; // u font[118]=0x00; mapping[118]=117; // v->u font[119]=0x00; mapping[119]=117; // w->u font[120]=0x00; // font[121]=0x6E; // y font[122]=0x00; mapping[122]=90; // z->Z for(i=123; i<128; i++) font[i]=0x00; // blank } void putChar(int charIndex, int timeOn, int xPos, int yPos) { int actualIndex; if(charIndex >= 0 && charIndex < 128) { if(mapping[charIndex]!=0) { actualIndex=mapping[charIndex]; } else { actualIndex=charIndex; } // put character to display //outb(PORTA, font[actualIndex]); //timerPause(timeOn); drawLights(font[actualIndex], xPos, yPos); delay(timeOn); } } // display hardware emulation void displayInputBuff() { // show input buffer at bottom of screen int charIndex; char k; for(int i=0;i