Время работы реле
- Войдите на сайт для отправки комментариев
Втр, 07/02/2017 - 02:23
Приветствую Вас, друзья! Сделал примитивный термостат на базе arduino + ML35 + Реле.
Реле включает нагрузку электрокотла. В зависимости от того, сколько времени реле включено и сколько времени оно отключено я узнаю примерные затраты электроэнергии. Сейчас я это делаю вручную, таймером измеряя время работы котла и время простоя и по формуле узнаю киловатты. Хочу это сделать программно.
Мне необходимо при каждом включении и выключении реле записывать в переменную время, в течении которого Pin 7 принимал значение LOW и HIGH. pulseIn() не подходит ввиду ограничения в 3 минуты.
void relay (int tmin, int tmax){ //Управление нагрузкой в зависимости от текущей температуры if ( temp <= tmin ) { digitalWrite(7,HIGH); } if ( temp >= tmax ) { digitalWrite(7,LOW); } }
Если сделать digitalRead(7) то прочитается последнее записанное в D7 состояние, pulseIn() тут вообще не нужно. Это если учёт делается на той же самой ардуине. Если на отдельной то просто читать в цикле, как только поменялось - сохранять значение. Но судя по смыслу вы делаете на той же самой, так что просто digitalRead() оттуда же куда повешено реле, и будет состояние реле.
Мне не нужно знать само состояние пина. Мне нужно знать время, в течении которого пин принимал то или иное состояние и записывать это время в переменную.
Ну проще через millis. вы не уточнили в чем время измерять. микросекундах,милисекундах,секундах,минутах, часах, днях. А это же существенная информация.
Мне не важно в чем измерять. Пусть это будут миллисекунды. Если проще, мне нужно получить значение двух переменных -
пин 7 был HIGH "x" миллисекунд,
пин 7 был LOW "y" миллисекунд
По мере работы реле данные переменных должны соответственно обновляться
Спасибо, разобрался. Кому будет полезно - оставляю тут.