Ajuda com arduino

Como fazer pra meu sensor de fluxo ligar um motor dc no Arduíno? Sou leigo nesse assunto, já vi diversos artigos e não consigo progredir com o projeto... Sei que o sensor a cada pulso conta 2.25 mililitros... minha duvida é se com uma condição if tem como ligar o motor?
Ex: vazao = pulso * 0.00225;
if (vazao == 1)
{
liga motor
delay(3000);
desliga motor
}

float vazao = pulso * 0.00225;
      if (vazao > 50)
      {
       digitalWrite(pino_motor, HIGH);
       delay(3000);
       digitalWrite(pino_motor, LOW);
       }

Queres ligar o motor só por 3 segundos???

bubulindo:

float vazao = pulso * 0.00225;

if (vazao > 50)
     {
      digitalWrite(pino_motor, HIGH);
      delay(3000);
      digitalWrite(pino_motor, LOW);
      }




Queres ligar o motor só por 3 segundos???

Fiz algumas mudanças e incrementei algumas coisa... estou esperando o material chegar (sensor de nível, motores, etc) gostaria de saber se esta correto ou tem erros no código.

int Pulso; //Variável para a quantidade de pulsos
int j = 0; //Variável para contagem
float vazaoagua; //Variável para armazenar o valor em L
int pinAgua = 11; //Variável para o nivel
int pinBomba = 12;  //Variável para a bomba
int pinRegistro = 3; //Variável para o registro

void setup()
{
  Serial.begin(9600);
  pinMode(2, INPUT);
  attachInterrupt(0, incrpulso, RISING); //Configura a porta digital 2
  pinMode(pinAgua, INPUT);
  pinMode(pinBomba, OUTPUT);
  pinMode(pinRegistro, OUTPUT);
}


void loop ()
{
  pulso = 0; //Começa do 0 variável para contar os giros das pás internas

  vazao = pulso * 0.00225; //converto os pulsos em L
  if (vazao > 1)  //fecha o registro
  {
    digitalWrite(pinRegistro, HIGH);
    delay(500);
    digitalWrite(pinRegistro, LOW);
  }
  
  if (digitalRead(pinAgua) == HIGH) {
    digitalWrite(pinBomba, LOW);
  } 
  else {
    digitalWrite(pinBomba, HIGH);
  }

}

void incrpulso ()
{
  pulso++;
}

Na minha opinião tens um erro ao inicializares a variável pulso dentro do loop.

Depois o teu cálculo não está a calcular vazão... está a calcular quantidade de água. Vazão é calculada dividindo a quantidade de água por uma unidade de tempo.

unsigned long pulso = 0; //Começa do 0 variável para contar os giros das pás internas
unsigned long tempoAnterior = 0; 

void loop (){
  
  if (millis() - tempoAnterior >= 60000) { //litros por minuto
     vazao = pulso * 0.00225; //converto os pulsos em L 
     tempoAnterior = millis();
     }
  
  if (vazao > 1)  //fecha o registro
  {
    digitalWrite(pinRegistro, HIGH);
    delay(500);
    digitalWrite(pinRegistro, LOW);
  }
  
  if (digitalRead(pinAgua) == HIGH) {
    digitalWrite(pinBomba, LOW);
  }
  else {
    digitalWrite(pinBomba, HIGH);
  }

}

Assim de minuto a minuto recebes a vazão de água em litros/minuto. Podes aumentar a frequência a que o valor é calculado, mas terás de corrigir o cálculo. Por exemplo, podes calcular o valor de 30 em 30 segundos, mas tens de multiplicar a variável vazao por 2 para continuares com litros por minuto.

Me desculpe, quero saber a quantidade de água que passara pelo sensor, assim quando a quantidade X de passar por ele acionar a um motor que funcionara como registro. Infelizmente já pesquisei em varias fontes, mas não estou tendo capacidade suficiente de programar isso :frowning:

Ligas o sensor a um pino que use interrupções (como o D2 e D3).

Configuras a interrupção nesse pino para quando o sinal passar de zero para um aumentar uma variável do tipo unsigned long.

A quantidade que passou pelo sensor vai ser a variável que conta os pulsos vezes 2.25 mililitros.

Outra maneira é na tua interrupção adicionares 2.25 a uma variável do tipo float.