millis()

Тема в разделе "Arduino & Shields", создана пользователем Lagvin, 15 апр 2015.

  1. Lagvin

    Lagvin Нерд

    Приветствую.
    Столкнулся с проблемой, которую не могу решить.
    В ВИКах нашел тестер для батареек, и хочу использовать в своем проекте.
    И здесь засада по питанию.
    От 5В последовательно к минусу два резистора по 10кОм, следовательно ток будет 0,00025А.
    Это потребление не критичное, но в моем проекте это лишняя утечка.
    В разрыв по питанию хочу поставить транзистор и вот вопрос:
    Как написать скетч чтобы через каждых 5 минут вкючался , допустим PIN 2 (управление транзистором), а через три секунды после включения транзистора происходило считывание PIN A0 в течении 5 секунд. Потом все выключилось и ждем следующих 5 минут.
    Начинал с этого:

    currentTime = millis(); // считываем время, прошедшее с момента запуска программы
    if(currentTime >= (loopTime + 300000)){ // сравниваем текущий таймер с переменной loopTime + 5 минут
    float voltage = analogRead(A0) / 1024.0 * 10.0;
    if (voltage < 2.8)
    voltage += 0,7; //0,7 это транзистор
    }

    loopTime = currentTime;
     
  2. X-Dron

    X-Dron Гик

    Знаю простое решение на 2-х таймерах, но времени нет оформить. Подождете до завтрашнего вечера?
     
  3. Lagvin

    Lagvin Нерд

    отлично!!! Жду.
     
  4. X-Dron

    X-Dron Гик

    На соседнем форуме помогал решить задачку, и понял, что можно применить это же решение.
    Если в программе не используются Delay по пол-секунды и более, то будет работать.
    Код (Text):
    #define RelayPin 2
    long Period =300000; //период 5мин

    void setup(){
      pinMode(RelayPin, OUTPUT);
    }
     
    void loop(){
      long CurrntMsInPeriod = millis()%Period;
      digitalWrite(RelayPin, CurrntMsInPeriod < 5000); //5c- время включения реле с начала цикла.
      if ( CurrntMsInPeriod >= 3000 && CurrntMsInPeriod < 5000){ //2c- время работы с 3 по 5-ю секунду.
        float voltage = float(analogRead(A0))/102.4;
      }
    }
     
    Lagvin нравится это.
  5. Lagvin

    Lagvin Нерд

    Спасибо, Все работает собиру полную схему, попробую.