#include <RTClib.h> // 실시간시계 라이브러리
#include <Wire.h> // I2C통신 라이브러리
#include <TM1637Display.h>
#include "PrayerTimes.h"
#define CLK 3
#define DIO 4
#define SERIAL_OPTION 0 // 시리얼 통신=0, 안함=0
TM1637Display display = TM1637Display(CLK, DIO);
RTC_DS1307 RTC;
double times[sizeof(TimeName)/sizeof(char*)];
int hh, mm;
void p(char *fmt, ... ){
char tmp[128]; // resulting string limited to 128 chars
va_list args;
va_start (args, fmt );
vsnprintf(tmp, 128, fmt, args);
va_end (args);
Serial.print(tmp);
}
void setup() {
Serial.begin(115200); // Any baud rate should work
Serial.println("Hello Arduino\n");
RTC.begin(); // 실시간시계 시작
// Set the display brightness (0-7)
display.setBrightness(6);
// Clear the display
display.clear();
// RTC.adjust(DateTime(2022,9,30,18,13,40)); // 처음 한번만 적절한 날짜 시간으로 설정, 이후 주석처리
}
double appendIntegers(double a, double b) {
double multiplier = 1;
while (b / multiplier > 0) {
multiplier *= 10;
}
return a * multiplier + b;
}
void loop() {
DateTime now=RTC.now();
int dst=1;
set_calc_method(ISNA);
set_asr_method(Shafii);
set_high_lats_adjust_method(AngleBased);
set_fajr_angle(15);
set_isha_angle(15);
//MEKKA
float latitude=-7.037549;
float longitude=110.474800;
// -7.037549, 110.474800
get_prayer_times(now.year(), now.month(), now.day(), latitude, longitude, dst, times);
// get_prayer_times(2015, 5, 8, 46.9500f, 7.4458f, 2, times);
Serial.print("YEAR:");
Serial.println(now.year());
Serial.print("MONTH:");
Serial.println(now.month());
Serial.print("DAY:");
Serial.println(now.day());
for (int i=0;i<sizeof(times)/sizeof(double);i++){'
int hours, minutes;
'
char tmp[10];
get_float_time_parts(times[i], hours, minutes);
// p("%d \t %10s %s \t %02d:%02d \n\r",i,TimeName[i],dtostrf(times[i],2,2,tmp),hours,minutes);
Serial.print(i);
Serial.print(" \t ");
Serial.print(TimeName[i]);
Serial.print(" \t\t ");
Serial.print(times[i]);
Serial.print(" \t ");
Serial.print(hours);
Serial.print(":");
Serial.print(minutes);
Serial.println();
}
display.showNumberDec(appendIntegers(hours, minutes));
// hh = now.hour();
// mm = now.minute();
delay(1000);
}