Таймеры счётчики микроконтроллеров AVR

Тема в разделе "Arduino & Shields", создана пользователем MenKost, 5 фев 2017.

  1. MenKost

    MenKost Нуб

    Поясните как сделать на ардуино
     
  2. rkit

    rkit Гуру

  3. MenKost

    MenKost Нуб

    У меня такая цель. У меня есть два реле. Одно должно включать насос каждые пять минут и работать 30 сек. Второе реле должно включать лампу которая будет работать 14 часов, а потом 10 часов не работат и так по кругу
     
  4. mcureenab

    mcureenab Гуру

    Тут скорее модуль RTC нужно использовать. Периодически читать время и смотреть что должно быть включено или выключено.
     
  5. qwone

    qwone Гик

    достаточно millis();
     
  6. mcureenab

    mcureenab Гуру

    Перебои питания нарушат ритм.
     
  7. qwone

    qwone Гик

    Так пусть повесит акуммулятор на Ардуину. А перебои в питании не нарушат работу насоса и лампы.
    Если кому-то интересен мой вариант вот здесь лежит https://yadi.sk/d/b6WQiWac3CzJSK
    Ну и головной файл
    Код (C++):
    /* to_MenKost.ino https://yadi.sk/d/b6WQiWac3CzJSK
      #1 реле насоса ->2 (relay1_pin)
      #2 реле лампы 2->3 (relay2_pin)
    */

    //  #1 реле насоса
    const byte relay1_pin = 2;
    #include "Cl_team_delay.h"
    Cl_team_delay Team_1;
    void Team_1_ON() {
      digitalWrite(relay1_pin, 1);
    }
    void Team_1_OFF() {
      digitalWrite(relay1_pin, 0);
    }
    //  #2 реле лампы
    const byte relay2_pin = 3;

    Cl_team_delay Team_2;
    void Team_2_ON() {
      digitalWrite(relay2_pin, 1);
    }
    void Team_2_OFF() {
      digitalWrite(relay2_pin, 0);
    }

    void setup() {
      pinMode(relay1_pin, OUTPUT);
      Team_1.time_ON = 1000;//задержка вкл 1000 миллисек=1 сек
      Team_1.time_OFF = 1000;//задержка выкл 300 миллисек
      Team_1.setup(& Team_1_ON , & Team_1_OFF);
      //  #2 реле 2
      pinMode(relay2_pin, OUTPUT);
      Team_2.time_ON = 1500;//задержка вкл 1500 миллисек=1,5 сек
      Team_2.time_OFF = 1500;//задержка выкл 1500 миллисек=1,5 сек
      Team_2.setup(& Team_2_ON , & Team_2_OFF);
    }
    void loop() {
      //  #1 реле 1
      Team_1.loop(& Team_1_ON , & Team_1_OFF);
      //  #2 реле 2
      Team_2.loop(& Team_2_ON , & Team_2_OFF);
    }
     
    Последнее редактирование: 5 фев 2017