Датчик расхода жидкости+сервопривод
- Войдите на сайт для отправки комментариев
Здравствуйте! Подскажите, пожалуйста, в чем может быть ошибка. Датчик и сервопривод питаются от отдельного источника. Снимаем показания с датчика и в зависимости от этого значения подаем команду поворачивать сервопривод на тот или иной угол. Монитор показывает, что действительно при достижении значения показания датчика сверх 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 ");
}
}