/*
* SensorDevazao.h - Biblioteca de leitura de vazao.
* @Author: Bruno Peixoto;
* @Date: 11/01/2017
*/
#ifndef SensorDeVazao_h
#define SensorDeVazao_h
#include "Arduino.h"
class SensorDeVazao
{
// Atributos da classe
public:
// Funcao transferencia de leitura da temperatura:
// Resolução de escrita: 10 bits (0 ~ 1023 números)
// Intervalo de conversão: 0~5 V
// Relação de temperatura e tensao: 10 mV/oC
// i.e. G(s) = KT = (5/1023)/0.01
const double FuncaoDeTransferencia = 0.042;
// Atributos de configuração
public:
int PinoDeEntrada; // Numero do pino de leitura
long IntervaloDeAmostragem; // Intervalo de amostragem
// Atributos de estado
public:
unsigned long MillisAnterior; // Instante anterior de leitura
double VazaoDeLeitura; // Tensao lida pelo sensor
static SensorDeVazao* SensorHandle; // Rotina-cola para garantir a vantagem de classes e
// de interrupts
volatile int ContadorDePulsos; // Contador de pulsos para calculo da vazao
// Construtor - cria um Sensor de temperatura
// e inicializa os atributos "variável" e "estado"
SensorDeVazao();
SensorDeVazao(int pino, long amostragem);
// Destrutor - destroe a instancia do objeto criado
~SensorDeVazao();
// Set atributos:
void SetPinoDeEntrada(int pino);
void SetIntervaloDeAmostragem(long amostragem);
void SetMillisAnterior(long tempo);
void SetTensaoDeVazao(double Vazao);
// Get atributos:
int GetPinoDeEntrada();
long GetIntervaloDeAmostragem();
long GetMillisAnterior();
double GetVazaoDeLeitura();
double GetFuncaoDeTransferencia();
// Funcao chamada pelo interrupt
void ContaPulsos();
// Contador de pulsos static
static void ContaPulsosStatic();
// Impressao de temperatura obtida
void Imprimir();
// Faz a leitura no instante no qual a funcao e' chamada
void Ler();
// Atualiza os valores de tensao quando o intervalo de tempo e'
// ultrapassado
boolean Atualizar();
// Zera os valores de tensao
void Resetar();
};
#endif