try this example from the Ephemeris library. it has all the other astronomical info removed. In its original form it is . too big for anything less than a mega:
/*
* derived from ephemeris_full.ino
*
* Copyright (c) 2017 by Sebastien MARCHAND (Web:www.marscaper.com, Email:sebastien@marscaper.com)
*/
#include <Ephemeris.h> // https://github.com/MarScaper/ephemeris
#include <TimeLib.h>
#include <DS1307RTC.h>
void printDateAndTime(int day, int month, int year, int hour, int minute, int second ) ////////////////////////////////////////////////////
{
Serial.print(day); Serial.print("/"); Serial.print(month); Serial.print("/");
Serial.print(year); Serial.print(" "); Serial.print(hour); Serial.print(":");
Serial.print(minute); Serial.print(":"); Serial.print(second);
} /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void equatorialCoordinatesToString(EquatorialCoordinates coord, char raCoord[14] , char decCoord[14])
{
int raHour,raMinute;
float raSecond;
Ephemeris::floatingHoursToHoursMinutesSeconds(coord.ra, &raHour, &raMinute, &raSecond);
sprintf(raCoord," %02dh%02dm%02ds.%02d",raHour,raMinute,(int)raSecond,(int)round(((float)(raSecond-(int)raSecond)*pow(10,2))));
int decDegree,decMinute;
float decSecond;
Ephemeris::floatingDegreesToDegreesMinutesSeconds(coord.dec, &decDegree, &decMinute, &decSecond);
if(decDegree<0)
{
sprintf(decCoord,"%02dd%02d'%02d\".%02d",(int)decDegree,decMinute,(int)decSecond,(int)round(((float)(decSecond-(int)decSecond)*pow(10,2))));
}
else
{
sprintf(decCoord," %02dd%02d'%02d\".%02d",(int)decDegree,decMinute,(int)decSecond,(int)round(((float)(decSecond-(int)decSecond)*pow(10,2))));
}
}
void printEquatorialCoordinates(EquatorialCoordinates coord) ////////////////////////////////////////////////////////////////////////////
{
if( isnan(coord.ra) || isnan(coord.dec))
{
// Do not work for Earth of course...
Serial.println("R.A: -");
Serial.println("Dec: -");
return;
} //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
char raCoord[14];
char decCoord[14];
equatorialCoordinatesToString(coord,raCoord,decCoord);
Serial.print(" R.A: ");
Serial.println(raCoord);
Serial.print(" Dec: ");
Serial.println(decCoord);
return;
} ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void printHorizontalCoordinates(HorizontalCoordinates coord) /////////////////////////////////////////////////////////////////////////////
{
if( isnan(coord.azi) || isnan(coord.alt))
{
// Do not work for Earth of course...
Serial.println(" Az: -");
Serial.println(" El: -");
return;
}
Serial.print(" Az: ");
Serial.print(coord.azi,2);
Serial.println("d");
Serial.print(" El: ");
Serial.print(coord.alt,2);
Serial.println("d");
} ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void printSolarSystemObjects(int day, int month, int year, int hour, int minute, int second) ///////////////////////////////////////////////
{
Serial.println("-----------------------------");
printPlanet("Sun", Sun, day, month, year, hour, minute, second); // do not remove the spaces
}
void printPlanet( const char *solarSystemObjectName, SolarSystemObjectIndex index, int day, int month, int year, int hour, int minute, int second )
{
SolarSystemObject solarSystemObject = Ephemeris::solarSystemObjectAtDateAndTime(index, day, month, year, hour, minute, second);
Serial.println(solarSystemObjectName);
printEquatorialCoordinates(solarSystemObject.equaCoordinates);
printHorizontalCoordinates(solarSystemObject.horiCoordinates);
if( solarSystemObject.riseAndSetState == RiseAndSetOk )
{
int hour,minute;
float second;
Ephemeris::floatingHoursToHoursMinutesSeconds(solarSystemObject.rise, &hour, &minute, &second);
Serial.print("Rise: ");
Serial.print(hour);
Serial.print(":");
Serial.print(minute);
Serial.print(":");
Serial.print(second);
Serial.println(" UTC");
Ephemeris::floatingHoursToHoursMinutesSeconds(solarSystemObject.set, &hour, &minute, &second);
Serial.print(" Set: ");
Serial.print(hour);
Serial.print(":");
Serial.print(minute);
Serial.print(":");
Serial.print(second);
Serial.println(" UTC");
}
}
void setup()
{
Serial.begin(9600);
// Set location on earth for horizontal coordinates transformations
Ephemeris::setLocationOnEarth( 45,06,12, // Lat: 45°06'12"
-96,34,06); // Lon: -96°34'06"
// West is negative and East is positive
Ephemeris::flipLongitude(false);
// Set altitude to improve rise and set precision
Ephemeris::setAltitude(1395); //elevation in meters
// Choose a date and time UTC Time not local /////////////////////////////////////////////////////////////////////////////////////////
int day=6,month=13,year=2019,hour=15,minute=45,second=0;
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Compute and print solar system objects
Serial.print("SolarTracker: (");
printDateAndTime(day,month,year,hour,minute,second);
Serial.println(")");
printSolarSystemObjects(day, month, year, hour, minute, second);
}
void loop() {}
I have a version that uses a W8BH clock that compiles, but I can't get Time library time elements into the Ephemeris code. That is about 18K