Ds3231 часы реального времени, недельный таймер

Тема в разделе "Arduino & Shields", создана пользователем Memfis09, 2 мар 2020.

  1. Memfis09

    Memfis09 Нерд

    Доброго времени суток,
    Использую библиотеку для DS3231*/*DS3231.cpp - Arduino/chipKit library support for the DS3231 I2C Real-Time Clock
    Copyright (C)2015 Rinky-Dink Electronics, Henning Karlsen. All right reserved
    This library has been made to easily interface and use the DS3231 RTC with
    an Arduino or chipKit.
    You can find the latest version of the library at
    http://www.RinkyDinkElectronics.com/
    This library is free software; you can redistribute it and/or
    modify it under the terms of the CC BY-NC-SA 3.0 license.
    Please see the included documents for further information.*
    пробую собрать на основе этого модуля и Нано недельный таймер, чтобы включать/выключать по времени и дню недели.
    Подскажите, как правильно вытаскивать конкретно часы, минуты, дни недели?
    Или как кто видит реализовать данную задачу?
    Заранее спасибо за конкретику.
     
  2. asam

    asam Гик

    Там же все в документации расписано и даже примеры есть. Что конкретно непонятно то?
    Код (C++):
    // DS3231_Serial_Hard
    // Copyright (C)2015 Rinky-Dink Electronics, Henning Karlsen. All right reserved
    // web: http://www.RinkyDinkElectronics.com/
    //
    // A quick demo of how to use my DS3231-library to
    // retrieve time- and date-data for you to manipulate.
    //
    // To use the hardware I2C (TWI) interface of the Arduino you must connect
    // the pins as follows:
    //
    // Arduino Uno/2009:
    // ----------------------
    // DS3231:  SDA pin   -> Arduino Analog 4 or the dedicated SDA pin
    //          SCL pin   -> Arduino Analog 5 or the dedicated SCL pin
    //
    // Arduino Leonardo:
    // ----------------------
    // DS3231:  SDA pin   -> Arduino Digital 2 or the dedicated SDA pin
    //          SCL pin   -> Arduino Digital 3 or the dedicated SCL pin
    //
    // Arduino Mega:
    // ----------------------
    // DS3231:  SDA pin   -> Arduino Digital 20 (SDA) or the dedicated SDA pin
    //          SCL pin   -> Arduino Digital 21 (SCL) or the dedicated SCL pin
    //
    // Arduino Due:
    // ----------------------
    // DS3231:  SDA pin   -> Arduino Digital 20 (SDA) or the dedicated SDA1 (Digital 70) pin
    //          SCL pin   -> Arduino Digital 21 (SCL) or the dedicated SCL1 (Digital 71) pin
    //
    // The internal pull-up resistors will be activated when using the
    // hardware I2C interfaces.
    //
    // You can connect the DS3231 to any available pin but if you use any
    // other than what is described above the library will fall back to
    // a software-based, TWI-like protocol which will require exclusive access
    // to the pins used, and you will also have to use appropriate, external
    // pull-up resistors on the data and clock signals.
    //

    #include <DS3231.h>

    // Init the DS3231 using the hardware interface
    DS3231  rtc(SDA, SCL);

    // Init a Time-data structure
    Time  t;

    void setup()
    {
      // Setup Serial connection
      Serial.begin(115200);
      // Uncomment the next line if you are using an Arduino Leonardo
      //while (!Serial) {}

      // Initialize the rtc object
      rtc.begin();
     
      // The following lines can be uncommented to set the date and time
      //rtc.setDOW(WEDNESDAY);     // Set Day-of-Week to SUNDAY
      //rtc.setTime(12, 0, 0);     // Set the time to 12:00:00 (24hr format)
      //rtc.setDate(1, 1, 2014);   // Set the date to January 1st, 2014
    }

    void loop()
    {
      // Get data from the DS3231
      t = rtc.getTime();
     
      // Send date over serial connection
      Serial.print("Today is the ");
      Serial.print(t.date, DEC);
      Serial.print(". day of ");
      Serial.print(rtc.getMonthStr());
      Serial.print(" in the year ");
      Serial.print(t.year, DEC);
      Serial.println(".");
     
      // Send Day-of-Week and time
      Serial.print("It is the ");
      Serial.print(t.dow, DEC);
      Serial.print(". day of the week (counting monday as the 1th), and it has passed ");
      Serial.print(t.hour, DEC);
      Serial.print(" hour(s), ");
      Serial.print(t.min, DEC);
      Serial.print(" minute(s) and ");
      Serial.print(t.sec, DEC);
      Serial.println(" second(s) since midnight.");

      // Send a divider for readability
      Serial.println("  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -");
     
      // Wait one second before repeating :)
      delay (1000);
    }
     
    Последнее редактирование: 2 мар 2020
  3. Memfis09

    Memfis09 Нерд

    вот как раз с переменной t и не ясно было...а теперь всё получилось )))
    спасибо!