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:
jprodgers
2015-05-28 18:09:48 +02:00
parent e5141bfbea
commit 082e478a74
10 changed files with 221 additions and 113 deletions
@@ -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)
+1
View File
@@ -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
View File
View File
View File
View File
+193
View File
@@ -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 */
}
}
+13
View File
@@ -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
@@ -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(){
/*
View File