power down EEPROM (flash) save

Status
Not open for further replies.

philip.porhammer

Well-known member
I need to save 6 bytes to flash when the Teency powers down. Is there an easy way to do this? with out external compactors and stuff? or is there a low power RAM keep alive function? that i can use with a 3V button battery
 
Power down data save, only on power down

There is a library for eeprom-access. "EEPROM"

the time is 4-54-58 PM.jpg
if the power goes out I lose moon time and phase i cant get the SRAM to work, so i am looking for different a was to save the data


// days between full moons is 29.53 days / by 48 points 29.53*24*60*60/48=53154 seconds per 48 points one day is 86400 seconds
/*
* setting time:
* 1 top button resets seconds
* 2 next adds 1 second
* 3 adds minutes
* 4 hours, watch sun position as it is a 24 hur mode
* 5 moon position
* 6 week of the year
* 7 lattitide
* top slide dims for night 10pm to 6am
* bottom slide normal or daylight savings
*/
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_NeoPixel.h>
#include <EEPROM.h>
#ifdef __AVR__
#include <avr/power.h>
#endif


#define PIN108 0// output pin
#define NUMPIXELS 108// number of devices
#define AddABit 1 //
#define AddSec 2
#define AddMin 3
#define AddHour 4
#define AddWk 5
#define AddLat 6
#define AddMoon 7
//#define SPICLOCK 13 //sck SPI.h uses without #define
//#define DATAIN 11 //MISO SPI.h uses without #define
//#define DATAOUT 12 //MOSI SPI.h uses without #define
const int cs=10; //chip select for RTC
#define DimNight 21// HomeLED
#define DayLsvngs 22//HomeBtn
int j =0;// temp variable
int i =0;
int aa =0;// sec
int bb =0;// sec+
int cc =0;//min+
int dd =0;// hour++
int ee =0;//week#
int ff =0;//lat
int gg =0;//moonpos
int hh =0;// temp variable
int ii =0;// temp variable
Adafruit_NeoPixel pixels108 = Adafruit_NeoPixel(NUMPIXELS, PIN108, NEO_GRB + NEO_KHZ800);

int led = 13;
int delayval = 0; // NO delay
int Grn[144];
int Red[144];
int Blu[144];

int d; int mo; int y; int h; int mi; int s;
int Rr;
int Gg;
int Bb;

int HDots=0;
int SecondsDelta=0;
int SecondsDeltaTrack=0;
int Seconds=50;
int Minutes=52;
int Hours=40;
int HoursPos=40;
int QrtrHours=0;



int HoursOfDay=0;
int SunUp=0;
int SunDown=0;
int SunPosition=0;
long MoonTimeSecond=0;// 29.53 full to full 28.53*24*60*60)/48points= 53136 seconds per point
int MoonPosition=22;// 1-48
int MoonTmp=0;// data holder
int WeekOfYear=24;
int WeekDelta=0;
int Latitude=45;

