forked from Michel2/LoLshield
Lots of fixes.
My last commit broke all the things. I had to move things around according to where Arduino expects the libraries now. Also fixed MyFont to work in Grayscale mode.
This commit is contained in:
@@ -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)
|
||||
@@ -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
|
||||
+193
@@ -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 <avr/pgmspace.h>
|
||||
|
||||
#include "Myfont.h"
|
||||
#include "Charliplexing.h"
|
||||
#include "Arduino.h"
|
||||
#include <inttypes.h>
|
||||
|
||||
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<len*5 +52; i++){ /*scrolling loop*/
|
||||
for(int j=0; j<len; j++){ /*loop over all of the chars in the text*/
|
||||
Myfont::Draw(xoff + j*6, text[j]); /* call the draw font function*/
|
||||
}
|
||||
xoff--; /* decrement x offset*/
|
||||
delay(70); /*scrolling speed increments if delay goes down*/
|
||||
LedSign::Clear(); /*empty the screen */
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
#ifndef Myfont_h
|
||||
#define Myfont_h
|
||||
|
||||
|
||||
|
||||
#include <inttypes.h>
|
||||
|
||||
namespace Myfont
|
||||
{
|
||||
extern void Draw(int xval, unsigned char chr);
|
||||
extern void Banner(int len, unsigned char* text);
|
||||
}
|
||||
#endif
|
||||
+11
-113
@@ -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(){
|
||||
/*
|
||||
Reference in New Issue
Block a user