Error invalid conversion from 'long unsigned int (*)()' to 'long unsigned int' ARDUINO TACOMETRO RPM

Hola estoy haciendo un medidor de revoluciones empezó con lo típico de medir la cantidad de pulsos por segundo, pero ocupo algo mas preciso así que estoy intentando obtener la diferencia de tiempo entre pulso y pulso pero tengo el siguiente error en esta linea

RPM = round((millis - anterior)/tiempo);

Siendo el error el siguiente:

Arduino:1.8.19 (Windows 10), Tarjeta:"ESP32 PICO-D4, Default, 115200, None"

C:\Users\tatom\OneDrive\Escritorio\basico_anterior\basico_anterior.ino: In function 'void pulsos()':

basico_anterior:18:14: error: invalid conversion from 'long unsigned int (*)()' to 'long unsigned int' [-fpermissive]

 RPM = millis - anterior;

       ~~~~~~~^~~~~~~~~~

exit status 1

invalid conversion from 'long unsigned int (*)()' to 'long unsigned int' [-fpermissive]

Mi código es este:

bool auxPulso = 0;
//definen la cantidad de pulsos por vuelta y el tiempo que le corresponde
unsigned int pulsosvuelta = 1;
unsigned int tiempo = 60000/pulsosvuelta;
long unsigned int anterior;
long unsigned int RPM;


void pulsos() {
detachInterrupt(23); 
if(auxPulso == 0)
{
anterior = millis(); 
auxPulso = 1;
 }
 else
   {
RPM = round((millis - anterior)/tiempo);
anterior = millis();
Serial.println(RPM);
}
 {
  attachInterrupt(23, pulsos,RISING);
 }
}


void setup() {
Serial.begin(115200);
pinMode(23, INPUT_PULLUP);
attachInterrupt(23, pulsos, FALLING); 
RPM=0;
anterior=0;
  Serial.flush(); 
}
void loop() {

}

Hola!
Arruinaste algo, los errores del compilador no se aplican a este código.

El compilador se refiere a la línea:

tal línea no existe en el código publicado

Tu error tanto sea

RPM = round((millis - anterior)/tiempo);

como

RPM = millis - anterior

es que debería decir

RPM = round((millis() - anterior)/tiempo);

o

RPM = millis() - anterior

O sea, referir a la función millis().

1 Like