Coder Social home page Coder Social logo

dusk2dawn's Introduction

Dusk2Dawn

Minimal Arduino library for sunrise and sunset time.

Given some basic data, such as geographic coordinates and a date, an estimate time of apparent sunrise or sunset is returned in minutes elapsed since midnight.

WARNING: This is an unauthorized port of NOAA's Solar Calculator, hence the package will remain unlicensed. Use at your own risk!

Installation

From the Library Manager

  1. Launch the Arduino IDE and navigate to Sketch → Include Library → Manage Libraries.
  2. In the library manager, scroll to Dusk2Dawn or enter the name into the search field.
  3. Click on the library, then click on the Install button.

From the ZIP file

  1. Download the ZIP file.
  2. Launch the Arduino IDE and navigate to Sketch → Include Library → Add .ZIP Library.... From the prompt, select the ZIP just downloaded.

Usage

  /*  Multiple instances can be created. Arguments are longitude, latitude, and
   *  time zone offset in hours from UTC.
   *
   *  The first two must be in decimal degrees (DD), e.g. 10.001, versus the
   *  more common degrees, minutes, and seconds format (DMS), e.g. 10° 00′ 3.6″.
   *  The time zone offset can be expressed in float in the few cases where the
   *  the zones are offset by 30 or 45 minutes, e.g. "5.75" for Nepal Standard
   *  Time.
   *
   *  HINT: An easy way to find the longitude and latitude for any location is
   *  to find the spot in Google Maps, right click the place on the map, and
   *  select "What's here?". At the bottom, you’ll see a card with the
   *  coordinates.
   */
  Dusk2Dawn losAngeles(34.0522, -118.2437, -8);
  Dusk2Dawn antarctica(-77.85, 166.6667, 12);


  /*  Available methods are sunrise() and sunset(). Arguments are year, month,
   *  day, and if Daylight Saving Time is in effect.
   */
  int laSunrise  = losAngeles.sunrise(2017, 12, 31, false);
  int laSunset   = losAngeles.sunset(2017, 12, 31, false);
  int antSunrise = antarctica.sunrise(2017, 6, 30, true);


  /*  Time is returned in minutes elapsed since midnight. If no sunrises or
   *  sunsets are expected, a "-1" is returned.
   */
  Serial.println(laSunrise);  // 418
  Serial.println(laSunset);   // 1004
  Serial.println(antSunrise); // -1


  /*  A static method converts the returned time to a 24-hour clock format.
   *  Arguments are a character array and time in minutes.
   */
  char time[6];
  Dusk2Dawn::min2str(time, laSunrise);
  Serial.println(time); // 06:58


 /*  Alternatively, the array could be initialized with a dummy. This may be
  *  easier to remember.
  */
  char time2[] = "00:00";
  Dusk2Dawn::min2str(time2, laSunset);
  Serial.println(time2); // 16:53


  /*  Do some calculations with the minutes, then convert to time.
   */
  int laSolarNoon = laSunrise + (laSunset - laSunrise) / 2;
  char time3[] = "00:00";
  Dusk2Dawn::min2str(time3, laSolarNoon);
  Serial.println(time3); // 11:56


  /*  In case of an error, an error message is given. The static method also
   *  returns a false boolean value for error handling purposes.
   */
  char time4[] = "00:00";
  bool response = Dusk2Dawn::min2str(time4, antSunrise);
  if (response == false) {
    Serial.println(time4); // "ERROR"
    Serial.println("Uh oh!");
  }

History

  • 2019-6-18: Add license warning.
  • 2017-2-9: Bug fix.
  • 2017-2-3: Released.

dusk2dawn's People

Contributors

dmkishi avatar per1234 avatar rpost avatar polandj avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.