int DayWeek=0;
int DayRef=0;
int DayNight;
int DayLength[]={//*************************week of the year is the column and the row is the latitude
12,12,11,11,11,10,10,9,8,7,6,3,0,0,0,
12,12,11,11,11,10,10,9,9,8,6,4,0,0,0,
12,12,11,11,11,10,10,9,9,8,7,4,0,0,0,
12,12,12,11,11,11,10,10,9,8,7,5,0,0,0,
12,12,12,11,11,11,10,10,9,9,8,6,2,0,0,
12,12,12,11,11,11,10,10,10,9,8,7,4,0,0,
12,12,12,11,11,11,11,10,10,9,9,8,6,0,0,
12,12,12,12,11,11,11,11,10,10,9,9,7,3,0,
12,12,12,12,12,11,11,11,11,10,10,9,8,6,0,
12,12,12,12,12,12,11,11,11,11,11,10,10,8,1,
12,12,12,12,12,12,12,12,12,11,11,11,11,10,8,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,11,
12,12,12,12,12,12,12,12,12,12,13,13,13,13,15,
12,12,12,12,12,12,13,13,13,13,13,14,14,15,20,
12,12,12,12,13,13,13,13,13,13,14,14,15,17,24,
12,12,12,13,13,13,13,13,14,14,14,15,17,20,24,
12,12,12,13,13,13,13,14,14,14,15,16,18,24,24,
12,12,13,13,13,13,14,14,14,15,16,17,19,24,24,
12,12,13,13,13,13,14,14,15,15,16,18,22,24,24,
12,12,13,13,13,14,14,14,15,16,17,19,24,24,24,
12,12,13,13,13,14,14,15,15,16,17,20,24,24,24,
12,12,13,13,13,14,14,15,16,17,18,21,24,24,24,
12,12,13,13,14,14,14,15,16,17,18,22,24,24,24,
12,12,13,13,14,14,15,15,16,17,19,23,24,24,24,
12,12,13,13,14,14,15,15,16,17,19,24,24,24,24,
12,12,13,13,14,14,15,15,16,17,19,24,24,24,24,
12,12,13,13,14,14,15,15,16,17,19,24,24,24,24,
12,12,13,13,14,14,15,15,16,17,18,22,24,24,24,
12,12,13,13,13,14,14,15,16,17,18,21,24,24,24,
12,12,13,13,13,14,14,15,15,16,18,20,24,24,24,
12,12,13,13,13,14,14,15,15,16,17,19,24,24,24,
12,12,13,13,13,14,14,14,15,16,17,18,24,24,24,
12,12,13,13,13,13,14,14,15,15,16,17,20,24,24,
12,12,12,13,13,13,13,14,14,15,15,17,19,24,24,
12,12,12,13,13,13,13,13,14,14,15,16,17,22,24,
12,12,12,12,13,13,13,13,13,14,14,15,16,18,24,
12,12,12,12,12,13,13,13,13,13,14,14,15,16,24,
12,12,12,12,12,12,12,13,13,13,13,13,14,14,17,
12,12,12,12,12,12,12,12,12,12,12,12,12,13,13,
12,12,12,12,12,12,12,12,12,12,12,12,11,11,10,
12,12,12,12,12,12,12,12,11,11,11,11,10,9,6,
12,12,12,12,12,12,11,11,11,11,10,10,9,7,0,
12,12,12,12,11,11,11,11,11,10,10,9,8,5,0,
12,12,12,12,11,11,11,11,10,10,9,8,7,0,0,
12,12,12,11,11,11,11,10,10,9,9,7,5,0,0,
12,12,12,11,11,11,10,10,10,9,8,7,3,0,0,
12,12,12,11,11,11,10,10,9,8,7,6,0,0,0,
12,12,12,11,11,10,10,10,9,8,7,5,0,0,0,
12,12,11,11,11,10,10,9,9,8,6,4,0,0,0,
12,12,11,11,11,10,10,9,9,8,6,3,0,0,0,
12,12,11,11,11,10,10,9,8,7,6,3,0,0,0,
12,12,11,11,11,10,10,9,8,7,6,3,0,0,0,
12,12,11,11,11,10,10,9,8,7,6,3,0,0,0,

12,12,12,11,11,11,11,10,10,9,9,7,5,0,0,
12,12,12,11,11,11,10,10,10,9,8,7,3,0,0,
12,12,12,11,11,11,10,10,9,8,7,6,0,0,0,
12,12,12,11,11,10,10,10,9,8,7,5,0,0,0,
12,12,11,11,11,10,10,9,9,8,6,4,0,0,0,
12,12,11,11,11,10,10,9,9,8,6,3,0,0,0,
12,12,11,11,11,10,10,9,8,7,6,3,0,0,0,
12,12,11,11,11,10,10,9,8,7,6,3,0,0,0,
12,12,11,11,11,10,10,9,8,7,6,3,0,0,0,
};

