Prezados,
Queria uma um ajuda pois não consigo fazer o leitura do fluxo do codigo abaixo.
#include <SimpleModbusSlave.h>
enum
{
VAZAO_VAL,
HOLDING_REGS_SIZE
};
unsigned int holdingRegs[HOLDING_REGS_SIZE];
float fluxo = 0;
const int INTERRUPCAO_SENSOR = 0;
const int PINO_SENSOR = 2;
unsigned long contador = 0;
const float FATOR_CALIBRACAO = 4.5;
unsigned long tempo_antes = 0;
void setup() {
modbus_configure(&Serial, 9600, SERIAL_8N1, 1, 2, HOLDING_REGS_SIZE, holdingRegs);
modbus_update_comms(9600, SERIAL_8N1, 1);
pinMode(PINO_SENSOR, INPUT_PULLUP);
pinMode(fluxo, OUTPUT);
}
void loop() {
modbus_update();
analogWrite(fluxo, holdingRegs[VAZAO_VAL]);
if((millis() - tempo_antes) > 1000){
detachInterrupt(INTERRUPCAO_SENSOR);
fluxo = ((1000.0 / (millis() - tempo_antes)) * contador) / FATOR_CALIBRACAO;
contador = 0;
tempo_antes = millis();
attachInterrupt(INTERRUPCAO_SENSOR, contador_pulso, FALLING);
}
}
void contador_pulso() {
contador++;
}