Criei um programa com sensores de fluxo onde utilizarei 4 do mesmo no futuro, segui os passos de um site para como fazer o sensor funcionar corretamente e estava quando eu usei somente um sensor. Agora que vou usar mais separei a programação de cada sensor em abas diferentes porem tenho o erro:
'void sensor1::incpulso1()' cannot be overloaded
Código Principal:
#include "sensor1.h"
int PIN_RELE1 = 10;
int PIN_FLUXO1 = 19;
int PIN_BOTAO1 = 5;
int PIN_BOTAO5 = 7;
int LED = 12;
sensor1 Sensor1 (PIN_BOTAO1, PIN_BOTAO5, PIN_FLUXO1, PIN_RELE1);
void setup () {
pinMode(LED, OUTPUT);
Serial.println("Nivel do Reservatorio");
Serial.println();
}
Código Sensor1:
#ifndef _SENSOR1_H_
#define _SENSOR1_H_
class sensor1 {
double vazaoSensor1;
float acumuladoSensor1 = 0;
volatile int contador1;
float state = 0;
int _botao1Pin;
int pressed1 = 0;
int _botao5Pin;
int pressed5 = 0;
int _fluxo1Pin;
int _rele1Pin;
void incpulso1 () ;
public:
sensor1 (int rele1Pin, int fluxo1Pin, int botao1Pin, int botao5Pin){
_rele1Pin = rele1Pin;
_fluxo1Pin = fluxo1Pin;
_botao1Pin = botao1Pin;
_botao5Pin = botao5Pin;
pinMode(_rele1Pin, OUTPUT);
pinMode(_fluxo1Pin, INPUT);
pinMode(_botao1Pin, INPUT_PULLUP);
pinMode(_botao5Pin, INPUT_PULLUP);
}
private:
attachInterrupt(digitalPinToInterrupt(_fluxo1Pin), incpulso1, RISING);
void loop (){
contador1 = 0;
sei();
delay(500);
cli();
vazaoSensor1 = (contador1 / 5.5);
acumuladoSensor1 = (acumuladoSensor1 + (vazaoSensor1 / 60));
pressed1 = digitalRead(_botao1Pin);
pressed5 = digitalRead(_botao5Pin);
if ((pressed1 == LOW) && (state == 0)) {
state = 1;
pinMode(_rele1Pin, HIGH);
}
if ((pressed5 == LOW) && (state == 0)) {
state = 5;
pinMode(_rele1Pin, HIGH);
}
if (state == 1){
if (acumuladoSensor1 >= 0.95){
digitalWrite(_rele1Pin, LOW);
}
}
if (state == 5){
if (acumuladoSensor1 >= 0.95){
digitalWrite(_rele1Pin, LOW);
}
}
}
void incpulso1() {
contador1++;
}
};
#endif // _SENSOR1_H_
No caso o meu plano seria repetir essa aba de programa do Sensor 1 para 2, 3 e 4 também.
ja fiz alguns testes mudando attatchInterrupt de lugar, porém nada.
attachInterrupt(digitalPinToInterrupt(_fluxo1Pin), incpulso1, RISING);
de antemão, obriggado a todos que me ajudarem