void setup()
{
// pinMode( cs, OUTPUT);
// digitalWrite(cs, HIGH);
Serial.begin(9600);
SPI.setBitOrder(MSBFIRST);
SPI.setDataMode(SPI_MODE1);
RTC_init();

Latitude= EEPROM.read(0);
WeekOfYear= EEPROM.read(1);
MoonPosition= EEPROM.read(2);

pixels108.begin(); // This initializes the NeoPixel library.
LoadDay();
pinMode(led, OUTPUT);
pinMode(AddABit, INPUT_PULLUP);
pinMode(AddSec, INPUT_PULLUP);
pinMode(AddMin, INPUT_PULLUP);
pinMode(AddHour, INPUT_PULLUP);
pinMode(AddWk, INPUT_PULLUP);
pinMode(AddLat, INPUT_PULLUP);
pinMode(AddMoon, INPUT_PULLUP);
// pinMode(SPICLOCK, OUTPUT);
// pinMode(DATAIN, INPUT_PULLUP);
// pinMode(DATAOUT, OUTPUT);
pinMode(DimNight, INPUT_PULLUP);
pinMode(DayLsvngs, INPUT_PULLUP);
LampTest();
}

void loop() {
delay(200);
ReadTimeDate();
Serial.println(ReadTimeDate());
if(SecondsDeltaTrack==5) // **********************************************************************this sets the time
{
aa =digitalRead(AddABit); if(aa==0){ s=0;SetTimeDate(11,12,13,h,mi,s);}
bb =digitalRead(AddSec); if(bb==0){s=s+2; if(s>59){s=0;} SetTimeDate(11,12,13,h,mi,s);}//
cc =digitalRead(AddMin); if(cc==0){mi=mi+1; if(mi>59){mi=0;} SetTimeDate(11,12,13,h,mi,s);}
dd =digitalRead(AddHour); if(dd==0){h=h+1; if(h>23){h=0;} SetTimeDate(11,12,13,h,mi,s);}

ee =digitalRead(AddWk); if(ee==0){SetWeekOfYear();}
ff =digitalRead(AddLat); if(ff==0){SetLatitude();}
gg =digitalRead(AddMoon); if(gg==0){SetMoonPhase();}

hh =digitalRead(DimNight);
ii =digitalRead(DayLsvngs); //DimNight 22// HomeLED#define DayLsvngs
}


MoonTmp=MoonPosition+SunPosition;// position with sun
if (MoonTmp>47){MoonTmp=MoonTmp-48;}// fix overflowe

GetDayLegnth();
if(DayNight>21||DayNight<6){NIGHTLIGHT();}//bright for daylight
else{DAYLIGHT();}//NIGHTLIGHT

pixels108.show();
SPI.setBitOrder(MSBFIRST);
SPI.setDataMode(SPI_MODE1);
Serial.print(" Latitude = ") ; Serial.print(Latitude) ; Serial.println(" ") ;
Serial.print(" WeekOfYear = ") ; Serial.print(WeekOfYear) ; Serial.println(" ") ;
Serial.print(" MoonPosition = ") ; Serial.print(MoonPosition) ; Serial.println(" ") ;
}


void ClrColore()// turn off all LEDS
{
for( i=0;i<108;i++)
{Rr=0;Gg=0;Bb=0;
pixels108.setPixelColor(i, pixels108.Color(Rr,Gg,Bb));
}
pixels108.show();
}


void LampTest()// power up
{ for(j=0;j<108;j++)
{
for( i=0;i<108;i++)
{ Rr=00;Gg=5;Bb=5;
if(i==j){ Rr=250;Gg=0;Bb=0;}
pixels108.setPixelColor(i, pixels108.Color(Rr,Gg,Bb)); // Moderately bright green color.
}
delay(20); // Delay for a period of time (in milliseconds).
pixels108.show();
}
}

