#1 Re: Програмування Arduino » Как подключить 2 реле и задать им разное время включения? » 2019-09-14 15:44:07

ard125 пише:

Вам нужно было раз в сутки и раз в 30 минут. Откуда взялось 10 ч и 5 минут? Для начала объясните подробно и точно что нужно делать. Ну и посмотрите примеры и описание библиотеки https://playground.arduino.cc/Code/SimpleTimer/

Виноват. Подумал, что тут умеют читать мысли.
Надо чтобы раз в сутки одно реле включалось на 10 часов, остальное время оно выключено. А второе выключалось на 5 минут в течение каждых 30 минут, а остальные 25 минут оно включено.

#2 Re: Програмування Arduino » Как подключить 2 реле и задать им разное время включения? » 2019-09-14 12:58:54

ard125 пише:

Гайвер? ФИ!!!! Уж лучше на ардуиновской библиотеке

#include <SimpleTimer.h>

#define RELAY1 3
#define RELAY2 5
#define PERIOD_1 86400000    // период первой задачи
#define PERIOD_2 1800000     // период второй задачи


SimpleTimer timer1;
SimpleTimer timer2;

void rele_1() {
  digitalWrite(RELAY1, !digitalRead(RELAY1));
}

void rele_2() {
  digitalWrite(RELAY2, !digitalRead(RELAY2));
}

void setup() {

  pinMode(RELAY1, OUTPUT);
  pinMode(RELAY2, OUTPUT);

//  digitalWrite(RELAY1,HIGH);         // если нужно задаем
//  digitalWrite(RELAY2,HIGH);         // начальное состояние реле при старте
  
  timer1.setInterval(PERIOD_1, rele_1);
  timer2.setInterval(PERIOD_2, rele_2);
}

void loop() {
  timer1.run();
  timer2.run();
}

Хорошо. А как она мне отключит реле в течение суток на 10 часов? А для второго реле включит на 5 минут?

#3 Re: Програмування Arduino » Как подключить 2 реле и задать им разное время включения? » 2019-09-14 12:41:52

То, что вы вырвали http://forum.arduino.ua/viewtopic.php?pid=29162#p29162 (пост #8) может в исходной программе и работает.
Но в том виде который вы привели это просто набор символов.

У вас получилось из этого решить свою задачу ?

Да, всё чётко работает. Даже если точность +- минута, меня всё-равно устраивает

#5 Re: Програмування Arduino » Как подключить 2 реле и задать им разное время включения? » 2019-09-12 21:04:09

Всем спасибо за ответы!
Нашёл решение у AlexGyver. Слепил из двух кусочков. Проверял на секундах - вроде работает, но только со второго периода. Вот если кому интересно.
#define RELAY1 3
#define RELAY2 5
#define PERIOD_1 86400000    // период первой задачи
#define PERIOD_2 1800000   // период второй задачи

unsigned long timer_1, timer_2, timer_3;
void setup() {
pinMode(RELAY1, OUTPUT);
pinMode(RELAY2, OUTPUT);
}
  if (millis() - timer_1 > PERIOD_1) {    // условие таймера
    timer_1 = millis();                   // сброс таймера
    uint32_t now = millis();
while (millis () - now < 36000000) {
digitalWrite(RELAY1, HIGH)
}
digitalWrite(RELAY1, LOW)
  }
  if (millis() - timer_2 > PERIOD_2) {
    timer_2 = millis();
uint32_t now2 = millis();
while (millis () - now2 < 300000) {
digitalWrite(RELAY2, HIGH)
}
digitalWrite(RELAY2, LOW)
  }
}

#8 Програмування Arduino » Как подключить 2 реле и задать им разное время включения? » 2019-09-12 09:46:57

Alexs
відповідей: 55

У меня к одной ардуине подключено 2 реле. Нужно, чтобы одно включалось и выключалось 1 раз в сутки, а другое - каждые пол часа. Но время просто суммируется и оба реле включаются и выключаются раз в сутки + полчаса. Есть возможность разделить?
#define PIN_RELAY1 5
#define PIN_RELAY2 3

void setup()
{
  pinMode(PIN_RELAY1, OUTPUT);
  digitalWrite(PIN_RELAY1, HIGH);
  pinMode(PIN_RELAY2, OUTPUT);
  digitalWrite(PIN_RELAY2, HIGH);
}
void loop()
{
  digitalWrite(PIN_RELAY1, LOW);
  delay(43200000);
  digitalWrite(PIN_RELAY1, HIGH);
  delay(43200000);
  digitalWrite(PIN_RELAY2, LOW);
  delay(300000);
  digitalWrite(PIN_RELAY2, HIGH);
  delay(1800000);
}

Підвал форуму