En este caso solo quiero probar la parte de detección de pulsos para un tacómetro donde al momento de verificar el código da el siguiente error:
C:\Users\IDROID\Desktop\CODIGO\CODIGO.ino: In function 'void loop()':
C:\Users\IDROID\Desktop\CODIGO\CODIGO.ino:32:10: warning: integer overflow in expression [-Woverflow]
RPM = (60*1000/(pulsosvuelta))/(millis()- tiempo)*contador;
^~~
!!! cabe resaltar que solo da el error en el compilador de arduino ya que este mismo código lo probé en tinkercad con un circuito y funciono ya hay un post parecido en ingles pero realmente creo que hay no esta la solución lo adjunto por si alguien cree q me perdí la respuesta en ese post:
Integer overflow error help - Using Arduino / Programming Questions - Arduino Forum
volatile byte contador=0;
unsigned int RPM;
unsigned long tiempo;
int estado=0;
unsigned int pulsosvuelta = 1;
/*#define hold 3
#define detener 4
bool boton1 = false;
bool boton2 = false;*/
void funcioncontador() {
contador++;
}
void setup() {
Serial.begin(9600);
Serial.println("Start");
attachInterrupt(0, funcioncontador, FALLING); // llamar funcion de contador 0=pin2
contador=0;
RPM=0;
tiempo=0;
}
void loop() {
switch(estado){
case 0:
delay(1000);
detachInterrupt(0);
RPM = (60*1000/(pulsosvuelta))/(millis()- tiempo)*contador;
tiempo = millis();
contador=0;
Serial.print("RPM:");
Serial.println(RPM);
attachInterrupt(0, funcioncontador,FALLING);
}
}
/*
if (digitalRead(3) == LOW && boton1 == false) {
estado=1;
boton1 = true;}
if (digitalRead(3) == HIGH && boton1 == true) {
boton1 = false; }
if (digitalRead(4) == LOW && boton2 == false) {
estado=2;
boton2 = true;}
if (digitalRead(4) == HIGH && boton2 == true) {
boton2 = false; }
break;
case 1:
Serial.println("HOLD:");
if (digitalRead(3) == LOW && boton1 == false) {
estado=0;
boton1 = true;}
if (digitalRead(3) == HIGH && boton1 == true) {
boton1 = false; }
if (digitalRead(4) == LOW && boton2 == false) {
estado=2;
boton2 = true;}
if (digitalRead(4) == HIGH && boton2 == true) {
boton2 = false;}
break;
case 2:
if (digitalRead(3) == LOW && boton1 == false) {
estado=1;
boton1 = true;}
if (digitalRead(3) == HIGH && boton1 == true) {
boton1 = false;}
if (digitalRead(4) == LOW && boton2 == false) {
estado=0;
boton2 = true;}
if (digitalRead(4) == HIGH && boton2 == true) {
boton2 = false; }
break;
}
}
*/