//
void SetWeekOfYear(){
ClrColore();
for(j=49;j<100;j++)
{for( i=49;i<100;i++)
{ Rr=000;Gg=5;Bb=5;
if (i==48||i==53||i==58 ||i==63||i==68 ||i==73||i==78||i==83||i==88 ||i==93||i==98 ||i==103||i==108){ Gg=95;}
if(i==j){ Rr=250;Gg=0;Bb=0;ee =digitalRead(AddWk);
if(ee==1){WeekOfYear=i-48;i=111;j=111;
EEPROM.write(1, WeekOfYear);//WeekOfYear
Serial.print(" WeekOfYear = ") ;
Serial.print(WeekOfYear) ; Serial.println(" ") ;}
} //BLUE DOTS
pixels108.setPixelColor(i, pixels108.Color(Rr,Gg,Bb)); // Moderately bright green color.
}
pixels108.show();
delay(600); // Delay for a period of time (in milliseconds).
}
}

void SetLatitude()
{
ClrColore();
for( i=0;i<108;i++)
{Rr=0;Gg=0;Bb=0;
pixels108.setPixelColor(i, pixels108.Color(Rr,Gg,Bb));
}
pixels108.show();
for(j=63;j>48;j--)
{
for( i=63;i>48;i--)
{ Rr=00;Gg=5;Bb=5;
if (i==53||i==58 ||i==63||i==68 ||i==73||i==78||i==83||i==88 ||i==93||i==98 ||i==103||i==108){ Gg=45;}
if(i==j){ Rr=250;Gg=0;Bb=0; ff =digitalRead(AddLat);
if(ff==1){Latitude=15-(i-48); i=0;j=01;
EEPROM.write(0, Latitude);//Latitude
Serial.print(" Latitude = ") ; Serial.print(Latitude) ; Serial.println(" ") ;}} if(i==48){Gg=90;Bb=90;}
pixels108.setPixelColor(i, pixels108.Color(Rr,Gg,Bb)); // Moderately bright green color.
}
pixels108.show();
delay(600); // Delay for a period of time (in milliseconds).
}
}

void SetMoonPhase()
{
ClrColore();
for(j=0;j<108;j++)
{
for( i=0;i<47;i++)
{ Rr=00;Gg=5;Bb=5;
if (i==0||i==5 ||i==10||i==15 ||i==20||i==25||i==30||i==30 ||i==40||i==45 ||i==50||i==55){ Gg=45;}
if(i==j){ Rr=250;Gg=0;Bb=0; gg =digitalRead(AddMoon);
if(gg==1){MoonPosition=i; i=111;j=111;
EEPROM.write(2, MoonPosition);//MoonPosition
Serial.print(" MoonPosition = ") ; Serial.print(MoonPosition) ; Serial.println(" ") ; }} if(i==48){Gg=90;Bb=90;}
pixels108.setPixelColor(i, pixels108.Color(Rr,Gg,Bb)); // Moderately bright green color.
}
pixels108.show();
delay(600); // Delay for a period of time (in milliseconds).
}
}
//




