Простая сигнализация Arduino не работает

Используя библиотеку сигналов тревоги, я не заставляю сигнал тревоги работать:

#include <Time.h>
#include <TimeAlarms.h>

void setup() 
{
  Serial.begin(9600); 
  while (!Serial) 
  {
    ;  
  }

  setTime(8,29,0,1,1,10); // set time to 8:29:00am Jan 1 2010
  Alarm.timerRepeat(15, Repeats);
}

void Repeats()
{
  Serial.print("alarmed timer!");
  digitalWrite(10,1);
}

void loop() 
{

}

person Curnelious    schedule 26.11.2014    source источник
comment
Каким образом это не работает? Проводку трижды проверяли? Какую библиотеку сигналов тревоги вы используете? Вы используете физическую сигнализацию?   -  person The Guy with The Hat    schedule 26.11.2014


Ответы (2)


Я полагаю, вы используете эту библиотеку.

Если вы читаете в справке, вы можете увидеть это:

Нормальное использование

Alarm.delay (миллисекунды); Будильники и таймеры — это только проверки и их функции, вызываемые при использовании этой функции задержки. Вы можете передать 0 для минимальной задержки. Эту задержку следует использовать вместо обычной задержки() Arduino для своевременной обработки сигналов тревоги и таймеров.

поэтому для того, чтобы будильники вызывались, вы должны добавить это:

void  loop(){
  Alarm.delay(1000); // wait one second between clock display
}

Если вы предпочитаете проверять тревогу быстрее, вы можете использовать меньшую задержку (например, 100). Вы также можете использовать 0, чтобы функция не блокировалась, но это не обязательно для вашего приложения.

Кстати, я ДУМАЮ (поэтому могу ошибаться), что вызов setTime используется как раз другими функциями, а не таймером. Так что можете опустить. Кроме того, вы пропустили утверждение пин-режима.

В конце... Попробуйте этот код и сообщите нам.

#include <Time.h>
#include <TimeAlarms.h>

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

  pinMode(10, OUTPUT);

  Alarm.timerRepeat(15, Repeats);
}

void Repeats()
{
  Serial.print("alarmed timer!");
  digitalWrite(10,1);
}

void loop() 
{
  Alarm.delay(500);
}
person frarugi87    schedule 26.11.2014

Добавить Alarm.delay(0); таким образом, ваша программа не зависнет, и ваш будильник будет работать...

person Leonardo Gazio    schedule 14.01.2017
comment
Хотя это может быть ценным советом для решения проблемы, хороший ответ также демонстрирует решение. Пожалуйста, EDIT, чтобы предоставить пример кода, чтобы показать, что вы имеете в виду. В качестве альтернативы, рассмотрите возможность написания этого в качестве комментария. - person ρяσѕρєя K; 14.01.2017