Датчик расхода жидкости+сервопривод

Нет ответов
akhmed
Offline
Зарегистрирован: 04.12.2017

Здравствуйте! Подскажите, пожалуйста, в чем может быть ошибка. Датчик и сервопривод питаются от отдельного источника. Снимаем показания с датчика и в зависимости от этого значения подаем команду поворачивать сервопривод на тот или иной угол. Монитор показывает, что действительно при достижении значения показания датчика сверх 500 л/ч, с сервопривода снимается угол 180 град. Но это на мониторе к сожалению. По факту сервопривод не поворачивает. Подскажите, что не так мне кажется с кодом, так как только разбираюсь и в первый раз работаю с прерыванием. Заранее спасибо!

#include <Servo.h>
Servo servok;
volatile int flow_freq;
unsigned int l_hour;
unsigned int deg;
unsigned char flowmeter=2;
unsigned char servpin=9;
unsigned long currentTime;
unsigned long cloopTime;

void flow ()
{
  flow_freq++;
}

void setup ()
{
  pinMode(flowmeter, INPUT);
  Serial.begin(9600);
  attachInterrupt(0, flow, RISING);
  sei();
  currentTime = millis();
  cloopTime=currentTime;

servok.attach(servpin);
}

void loop ()
{
  currentTime = millis();
  if (currentTime >= (cloopTime + 1000))
  {
    cloopTime = currentTime;
    l_hour = flow_freq*60/7.5;
    flow_freq = 0;
    if (l_hour > 500)
    {
      deg = 180;
    }
    else
    {
      deg = 0;
    }
    servok.write(deg);
     Serial.print(cloopTime/1000, DEC);
     Serial.print(" sec      ");
     Serial.print(l_hour, DEC);
     Serial.print(" L/hour      ");
     Serial.print(servok.read(), DEC);
     Serial.println(" deg      ");
      }
}