void LoadDay()
{int DayLength[]={
12,12,11,11,11,10,10,9,8,7,6,3,0,0,0,
12,12,11,11,11,10,10,9,9,8,6,4,0,0,0,
12,12,11,11,11,10,10,9,9,8,7,4,0,0,0,
12,12,12,11,11,11,10,10,9,8,7,5,0,0,0,
12,12,12,11,11,11,10,10,9,9,8,6,2,0,0,
12,12,12,11,11,11,10,10,10,9,8,7,4,0,0,
12,12,12,11,11,11,11,10,10,9,9,8,6,0,0,
12,12,12,12,11,11,11,11,10,10,9,9,7,3,0,
12,12,12,12,12,11,11,11,11,10,10,9,8,6,0,
12,12,12,12,12,12,11,11,11,11,11,10,10,8,1,
12,12,12,12,12,12,12,12,12,11,11,11,11,10,8,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,11,
12,12,12,12,12,12,12,12,12,12,13,13,13,13,15,
12,12,12,12,12,12,13,13,13,13,13,14,14,15,20,
12,12,12,12,13,13,13,13,13,13,14,14,15,17,24,
12,12,12,13,13,13,13,13,14,14,14,15,17,20,24,
12,12,12,13,13,13,13,14,14,14,15,16,18,24,24,
12,12,13,13,13,13,14,14,14,15,16,17,19,24,24,
12,12,13,13,13,13,14,14,15,15,16,18,22,24,24,
12,12,13,13,13,14,14,14,15,16,17,19,24,24,24,
12,12,13,13,13,14,14,15,15,16,17,20,24,24,24,
12,12,13,13,13,14,14,15,16,17,18,21,24,24,24,
12,12,13,13,14,14,14,15,16,17,18,22,24,24,24,
12,12,13,13,14,14,15,15,16,17,19,23,24,24,24,
12,12,13,13,14,14,15,15,16,17,19,24,24,24,24,
12,12,13,13,14,14,15,15,16,17,19,24,24,24,24,
12,12,13,13,14,14,15,15,16,17,19,24,24,24,24,
12,12,13,13,14,14,15,15,16,17,18,22,24,24,24,
12,12,13,13,13,14,14,15,16,17,18,21,24,24,24,
12,12,13,13,13,14,14,15,15,16,18,20,24,24,24,
12,12,13,13,13,14,14,15,15,16,17,19,24,24,24,
12,12,13,13,13,14,14,14,15,16,17,18,24,24,24,
12,12,13,13,13,13,14,14,15,15,16,17,20,24,24,
12,12,12,13,13,13,13,14,14,15,15,17,19,24,24,
12,12,12,13,13,13,13,13,14,14,15,16,17,22,24,
12,12,12,12,13,13,13,13,13,14,14,15,16,18,24,
12,12,12,12,12,13,13,13,13,13,14,14,15,16,24,
12,12,12,12,12,12,12,13,13,13,13,13,14,14,17,
12,12,12,12,12,12,12,12,12,12,12,12,12,13,13,
12,12,12,12,12,12,12,12,12,12,12,12,11,11,10,
12,12,12,12,12,12,12,12,11,11,11,11,10,9,6,
12,12,12,12,12,12,11,11,11,11,10,10,9,7,0,
12,12,12,12,11,11,11,11,11,10,10,9,8,5,0,
12,12,12,12,11,11,11,11,10,10,9,8,7,0,0,
12,12,12,11,11,11,11,10,10,9,9,7,5,0,0,
12,12,12,11,11,11,10,10,10,9,8,7,3,0,0,
12,12,12,11,11,11,10,10,9,8,7,6,0,0,0,
12,12,12,11,11,10,10,10,9,8,7,5,0,0,0,
12,12,11,11,11,10,10,9,9,8,6,4,0,0,0,
12,12,11,11,11,10,10,9,9,8,6,3,0,0,0,
12,12,11,11,11,10,10,9,8,7,6,3,0,0,0,
12,12,11,11,11,10,10,9,8,7,6,3,0,0,0,
12,12,11,11,11,10,10,9,8,7,6,3,0,0,0,

12,12,12,11,11,11,11,10,10,9,9,7,5,0,0,
12,12,12,11,11,11,10,10,10,9,8,7,3,0,0,
12,12,12,11,11,11,10,10,9,8,7,6,0,0,0,
12,12,12,11,11,10,10,10,9,8,7,5,0,0,0,
12,12,11,11,11,10,10,9,9,8,6,4,0,0,0,
12,12,11,11,11,10,10,9,9,8,6,3,0,0,0,
12,12,11,11,11,10,10,9,8,7,6,3,0,0,0,
12,12,11,11,11,10,10,9,8,7,6,3,0,0,0,
12,12,11,11,11,10,10,9,8,7,6,3,0,0,0,
};}

void GetDayLegnth()
{


HoursOfDay=DayLength[WeekOfYear*15+Latitude]; //WeekOfYear*15+Latitude];

}

int RTC_init(){
pinMode(cs,OUTPUT); // chip select
// start the SPI library:
SPI.begin();
SPI.setBitOrder(MSBFIRST);
SPI.setDataMode(SPI_MODE1); // both mode 1 & 3 should work
//set control register
digitalWrite(cs, LOW);
SPI.transfer(0x8E);
SPI.transfer(0x60); //60= disable Osciallator and Battery SQ wave @1hz, temp compensation, Alarms disabled
digitalWrite(cs, HIGH);
delay(10);
}


