|

Hitung Waktu Sunrise Transit dan Sunset Arduino

Penjelasan Dasar

Waktu Sunrise, Transit, dan Sunset adalah waktu-waktu penting yang ditentukan oleh posisi matahari di cakrawala. Setiap tempat di dunia memiliki waktu yang berbeda untuk setiap waktu tersebut, tergantung pada posisi geografisnya.

Waktu Sunrise adalah waktu saat matahari terbit di suatu tempat. Ini adalah waktu dimana siang hari mulai dan dapat dilihat di ufuk timur. Waktu ini bervariasi sesuai dengan musim dan posisi geografis tempat tersebut. Misalnya, waktu sunrise di kota tropis akan berbeda dengan waktu sunrise di kota yang berada di kutub.

Waktu Transit adalah waktu saat matahari berada tepat di atas garis meridian suatu tempat. Ini adalah waktu saat matahari berada paling tinggi di langit dan dapat dilihat di ufuk tengah. Waktu ini juga bervariasi sesuai dengan musim dan posisi geografis tempat tersebut.

Waktu Sunset adalah waktu saat matahari terbenam di suatu tempat. Ini adalah waktu dimana malam hari mulai dan dapat dilihat di ufuk barat. Seperti waktu sunrise dan transit, waktu sunset juga bervariasi sesuai dengan musim dan posisi geografis tempat tersebut.

Perbedaan waktu sunrise, transit, dan sunset dapat digunakan untuk menentukan arah mata angin dan juga digunakan sebagai acuan dalam kegiatan seperti perikanan, pertanian, dan perjalanan. Banyak aplikasi dan situs web yang dapat digunakan untuk mengetahui waktu-waktu ini di suatu tempat tertentu.


Kode Program

Dibawah ini saya telah menyediakan kode program untuk menghitung waktu sunrise, transit dan sunset. Namun sebelum itu, penting untuk mendownload sebuah library yang bernama SolarCalculator. Anda dapat mendownload library ini dengan klik tombol berikut:


Setelah library tersebut dimasukkan kedalam Arduino IDE, sekarang anda dapat menggunakan kode program berikut. Silahkan upload kode berikut ke Arduino yang anda gunakan.

#include <SolarCalculator.h>
#include <TimeLib.h>

double latitude = 5.57157;
double longitude = 95.36569;
int utc_offset = 7;

int tahun = 2023;
int bulan = 1;
int tanggal = 4;

int jam = 10;
int menit = 36;
int detik = 0;

double transit, sunrise, sunset;

void setup()
{
  Serial.begin(9600);

  setTime(toUtc(compileTime()));
  setTime(jam, menit, detik, tanggal, bulan, tahun);
  time_t utc = now();

  calcSunriseSunset(utc, latitude, longitude, transit, sunrise, sunset);

  Serial.println("Sunrise         : " + printSunTime24h(sunrise + utc_offset));
  Serial.println("Transit         : " + printSunTime24h(transit + utc_offset));
  Serial.println("Sunset          : " + printSunTime24h(sunset + utc_offset));
  Serial.println();
}

void loop()
{
}

// Code from JChristensen/Timezone Clock example
time_t compileTime()
{
  const uint8_t COMPILE_TIME_DELAY = 8;
  const char *compDate = __DATE__, *compTime = __TIME__, *months = "JanFebMarAprMayJunJulAugSepOctNovDec";
  char chMon[4], *m;
  tmElements_t tm;

  strncpy(chMon, compDate, 3);
  chMon[3] = '\0';
  m = strstr(months, chMon);
  tm.Month = ((m - months) / 3 + 1);

  tm.Day = atoi(compDate + 4);
  tm.Year = atoi(compDate + 7) - 1970;
  tm.Hour = atoi(compTime);
  tm.Minute = atoi(compTime + 3);
  tm.Second = atoi(compTime + 6);
  time_t t = makeTime(tm);
  return t + COMPILE_TIME_DELAY;
}

time_t toUtc(time_t local)
{
  return local - utc_offset * 3600L;
}

String printSunTime24h(double hours)
{
  int m = int(round(hours * 60));
  int hr = (m / 60) % 24;
  int mn = m % 60;

  String hrVal = printDigits(hr);
  String mnVal = printDigits(mn);
  String val = hrVal + ':' + mnVal;
  return val;
}

String printDigits(int digits)
{
  String val;
  if (digits < 10)
    val = '0' + String(digits);
  else val = String(digits);

  return val;
}

Apabila telah selesai, anda buka Serial Monitor dan anda akan melihat hasilnya adalah sebagai berikut:

Hitung Waktu Sunrise Transit dan Sunset  Arduino

Secara keseluruhan, waktu sunrise, transit, dan sunset adalah waktu-waktu penting yang ditentukan oleh posisi matahari di cakrawala. Perbedaan waktu ini dapat digunakan untuk berbagai keperluan dan sangat berguna dalam kegiatan sehari-hari.

Artikel yang bermanfaat lainnya:

Similar Posts