Как получить код для ответа на определенное время от DS3231 RTC?

Я пытаюсь сделать программу, которая работает, когда она доходит до пяти часов дня, так что 17:00:00.

Я использую эту библиотеку DS3231, но не могу понять, как заставить ее отправить "Woooopp" на последовательный монитор в указанное время.

На DS3231 штифт с надписью SCL подключен к A5 на Arduino, а штифт с надписью SDA подключен к A4 на Arduino.

SCL -> A5 ПДД -> А4 >

Мой код:

#include <DS3231.h>

// Инициализация DS3231 с помощью аппаратного интерфейса
DS3231  rtc (SDA, SCL);

void setup() {
  // Настройка последовательного подключения
  Serial.begin(115200);
  // Раскомментируйте следующую строку, если вы используете Arduino Leonardo
  //while (!Serial) {}

  // Инициализация объекта rtc
  rtc.begin();

  // Следующие строки могут быть раскомментированы для установки даты и времени
  // rtc.setDOW(SATURDAY);     // Set Day-of-Week to SUNDAY
  // rtc.setTime(19, 48, 50);     // Set the time to 12:00:00 (24hr format)
  // rtc.setDate(3, 6, 2017);   // Set the date to January 1st, 2014
}

void loop() {
  // Отправить День недели
  Serial.print(rtc.getDOWStr());
  Serial.print(" ");

  // Дата отправки
  Serial.print(rtc.getDateStr());
  Serial.print(" -- ");

  // Время отправки
  Serial.println(rtc.getTimeStr());

  // Подождите одну секунду, прежде чем повторить :)

  if (rtc.getTimeStr() == "19:58:12") {
    Serial.println("Woooopp");
  }
  delay (1000);
}

Никаких ошибок не выбрасывается, однако код просто не работает.

Любая помощь будет очень признательна!

, 👍1

Обсуждение

Какую библиотеку RTC вы используете ? Кажется, вот это: http://www.rinkydinkelectronics.com/library.php?id=73, @Jot

Да, я использовал его. Извините, я забыл связать его, я буду редактировать вопрос сейчас., @Wisaacj

Попробуйте использовать более короткую задержку. Все остальное также требует времени для запуска, так что вы проверяете чуть меньше одного раза в секунду. Так что определенные секунды будут пропущены., @Gerben

Спасибо за ваш ответ, я попробовал это сделать, и это сработало вместе со мной, также заранее объявив время в переменной, а затем сравнив его. Хорошего вам дня!, @Wisaacj

Когда вы смотрите на последовательный вывод, совпадает ли строка, которую вы получаете от getTimeStr, с тем, что вы ожидаете?, @Delta_G

Вы можете использовать встроенную функцию сигнализации DS3231 RTC для включения Arduino Uno., @Mikael Patel

@Delta_G Мне удалось выяснить, что проблема заключается в том, что я не объявляю переменную для хранения текущего времени. До этого я непосредственно сравнивал выходные данные функции с желаемым временем. Но все же спасибо вам за помощь!, @Wisaacj

@MikaelPatel Спасибо, я постараюсь использовать это также, чтобы увидеть, будет ли это работать более эффективно, чем метод, который я нашел в конце концов., @Wisaacj


1 ответ


-1

Как получить код для ответа в определенное время от DS3231 RTC?

проще всего настроить сигнализацию в rtc.

в качестве альтернативы продолжайте читать rtc до тех пор, пока не пройдет желаемое время. не очень эффективно.

,