//************************************************************************************************************************************

String ReadTimeDate(){// mostly code from sparkfun
String temp;
int TimeDate [7]; //second,minute,hour,null,day,month,year
for(int i=0; i<=6;i++){
if(i==3)
i++;
digitalWrite(cs, LOW);
SPI.transfer(i+0x00);
unsigned int n = SPI.transfer(0x00);
digitalWrite(cs, HIGH);
int a=n & B00001111;
if(i==2){
int b=(n & B00110000)>>4; //24 hour mode
if(b==B00000010)
b=20;
else if(b==B00000001)
b=10;
TimeDate=a+b;
}
else if(i==4){
int b=(n & B00110000)>>4;
TimeDate=a+b*10;
}
else if(i==5){
int b=(n & B00010000)>>4;
TimeDate=a+b*10;
}
else if(i==6){
int b=(n & B11110000)>>4;
TimeDate=a+b*10;
}
else{
int b=(n & B01110000)>>4;
TimeDate=a+b*10;
}
}
Seconds=TimeDate[0]; // gets data for clock
s=Seconds;
SecondsDeltaTrack++;
if(Seconds!=SecondsDelta){SecondsDelta=Seconds;SecondsDeltaTrack=0;}
if(SecondsDeltaTrack>20){SecondsDeltaTrack=0;}
Minutes=TimeDate[1];
mi=Minutes ;
Hours=TimeDate[2];
h=Hours ;
DayNight=Hours;
DayWeek=TimeDate[2];//DayRefint DayWeek=0;int DayRef=0;
if(DayWeek!=DayRef&&DayWeek==0)
{WeekOfYear++;
if(WeekOfYear>51){WeekOfYear=0;}
EEPROM.write(1, WeekOfYear);//WeekOfYear
}
SunPosition=(Hours+Hours+24)-(ii*2); //24 hours is 48 points ii= DST
if(SunPosition>48){SunPosition=SunPosition-48;}//compensate for DST
if(SunPosition<0){SunPosition=SunPosition+2;}//compensate for DST
if(Minutes>29){SunPosition++;}
if(Hours>11){Hours=Hours-12;}

QrtrHours=0;
if (Minutes>14){QrtrHours=1;}
if (Minutes>29){QrtrHours=2;}
if (Minutes>44){QrtrHours=3;}
if(SecondsDelta!=Seconds)
{
SecondsDelta=Seconds;
MoonTimeSecond++;
if(MoonTimeSecond>53145)
{MoonTimeSecond=0;MoonPosition--;
if(MoonPosition==1){MoonPosition=48;}
EEPROM.write(2, MoonPosition);//MoonPosition
}//>53153
}



temp.concat(" ") ;
temp.concat(TimeDate[2]);
temp.concat(":") ;
temp.concat(TimeDate[1]);
temp.concat(":") ;
i=TimeDate[0]++;
temp.concat(i);
return(temp);
}


int SetTimeDate(int d, int mo, int y, int h, int mi, int s){
int TimeDate [7]={s,mi,h,0,d,mo,y};
for(int i=0; i<=6;i++){
if(i==3)
i++;
int b= TimeDate/10;
int a= TimeDate-b*10;
if(i==2){
if (b==2)
b=B00000010;
else if (b==1)
b=B00000001;
}
TimeDate= a+(b<<4);

digitalWrite(cs, LOW);
SPI.transfer(i+0x80);
SPI.transfer(TimeDate);
digitalWrite(cs, HIGH);
}
}

