#include <SD.h>
#include <adafruit_1947_Obj.h>
#include <screen.h>
#include "ourOSObj.h"
ourOSObj ourOS;
void setup() {
Serial.begin(57600);
if (!initScreen(ADAFRUIT_1947,ADA_1947_SHIELD_CS,PORTRAIT))
{
Serial.println("NO SCREEN!");
Serial.flush();
while(true);
}if (!SD.begin(ADA_1947_SHIELD_SDCS))
{
Serial.println("NO SD CARD!");
Serial.flush();
while(true);
}
ourEventMgr.begin();
ourOS.begin();
nextPanel = breakoutApp;
}
void loop() {
idle();
ourOS.loop();
}
#include "ourOSObj.h"
#include <rpnCalc.h>
#include <breakout.h>
#include <iconEdit.h>
#include <starTrek.h>
#include "testAppPanel.h"
#include "homeScr.h"
#define BEEP_PIN 14
. #define SCREEN_PIN 25
char systemFolder[] = "/system/";
char panelFolder[] = "/system/appFiles/";
ourOSObj::ourOSObj(void)
: lilOS() { }
ourOSObj::~ourOSObj(void) { }
int ourOSObj::begin(void) {
pinMode(BEEP_PIN, OUTPUT);
digitalWrite(BEEP_PIN, HIGH);
return lilOS::begin();
}
panel* ourOSObj::createPanel(int panelID) {
panel* result;
beep();
setBrightness(0);
switch (panelID) {
case homeApp :
result = new homeScr();
break;
case calcApp :
result = new rpnCalc(this,panelID);
break;
case iconEditApp :
result = new iconEdit(this,panelID);
break;
case breakoutApp :
result = new breakout(this,panelID);
break;
case starTrekApp :
result = new starTrekPanel(this,panelID);
break;
case testApp : result = new testAppPanel(this,panelID);
break;
default : result = NULL;
}
return(result);
}
void ourOSObj::beep(void) {
tone(BEEP_PIN, 750,20);
}
void ourOSObj::setBrightness(byte brightness) {
analogWrite(SCREEN_PIN,brightness);
}
char* ourOSObj::getSystemFolder(void) {
return systemFolder;
}
char* ourOSObj::getPanelFolder(int panelID) {
strcpy(pathBuff,panelFolder); switch (panelID) {
case homeApp :
return NULL;
case calcApp :
strcat(pathBuff,"rpnCalc/");
return pathBuff; break;
case iconEditApp :
strcat(pathBuff,"iconEdit/");
return pathBuff; break;
case breakoutApp :
strcat(pathBuff,"breakout/");
return pathBuff; break;
case starTrekApp :
strcat(pathBuff,"starTrek/");
return pathBuff;
break;
case testApp :
strcpy(pathBuff,getSystemFolder());
strcat(pathBuff,"icons/standard/");
return pathBuff;
break;
default :
return NULL;
}
}
#ifndef ourOSObj_h
#define ourOSObj_h
#include <lilOS.h>
enum apps { homeApp = HOME_PANEL_ID, calcApp, breakoutApp,iconEditApp, starTrekApp };
class ourOSObj : public lilOS {
public:
ourOSObj(void);
virtual ~ourOSObj(void);
virtual int begin(void);
virtual panel* createPanel(int panelID);
virtual int getTonePin(void);
virtual void setBrightness(byte brightness);
virtual char* getSystemFolder(void);
virtual char* getPanelFolder(int panelID);
};
extern bmpMask iconMask;
#endif
#ifndef homePanel_h
#define homePanel_h
#include "ourOSObj.h"
#include <bmpObj.h>
class homeScr : public panel
{public:
homeScr(void);
virtual ~homeScr(void);
char* iconPath(int appID,char* iconName);
virtual void setup(void);
virtual void loop(void);
void doStarField(void);
virtual void drawSelf(void);
char pathBuff[80];
};
#endif
#include "homeScr.h"
#include <lilOS.h>
#define BAR_Y 286
struct spacer {
float startPos;
float stepSize;
};
spacer calcSpacer(float numItems, float itemLength, float areaLength)
{
spacer aSpacer;
numItems++;
aSpacer.stepSize = areaLength/numItems;
aSpacer.startPos = aSpacer.stepSize - itemLength/2;
return aSpacer;
}
homeScr::homeScr(void)
: panel(homeApp,noMenuBar) { }
homeScr::~homeScr(void) { }
char* homeScr::iconPath(int appID,char* iconName)
{
strcpy(pathBuff,ourOSPtr->getPanelFolder(appID));
strcat(pathBuff,iconName);
return pathBuff;
}
void homeScr::setup(void) {
int traceY;
int traceX;
int stepX;
appIcon* theAppIcon;
spacer barSpacer;
barSpacer = calcSpacer(3,32,240);
traceX = barSpacer.startPos;
stepX = barSpacer.stepSize;
traceY = BAR_Y;
theAppIcon = new appIcon(traceX,traceY,calcApp,iconPath(calcApp,"calc32.bmp"));
addObj(theAppIcon);
traceX = traceX + stepX;
theAppIcon = new appIcon(traceX,traceY,breakoutApp,iconPath(breakoutApp,"breakout.bmp"));
theAppIcon->setMask(&(ourOSPtr->icon32Mask));
addObj(theAppIcon);
theAppIcon->setMask(&(ourOSPtr->icon32Mask));
addObj(theAppIcon);
traceX = traceX + stepX;
theAppIcon = new appIcon(traceX,traceY,starTrekApp,iconPath(starTrekApp,"sTrek32.bmp"));
theAppIcon->setMask(&(ourOSPtr->icon32Mask));
addObj(theAppIcon);
traceX = traceX + stepX;
theAppIcon = new appIcon(traceX,traceY,testApp,iconPath(testApp,"app32.bmp"));
theAppIcon->setMask(&(ourOSPtr->icon32Mask));
addObj(theAppIcon);
}
void homeScr::loop(void) { }
void homeScr::doStarField(void) {
int randNum;
colorMapper ourCMapper;
colorObj aColor;
mapper yMapper(0,282,0,100);
float yPercent;
aColor.setColor(LC_LIGHT_BLUE);
aColor.blend(&blue,50);
ourCMapper.setColors(&white,&aColor);
randomSeed(analogRead(A10));
for (int sy=0;sy<282;sy++) {
for (int sx=0;sx<240;sx++) {
randNum = random(0,400);
if (randNum==300) {
yPercent = yMapper.map(sy);
aColor = ourCMapper.map(yPercent);
screen->drawPixel(sx,sy,&aColor);
}
if (sy<141 && randNum==250) {
yPercent = yMapper.map(sy);
aColor = ourCMapper.map(yPercent);
screen->drawPixel(sx,sy,&aColor);
}
}
}
}
void homeScr::drawSelf(void) {
bmpObj theScreenImage(0,0,240,282,"/system/images/lake.bmp");
colorObj lineColor; colorObj scrFadeColor;
lineColor.setColor(LC_CHARCOAL); lineColor.blend(&blue,20);
screen->fillRectGradient(0,282,240,38,&lineColor,&black);
theScreenImage.draw();
scrFadeColor.setColor(LC_LIGHT_BLUE);
scrFadeColor.blend(&blue,50);
screen->fillRectGradient(0,0,240,282,&black,&scrFadeColor);
doStarField();
}