Skip to content

Commit 6bb1656

Browse files
Changed name from MoonPhase to moonPhase.
Make calls easier.
1 parent c0db1bf commit 6bb1656

File tree

4 files changed

+88
-44
lines changed

4 files changed

+88
-44
lines changed

MoonPhase.h

Lines changed: 0 additions & 34 deletions
This file was deleted.

keywords.txt

Lines changed: 26 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,26 @@
1-
MoonPhase KEYWORD1
2-
moonData KEYWORD1
3-
getInfo KEYWORD2
4-
1+
#######################################
2+
# syntax coloring map for moonPhase
3+
#######################################
4+
5+
#######################################
6+
# Datatypes (KEYWORD1)
7+
#######################################
8+
moonPhase KEYWORD1
9+
moonData_t KEYWORD1
10+
11+
#######################################
12+
# Methods and Functions (KEYWORD2)
13+
#######################################
14+
getInfo KEYWORD2
15+
angle KEYWORD2
16+
percentLit KEYWORD2
17+
18+
#######################################
19+
# Instances (KEYWORD2)
20+
######################################
21+
//moonPhase KEYWORD2
22+
moon KEYWORD2
23+
24+
#######################################
25+
# Constants (LITERAL1)
26+
#######################################

MoonPhase.cpp renamed to moonPhase.cpp

Lines changed: 29 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,23 @@
1-
#include "MoonPhase.h"
21
#include <inttypes.h>
32

4-
MoonPhase::moonData MoonPhase::getInfo( const int32_t &year, const int32_t &month, const int32_t &day, const double &hour )
3+
#include "moonPhase.h"
4+
5+
template<typename T, typename T2>
6+
inline T map(T2 val, T2 in_min, T2 in_max, T out_min, T out_max) {
7+
return (val - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
8+
}
9+
10+
double moonPhase::fhour( const struct tm &timeinfo ) {
11+
return timeinfo.tm_hour + map( ( timeinfo.tm_min * 60 ) + timeinfo.tm_sec, 0, 3600, 0.0, 1.0 );
12+
}
13+
14+
moonData_t moonPhase::_getInfo( const int32_t &year, const int32_t &month, const int32_t &day, const double &hour )
515
{
616
/*
717
Calculates the phase of the moon at the given epoch.
818
returns the moon percentage that is lit as a real number (0-1)
919
*/
10-
moonData returnValue;
20+
moonData_t returnValue;
1121
double j = _Julian(year, month, (double)day + hour / 24.0) - 2444238.5;
1222
double ls = _sun_position(j);
1323
double lm = _moon_position(j, ls);
@@ -18,7 +28,20 @@ MoonPhase::moonData MoonPhase::getInfo( const int32_t &year, const int32_t &mont
1828
return returnValue;
1929
}
2030

21-
double MoonPhase::_Julian( int32_t year, int32_t month, const double &day )
31+
moonData_t moonPhase::getInfo( const time_t t ) {
32+
struct tm timeinfo;
33+
gmtime_r( &t, &timeinfo );
34+
double hour = fhour( timeinfo );
35+
return _getInfo( 1900 + timeinfo.tm_year, 1 + timeinfo.tm_mon, timeinfo.tm_mday, hour );
36+
}
37+
38+
moonData_t moonPhase::getInfo() {
39+
time_t now;
40+
time( &now );
41+
return getInfo( now );
42+
}
43+
44+
double moonPhase::_Julian( int32_t year, int32_t month, const double &day )
2245
{
2346
int32_t b, c, e;
2447
b = 0;
@@ -37,7 +60,7 @@ double MoonPhase::_Julian( int32_t year, int32_t month, const double &day )
3760
return b + c + e + day + 1720994.5;
3861
}
3962

40-
double MoonPhase::_sun_position( const double &j )
63+
double moonPhase::_sun_position( const double &j )
4164
{
4265
double n, x, e, l, dl, v;
4366
int32_t i;
@@ -59,7 +82,7 @@ double MoonPhase::_sun_position( const double &j )
5982
return l;
6083
}
6184

62-
double MoonPhase::_moon_position( const double &j, const double &ls )
85+
double moonPhase::_moon_position( const double &j, const double &ls )
6386
{
6487
double ms, l, mm, ev, sms, ae, ec;
6588
int32_t i;

moonPhase.h

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
/*
2+
MoonPhase.h - Library to get moon phase angle
3+
and percentage illuminated. (as seen from Earth)
4+
Created by Marcel Timmer, April 28, 2018.
5+
Code adapted from http://www.voidware.com/phase.c
6+
A big thanks to Hugh at voidware for granting permission.
7+
Released under MIT license.
8+
*/
9+
#ifndef MoonPhase_h
10+
#define MoonPhase_h
11+
12+
#include "Arduino.h"
13+
14+
struct moonData_t
15+
{
16+
int32_t angle;
17+
double percentLit;
18+
};
19+
20+
class moonPhase
21+
{
22+
public:
23+
moonData_t getInfo();
24+
moonData_t getInfo( const time_t t );
25+
private:
26+
moonData_t _getInfo( const int32_t &year, const int32_t &month, const int32_t &day, const double &hour );
27+
double fhour( const struct tm &timeinfo );
28+
double _Julian( int32_t year, int32_t month, const double &day );
29+
double _sun_position( const double &j );
30+
double _moon_position( const double &j, const double &ls );
31+
32+
};
33+
#endif

0 commit comments

Comments
 (0)