int DAYLIGHT()
{
for(int i=0;i<140;i++)
{
// reset colores
Rr=0;Gg=0;Bb=0;

//layout blue night
if(i<48){ Rr=0;Gg=0;Bb=8 ;}
// Add sunshine
if((48>i&&i>((48-HoursOfDay)-(ii*2)))||i< (HoursOfDay-(ii*2))){Rr=10;Gg=10;Bb=15;}
// dim white outer ring
if(i>48){Rr=1;Gg=1;Bb=1;}
//BLUE Time DOTS
if (i==48||i==53||i==58 ||i==63||i==68 ||i==73||i==78||i==83||i==88 ||i==93||i==98 ||i==103||i==108){ Bb=95;}


//Second DOTS
if (i==(Seconds+48)){ Gg=55;}
//Minutest DOTS
if (i==(Minutes+48)){ Rr=55;}
//Hour dots
HoursPos=Hours*4+QrtrHours;// 48 points in the day
if (HoursPos>48){HoursPos=HoursPos-48;}
if (i==HoursPos){ Rr=55;Gg=0;Bb=0;}

//sun position
if(SunPosition==HoursPos){SunPosition++;} // fix sun / hour overlap
if (SunPosition>47){SunPosition=SunPosition-48;}
if (SunPosition>47){SunPosition=SunPosition-48;}//2nd round like ampm
if (i==SunPosition){Rr=85;Gg=85;}
//moon moon position
if (MoonTmp==HoursPos){MoonTmp++;}// fix moon / hour overlap
if (MoonTmp>47){MoonTmp=MoonTmp-48;}
if (MoonTmp==SunPosition){MoonTmp++;}else{j=0;}// fix moon / sun overlap
if (MoonTmp>47){MoonTmp=MoonTmp-48;}
if (MoonTmp==Hours){MoonTmp++;}// fix moon / hour overlap
if (MoonTmp>47){MoonTmp=MoonTmp-48;}
if (i==(MoonTmp)){Bb=105;Gg=55;}
pixels108.setPixelColor(i, pixels108.Color(Rr,Gg,Bb)); // Moderately bright green color.

}
}//END DAYLIGT



int NIGHTLIGHT(){

for(int i=0;i<140;i++)
{
// reset colores
Rr=0;Gg=0;Bb=0;

//layout blue night
if(i<48){ Rr=0;Gg=0;Bb=1 ;}
// Add sunshine
if((48>i&&i>(48-HoursOfDay))||i< HoursOfDay){Rr=2;Gg=2;Bb=2;}
// dim white outer ring
if(i>48){Rr=0;Gg=0;Bb=0;}
//BLUE Time DOTS
if (i==48||i==53||i==58 ||i==63||i==68 ||i==73||i==78||i==83||i==88 ||i==93||i==98 ||i==103||i==108){ Bb=25;}


//Second DOTS
if (i==(Seconds+48)){ Gg=35;}
//Minutest DOTS
if (i==(Minutes+48)){ Rr=35;}
//Hour dots
HoursPos=Hours*4+QrtrHours;// 48 points in the day
if (HoursPos>48){HoursPos=HoursPos-48;}
if (i==HoursPos){ Rr=25;Gg=0;Bb=0;}

//sun position
if(SunPosition==HoursPos){SunPosition++;} // fix sun / hour overlap
if (SunPosition>47){SunPosition=SunPosition-48;}
if (SunPosition>47){SunPosition=SunPosition-48;}//2nd round like ampm
if (i==SunPosition){Rr=25;Gg=25;}
//moon moon position
if (MoonTmp==HoursPos){MoonTmp++;}// fix moon / hour overlap
if (MoonTmp>47){MoonTmp=MoonTmp-48;}
if (MoonTmp==SunPosition){MoonTmp++;}else{j=0;}// fix moon / sun overlap
if (MoonTmp>47){MoonTmp=MoonTmp-48;}
if (MoonTmp==Hours){MoonTmp++;}// fix moon / hour overlap
if (MoonTmp>47){MoonTmp=MoonTmp-48;}
if (i==(MoonTmp)){Bb=25;Gg=25;}
pixels108.setPixelColor(i, pixels108.Color(Rr,Gg,Bb)); // Moderately bright green color.

}
}//END DAYLIGT
 
Status
Not open for further replies.
Back
Top