Помогите с таймером

andre13455
Offline
Зарегистрирован: 26.08.2016

Доброго времени суток всем!

Помогите плиз с кодом.

Нужно: Включить нагрузку (2 реле) в 06:00 и выключить в 24:00, ежедневно.

Где-то ошибка, не пойму где. Сделал на базе примера, аппаратная платформа Teensy 3. Изначально было с использованием функции Alarm, работало, но отказался из-за чувствительности к пропаданию притания. Переделал без нее, и где-то накосячил. Спасибо. Привожу полный код.


#include <TimeLib.h>
#include <TimeAlarms.h>

AlarmId id;

int led = 13;
int rel1 = 27;
int rel2 = 28;

void setup() {
  pinMode(led, OUTPUT);
  pinMode(rel1, OUTPUT);
  pinMode(rel2, OUTPUT);
  
  // set the Time library to use Teensy 3.0's RTC to keep time
  setSyncProvider(getTeensy3Time);
  
  setTime(18,10,0,26,8,16); // set time to Saturday 8:29:00am Jan 1 2011
  Teensy3Clock.set(now()); // set system time into RTC

  Serial.begin(115200);
  //while (!Serial);  // Wait for Arduino Serial Monitor to open
  delay(100);
  if (timeStatus()!= timeSet) {
    Serial.println("Unable to sync with the RTC");
  } else {
    Serial.println("RTC has set the system time");
    digitalWrite(led, HIGH);
    delay(40);
    digitalWrite(led, LOW);
  }
  
}

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

time_t getTeensy3Time()
{
  return Teensy3Clock.get();
}

{
  if (hour(t)>=6 && hour(t)<=23)
digitalWrite(Rel1, HIGH); //реле включено
digitalWrite(Rel2, HIGH);
  } 
//  delay(3000); //задержка на 3 секунды
  else { //иначе
  digitalWrite(Rel1, LOW); //реле выключено
  digitalWrite(Rel2, LOW);
  }
}

void digitalClockDisplay() {
  // digital clock display of the time
  Serial.print(" -= ");
  Serial.print(hour());
  printDigits(minute());
  printDigits(second());
  Serial.print(" ");
  Serial.print(day());
  Serial.print(" ");
  Serial.print(month());
  Serial.print(" ");
  Serial.print(year());
  Serial.print(" =- "); 
  Serial.println();
}

void printDigits(int digits) {
  Serial.print(":");
  if (digits < 10)
    Serial.print('0');
  Serial.print(digits);
}

 

Araris
Offline
Зарегистрирован: 09.11.2012

Строки 45-55 не являются частью ни одной из функций скетча.

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

А ещё пропущена фигурная скобка в конце строки 46

andre13455
Offline
Зарегистрирован: 26.08.2016

Как правильно оформить строки 45-55? Прошу прощения за ламерский вопрос, только начал знаокмство с платформой

Araris
Offline
Зарегистрирован: 09.11.2012

Простите, но мне кажется, что знакомство ещё не состоялось.

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

Short Circuit
Short Circuit аватар
Offline
Зарегистрирован: 17.05.2015

andre13455 пишет:
Где-то ошибка, не пойму где. 

это как пытаться писать стихи делая по две ошибки в каждом слове... и просить помощи.

Тоесть сначала орфография:

для начала - скобки.. на каждую открытую скобку - должна быть закрытая..

включите в ИДЕ сообщения об ошибках и оно вам будет подсказывать что сделали не так (в настройках включается)

andre13455
Offline
Зарегистрирован: 26.08.2016

Спасибо, попробую)