diff --git a/lib/Charliplexing.cpp b/Charliplexing.cpp similarity index 99% rename from lib/Charliplexing.cpp rename to Charliplexing.cpp index 89227b3..4d1717a 100644 --- a/lib/Charliplexing.cpp +++ b/Charliplexing.cpp @@ -435,6 +435,9 @@ void LedSign::Set(uint8_t x, uint8_t y, uint8_t c) *p++ &= ~mask; // OFF; } +uint8_t LedSign::DisplayMode(){ + return displayMode; +} /* Set the overall brightness of the screen * @param brightness LED brightness, from 0 (off) to 127 (full on) diff --git a/lib/Charliplexing.h b/Charliplexing.h similarity index 97% rename from lib/Charliplexing.h rename to Charliplexing.h index cc2dad5..10fd23f 100644 --- a/lib/Charliplexing.h +++ b/Charliplexing.h @@ -36,6 +36,7 @@ namespace LedSign extern void Clear(uint8_t c = 0); extern void Horizontal(uint8_t y, uint8_t c = 0); extern void Vertical(uint8_t x, uint8_t c = 0); + extern uint8_t DisplayMode(); }; #endif diff --git a/lib/Figure.cpp b/Figure.cpp similarity index 100% rename from lib/Figure.cpp rename to Figure.cpp diff --git a/lib/Figure.h b/Figure.h similarity index 100% rename from lib/Figure.h rename to Figure.h diff --git a/lib/Font.cpp b/Font.cpp similarity index 100% rename from lib/Font.cpp rename to Font.cpp diff --git a/lib/Font.h b/Font.h similarity index 100% rename from lib/Font.h rename to Font.h diff --git a/Myfont.cpp b/Myfont.cpp new file mode 100644 index 0000000..683c198 --- /dev/null +++ b/Myfont.cpp @@ -0,0 +1,193 @@ +/*simple lol shield text lib toprovide full ascii charset. written by Michael Schwarzer + * TODO: make gplv3 pls! + * + * + * if you dont like the font type write your own and share!!! + * just leave those codes blank ( 0x00 0x00 0x00 0x00 0x00) that arent used! + * + */ + + + + +#include + +#include "Myfont.h" +#include "Charliplexing.h" +#include "Arduino.h" +#include + +const byte la[][5] PROGMEM = { + /*all ascii codes:*/ + {0x00,0x00,0x00,0x00,0x00}, /* ASCII-Code 0x0 => Blank */ + {0x33,0x00,0x00,0x00,0x00}, /* ASCII-Code 0x1 => Blank */ + {0x00,0x00,0x00,0x00,0x00}, /* ASCII-Code 0x2 => Blank */ + {0x00,0x00,0x00,0x00,0x00}, /* ASCII-Code 0x3 => Blank */ + {0x00,0x00,0x00,0x00,0x00}, /* ASCII-Code 0x4 => Blank */ + {0x00,0x00,0x00,0x00,0x00}, /* ASCII-Code 0x5 => Blank */ + {0x00,0x00,0x00,0x00,0x00}, /* ASCII-Code 0x6 => Blank */ + {0x00,0x00,0x00,0x00,0x00}, /* ASCII-Code 0x7 => Blank */ + {0x00,0x00,0x00,0x00,0x00}, /* ASCII-Code 0x8 => Blank */ + {0x00,0x00,0x00,0x00,0x00}, /* ASCII-Code 0x9 => Blank */ + {0x00,0x00,0x00,0x00,0x00}, /* ASCII-Code 0xA => Blank */ + {0x00,0x00,0x00,0x00,0x00}, /* ASCII-Code 0xB => Blank */ + {0x00,0x00,0x00,0x00,0x00}, /* ASCII-Code 0xC => Blank */ + {0x00,0x00,0x00,0x00,0x00}, /* ASCII-Code 0xD => Blank */ + {0x00,0x00,0x00,0x00,0x00}, /* ASCII-Code 0xE => Blank */ + {0x00,0x00,0x00,0x00,0x00}, /* ASCII-Code 0xF => Blank */ + {0x00,0x00,0x00,0x00,0x00}, /* ASCII-Code 0x10 => Blank */ + {0x00,0x00,0x00,0x00,0x00}, /* ASCII-Code 0x11 => Blank */ + {0x00,0x00,0x00,0x00,0x00}, /* ASCII-Code 0x12 => Blank */ + {0x00,0x00,0x00,0x00,0x00}, /* ASCII-Code 0x13 => Blank */ + {0x00,0x00,0x00,0x00,0x00}, /* ASCII-Code 0x14 => Blank */ + {0x00,0x00,0x00,0x00,0x00}, /* ASCII-Code 0x15 => Blank */ + {0x00,0x00,0x00,0x00,0x00}, /* ASCII-Code 0x16 => Blank */ + {0x00,0x00,0x00,0x00,0x00}, /* ASCII-Code 0x17 => Blank */ + {0x00,0x00,0x00,0x00,0x00}, /* ASCII-Code 0x18 => Blank */ + {0x00,0x00,0x00,0x00,0x00}, /* ASCII-Code 0x19 => Blank */ + {0x00,0x00,0x00,0x00,0x00}, /* ASCII-Code 0x1A => Blank */ + {0x00,0x00,0x00,0x00,0x00}, /* ASCII-Code 0x1B => Blank */ + {0x00,0x00,0x00,0x00,0x00}, /* ASCII-Code 0x1C => Blank */ + {0x00,0x00,0x00,0x00,0x00}, /* ASCII-Code 0x1D => Blank */ + {0x00,0x00,0x00,0x00,0x00}, /* ASCII-Code 0x1E => Blank */ + {0x00,0x00,0x00,0x00,0x00}, /* ASCII-Code 0x1F => Blank */ + {0x00,0x00,0x00,0x00,0x00}, /* ASCII-Code 0x20 => Space */ + {0x00,0x00,0x4F,0x00,0x00}, /* ASCII-Code 0x21 => ! */ + {0x00,0x07,0x00,0x07,0x00}, /* ASCII-Code 0x22 => " */ + {0x14,0x7F,0x14,0x7F,0x14}, /* ASCII-Code 0x23 => # */ + {0x24,0x2A,0x7F,0x2A,0x12}, /* ASCII-Code 0x24 => $ */ + {0x23,0x13,0x08,0x64,0x62}, /* ASCII-Code 0x25 => % */ + {0x36,0x49,0x55,0x52,0x50}, /* ASCII-Code 0x26 => & */ + {0x00,0x05,0x03,0x00,0x00}, /* ASCII-Code 0x27 => ยด */ + {0x00,0x1C,0x22,0x81,0x00}, /* ASCII-Code 0x28 => { */ + {0x00,0x81,0x22,0x1C,0x00}, /* ASCII-Code 0x29 => } */ + {0x14,0x08,0x3E,0x08,0x14}, /* ASCII-Code 0x2A => * */ + {0x08,0x08,0x3E,0x08,0x08}, /* ASCII-Code 0x2B => + */ + {0x00,0x50,0x30,0x00,0x00}, /* ASCII-Code 0x2C => , */ + {0x08,0x08,0x08,0x08,0x08}, /* ASCII-Code 0x2D => - */ + {0x00,0x60,0x60,0x00,0x00}, /* ASCII-Code 0x2E => . */ + {0x20,0x10,0x08,0x04,0x02}, /* ASCII-Code 0x2F => / */ + {0x3E,0x51,0x49,0x45,0x3E}, /* ASCII-Code 0x30 => 0 */ + {0x00,0x42,0x7F,0x40,0x00}, /* ASCII-Code 0x31 => 1 */ + {0x42,0x61,0x51,0x49,0x46}, /* ASCII-Code 0x32 => 2 */ + {0x21,0x41,0x45,0x4B,0x31}, /* ASCII-Code 0x33 => 3 */ + {0x18,0x14,0x12,0x7F,0x10}, /* ASCII-Code 0x34 => 4 */ + {0x27,0x45,0x45,0x45,0x39}, /* ASCII-Code 0x35 => 5 */ + {0x3C,0x4A,0x49,0x49,0x30}, /* ASCII-Code 0x36 => 6 */ + {0x01,0x71,0x09,0x05,0x03}, /* ASCII-Code 0x37 => 7 */ + {0x36,0x49,0x49,0x49,0x36}, /* ASCII-Code 0x38 => 8 */ + {0x06,0x49,0x49,0x29,0x1E}, /* ASCII-Code 0x39 => 9 */ + {0x00,0x36,0x36,0x00,0x00}, /* ASCII-Code 0x3A => : */ + {0x00,0x56,0x36,0x00,0x00}, /* ASCII-Code 0x3B => ; */ + {0x08,0x14,0x22,0x41,0x00}, /* ASCII-Code 0x3C => < */ + {0x14,0x14,0x14,0x14,0x14}, /* ASCII-Code 0x3D => = */ + {0x41,0x22,0x14,0x08,0x00}, /* ASCII-Code 0x3E => > */ + {0x02,0x01,0x51,0x09,0x06}, /* ASCII-Code 0x3F => ? */ + {0x32,0x49,0x79,0x41,0x3E}, /* ASCII-Code 0x40 => @ */ + {0x7E,0x11,0x11,0x11,0x7E}, /* ASCII-Code 0x41 => A */ + {0x7F,0x49,0x49,0x49,0x36}, /* ASCII-Code 0x42 => B */ + {0x3E,0x41,0x41,0x41,0x22}, /* ASCII-Code 0x43 => C */ + {0x7F,0x41,0x41,0x22,0x1C}, /* ASCII-Code 0x44 => D */ + {0x7F,0x49,0x49,0x49,0x41}, /* ASCII-Code 0x45 => E */ + {0x7F,0x09,0x09,0x09,0x01}, /* ASCII-Code 0x46 => F */ + {0x3E,0x41,0x49,0x49,0x7A}, /* ASCII-Code 0x47 => G */ + {0x7F,0x08,0x08,0x08,0x7F}, /* ASCII-Code 0x48 => H */ + {0x00,0x41,0x7F,0x41,0x00}, /* ASCII-Code 0x49 => I */ + {0x20,0x40,0x41,0x3F,0x01}, /* ASCII-Code 0x4A => J */ + {0x7F,0x08,0x14,0x22,0x41}, /* ASCII-Code 0x4B => K */ + {0x7F,0x40,0x40,0x40,0x40}, /* ASCII-Code 0x4C => L */ + {0x7F,0x02,0x0C,0x02,0x7F}, /* ASCII-Code 0x4D => M */ + {0x7F,0x04,0x08,0x10,0x7F}, /* ASCII-Code 0x4E => N */ + {0x3E,0x41,0x41,0x41,0x3E}, /* ASCII-Code 0x4F => O */ + {0x7F,0x09,0x09,0x09,0x06}, /* ASCII-Code 0x50 => P */ + {0x3E,0x41,0x51,0x21,0x5E}, /* ASCII-Code 0x51 => Q */ + {0x7F,0x09,0x19,0x29,0x46}, /* ASCII-Code 0x52 => R */ + {0x46,0x49,0x49,0x49,0x31}, /* ASCII-Code 0x53 => S */ + {0x01,0x01,0x7F,0x01,0x01}, /* ASCII-Code 0x54 => T */ + {0x3F,0x40,0x40,0x40,0x3F}, /* ASCII-Code 0x55 => U */ + {0x1F,0x20,0x40,0x20,0x1F}, /* ASCII-Code 0x56 => V */ + {0x3F,0x40,0x38,0x40,0x3F}, /* ASCII-Code 0x57 => W */ + {0x63,0x14,0x08,0x14,0x63}, /* ASCII-Code 0x58 => X */ + {0x07,0x08,0x70,0x08,0x07}, /* ASCII-Code 0x59 => Y */ + {0x61,0x51,0x49,0x45,0x43}, /* ASCII-Code 0x5A => Z */ + {0x00,0x7F,0x41,0x41,0x00}, /* ASCII-Code 0x5B => [ */ + {0x15,0x16,0x7C,0x16,0x15}, /* ASCII-Code 0x5C => \ */ + {0x00,0x41,0x41,0x7F,0x00}, /* ASCII-Code 0x5D => ] */ + {0x04,0x02,0x01,0x02,0x04}, /* ASCII-Code 0x5E => ^ */ + {0x40,0x40,0x40,0x40,0x40}, /* ASCII-Code 0x5F => _ */ + {0x00,0x01,0x02,0x04,0x00}, /* ASCII-Code 0x60 => ` */ + {0x20,0x54,0x54,0x54,0x78}, /* ASCII-Code 0x61 => a */ + {0x7F,0x48,0x44,0x44,0x38}, /* ASCII-Code 0x62 => b */ + {0x38,0x44,0x44,0x44,0x20}, /* ASCII-Code 0x63 => c */ + {0x38,0x44,0x44,0x48,0x7F}, /* ASCII-Code 0x64 => d */ + {0x38,0x54,0x54,0x54,0x18}, /* ASCII-Code 0x65 => e */ + {0x08,0x7E,0x09,0x01,0x02}, /* ASCII-Code 0x66 => f */ + {0x0C,0x52,0x52,0x52,0x3E}, /* ASCII-Code 0x67 => g */ + {0x7F,0x08,0x04,0x04,0x78}, /* ASCII-Code 0x68 => h */ + {0x00,0x44,0x7D,0x40,0x00}, /* ASCII-Code 0x69 => i */ + {0x20,0x40,0x44,0x3D,0x00}, /* ASCII-Code 0x6A => j */ + {0x7F,0x10,0x28,0x44,0x00}, /* ASCII-Code 0x6B => k */ + {0x00,0x41,0x7F,0x40,0x00}, /* ASCII-Code 0x6C => l */ + {0x7C,0x04,0x18,0x04,0x78}, /* ASCII-Code 0x6D => m */ + {0x7C,0x08,0x04,0x04,0x78}, /* ASCII-Code 0x6E => n */ + {0x38,0x44,0x44,0x44,0x38}, /* ASCII-Code 0x6F => o */ + {0x7C,0x14,0x14,0x14,0x08}, /* ASCII-Code 0x70 => p */ + {0x08,0x14,0x14,0x18,0x7C}, /* ASCII-Code 0x71 => q */ + {0x7C,0x08,0x04,0x04,0x08}, /* ASCII-Code 0x72 => r */ + {0x48,0x54,0x54,0x54,0x20}, /* ASCII-Code 0x73 => s */ + {0x04,0x3F,0x44,0x40,0x20}, /* ASCII-Code 0x74 => t */ + {0x3C,0x40,0x40,0x20,0x7C}, /* ASCII-Code 0x75 => u */ + {0x1C,0x20,0x40,0x20,0x1C}, /* ASCII-Code 0x76 => v */ + {0x3C,0x40,0x30,0x40,0x3C}, /* ASCII-Code 0x77 => w */ + {0x44,0x28,0x10,0x28,0x44}, /* ASCII-Code 0x78 => x */ + {0x0C,0x50,0x50,0x50,0x3C}, /* ASCII-Code 0x79 => y */ + {0x44,0x64,0x54,0x4C,0x44}, /* ASCII-Code 0x7A => z */ + {0x00,0x08,0x36,0x41,0x00}, /* ASCII-Code 0x7B => { */ + {0x00,0x00,0x7F,0x00,0x00}, /* ASCII-Code 0x7C => | */ + {0x00,0x41,0x36,0x08,0x00}, /* ASCII-Code 0x7D => } */ + {0x08,0x08,0x2A,0x1C,0x08}, /* ASCII-Code 0x7E => -> */ + {0x08,0x1C,0x2A,0x08,0x08}}; /* ASCII-Code 0x7F => <- */ +void Myfont::Draw(int xval, unsigned char chr) /*draws an ascii char to the screen using the given x value */ +{ + uint8_t mode = LedSign::DisplayMode(); + uint8_t vr=0; + vr=chr; + for(uint8_t i=0; i<5; i++) + { + uint8_t mask = 0x01; /*bitmask used to select the different bits from the values in the table*/ + for(uint8_t j=0; j<7; j++) + { + + uint8_t tmps=pgm_read_byte( &la[vr][i] )&mask; /*read a value from the table and do a & with the mask*/ + if(tmps==mask) /*if there was a 1 set tmps to 1 else set it to 0*/ + { + if (mode == GRAYSCALE) tmps=7; + else tmps=1; + } + else + { + tmps=0; + } + if(xval+i<14 && (xval+i) >(-1)){ /*only write x vals that are existing on the screen*/ + LedSign::Set(xval+i, j+1, tmps); /*write it*/ + } + mask <<= 1; /*take the next bit of the val from the table*/ + } + } +} + +void Myfont::Banner(int len, unsigned char* text){ /* text banner creator. use with example code!!*/ + + + int xoff=14;/* setmx offset to the right end of the screen*/ + for(int i=0; i + +namespace Myfont +{ +extern void Draw(int xval, unsigned char chr); +extern void Banner(int len, unsigned char* text); +} +#endif diff --git a/examples/Animations/LoLShield_Demo/LoLDemo.ino b/examples/Animations/LoLShield_Demo/LoLShield_Demo.ino similarity index 86% rename from examples/Animations/LoLShield_Demo/LoLDemo.ino rename to examples/Animations/LoLShield_Demo/LoLShield_Demo.ino index 503cc11..b794b6a 100644 --- a/examples/Animations/LoLShield_Demo/LoLDemo.ino +++ b/examples/Animations/LoLShield_Demo/LoLShield_Demo.ino @@ -12,6 +12,8 @@ unsigned char text1[]="Blinky or GTFO"; unsigned char text2[]="Enjoying the lightshow?"; unsigned char text3[]="Would you like to play a game?"; +byte brightness = 7; + //Game of Life stuff #define DELAY 150 //Sets the time each generation is shown #define RESEEDRATE 5000 //Sets the rate the world is re-seeded @@ -21,22 +23,13 @@ byte world[SIZEX][SIZEY][2]; //Creates a double buffer world long density = 50; //Sets density % during seeding int geck = 0; //Counter for re-seeding -//ball stuff -int collision[14][9]; - void setup(){ toggleState = EEPROM.read(EEPROMaddress); upToggleState(); - - if (0==toggleState || 3==toggleState){ - LedSign::Init(GRAYSCALE); - } - else{ - LedSign::Init(); - } - + LedSign::Init(GRAYSCALE); + for (int i = toggleState+1; i > 0; i--){ - LedSign::Set(i-1, 0, 255); + LedSign::Set(i-1, 0, brightness); } delay(1000); LedSign::Clear(0); @@ -45,11 +38,13 @@ void setup(){ void loop(){ /* - 0 *Plasma - 3 *Game of Life - 6 "Would you like to play a game?" - 7 *Double Helix + 0 Plasma + 1 Game of Life + 2 "Would you like to play a game?" + 3 Double Helix + 4 Basit test */ + switch(toggleState){ case 0: plasma(); @@ -276,105 +271,8 @@ void DNA(){ } } -void balls(){ - - //0 = xPos, 1 = xDir, 2 = yPos, 3 = yDir - /*int balls [][4] = { - {0,1,8,1}, - {1,1,7,1}, - {2,1,6,1}, - {3,1,5,1}, - {4,1,4,1}, - {5,1,3,1}, - {6,1,2,1}, - {7,1,1,1}, - {8,1,0,1}, - {1,1,1,1}, - {255}}; - */ - int balls [][4] = { - { - 7,1,0,1 } - , - { - 6,1,1,1 } - , - { - 8,1,1,1 } - , - { - 5,1,2,1 } - , - { - 9,1,2,1 } - , - { - 4,1,3,1 } - , - { - 10,1,3,1 } - , - { - 5,1,4,1 } - , - { - 9,1,4,1 } - , - { - 6,1,5,1 } - , - { - 8,1,5,1 } - , - { - 7,1,6,1 } - , - { - 255 } - }; - int numBalls; - int scrollSpeed = 100; //delay between frames - - int collision[14][9]; - //int clearedCollision[14][9]; - - LedSign::Init(); //initializes a grayscale frame buffer - for (numBalls = 0; numBalls < 255; numBalls++){ - if(balls[numBalls][0] == 255) break; - } - - while(true) // run over and over again - { - for (int i = 0; i < numBalls; i++)moveBall(balls[i]); - delay(scrollSpeed); - LedSign::Clear(0); - for (int x = 0; x < 14; x++) for (int y = 0; y <9; y++) collision[x][y] = 0; - } - -} -void moveBall(int ball[]) -{ - //0 = xPos, 1 = Dir, 2 = yPos, 3 = yDir - if (ball[0] == 13)ball[1] = 0; - if (ball[0] == 0)ball[1] = 1; - if (ball[2] == 8)ball[3] = 0; - if (ball[2] == 0)ball[3] = 1; - - if ((ball[1] == 1) && (collision[ball[0]+1][ball[2]]==1)) ball[1]= !ball[1]; - if ((ball[1] == 0) && (collision[ball[0]-1][ball[2]]==1)) ball[1]= !ball[1]; - if ((ball[3] == 1) && (collision[ball[0]][ball[2]+1]==1)) ball[3]= !ball[3]; - if ((ball[3] == 0) && (collision[ball[0]][ball[2]-1]==1)) ball[3]= !ball[3]; - - if (ball[1]) ball[0]++; - else ball[0]--; - - if (ball[3]) ball[2]++; - else ball[2]--; - collision[ball[0]][ball[2]] = 1; - LedSign::Set(ball[0], ball[2], 1); -} void life(){ /* diff --git a/lib/keywords.txt b/keywords.txt similarity index 100% rename from lib/keywords.txt rename to keywords.txt