Scooter eléctrico Sensor de velocidad con Sensor magnético KY-003

¡Hola! ¿Qué tal?
Estoy trabajando en la programación de un scooter eléctrico. Mi problema se encuentra a la hora de utilizar las Clases en Arduino pues soy principiante en esta manera de programar. Sin embargo, varias secciones de mi código utilizando las clases han funcionado perfectamente a la hora de compilar salvo 1 sola que es referente al sensor de velocidad. Cabe destacar que estoy usando un Arduino nano y el sensor esta conectado al pin A4. Les adjunto el código y estaría muy agradecido si alguien puede detectar mi error.

El siguiente código hace referencia al propio .ino (donde invoco a las clases) y supongo que mi duda quedaria resuelta si alguien me pudiera decir que parámetros van en la linea “veloz.sensorvelo(xxxxxx);”

#include "Inicio.h"
#include "Bateria.h"
#include "Velocimetro.h"
#include <Arduino.h>

Bateria niveldebateria;
Inicio arranque;
Velocimetro veloz;

void setup() 
{
  arranque.configura(2,3,4,5,6,7,8,9,10,11,12,13,A0,A1,A2);
  arranque.chequeo(2,3,4,5,6,7,8,9,10,11,12,13,A0,A1,A2);
  niveldebateria.configsensordebateria(A3);
  veloz.configvelo(A4);
}

void loop() 
{
  niveldebateria.graficabat(10, 11, 12, 13, A3);
  veloz.sensorvelo(A4); //Unica linea que me poduce error al compilar
}

El siguiente código hace referencia a la única clase de la que proviene el error (Velocimetro.h) Las demás clases que usé funcionan perfectamente. Adjunto las demás clases que utilicé si sirven de ayuda.

#include <Arduino.h>
class Velocimetro
{
  private:

  int sensorhall=A4;
  int estadosalida;
  int contador=0;
  int estado;
  int distancia=20;
  unsigned long previousMillis = 0;
  const long interval = 1000;
  int t=0;

  public:
  int velocidad;

void configvelo(int sensorhall) 
{
pinMode(sensorhall,INPUT);
}

void sensorvelo(int estado, int sensorhall, int contador, int t, int velocidad, int estadosalida, int distancia,unsigned long currentMillis, const long interval, unsigned long previousMillis) 
{
  estado=!digitalRead(sensorhall);
  
  if(estado==1)
  {
    estadosalida=1;
  }
  
  if((estadosalida==1)&&(estado==0))
  {
    contador++;
    estadosalida=0;
  }
   
    if(contador==0) 
         {
            t=0;
         }

    if(contador==1)
    {
            unsigned long currentMillis = millis();
            if (currentMillis - previousMillis >= interval) 
                  {
                  previousMillis = currentMillis;
                  t=t+1;
                  }
    }
              
    if(contador==2)
    {
            velocidad=(distancia)/(t);
            contador=0;
            t=0;
    }

}
};

Este es el error que me muestra el compilador:

"exit status 1
no matching function for call to 'Velocimetro::sensorvelo(const uint8_t&)'"

Clase del indicador de batería (Funciona bien)

#include <Arduino.h>
class Bateria{
  private:
  int Bateria1= 10;
  int Bateria2= 11;
  int Bateria3= 12;
  int Bateria4= 13;
  int lectura= A3;

  public:
  
  void configsensordebateria(int lectura)
  {
  pinMode(lectura,INPUT);
  }
  void graficabat(int Bateria1,int Bateria2,int Bateria3,int Bateria4, int lectura)
  {
   lectura= map(analogRead(A3), 0, 1023, 0, 100);
   
    if((lectura>0)&&(lectura<=25))
    {
      digitalWrite(Bateria1,HIGH);
      digitalWrite(Bateria2,LOW);
      digitalWrite(Bateria3,LOW);
      digitalWrite(Bateria4,LOW);
    }
    if((lectura>25)&&(lectura<=50))
    {
      digitalWrite(Bateria1,HIGH);
      digitalWrite(Bateria2,HIGH);
      digitalWrite(Bateria3,LOW);
      digitalWrite(Bateria4,LOW);
    }
    if((lectura>50)&&(lectura<=75))
    {
      digitalWrite(Bateria1,HIGH);
      digitalWrite(Bateria2,HIGH);
      digitalWrite(Bateria3,HIGH);
      digitalWrite(Bateria4,LOW);
    }
    if((lectura>75)&&(lectura<=100))
    {
      digitalWrite(Bateria1,HIGH);
      digitalWrite(Bateria2,HIGH);
      digitalWrite(Bateria3,HIGH);
      digitalWrite(Bateria4,HIGH);
    }
    if(lectura==0)
    {
      digitalWrite(Bateria1,LOW);
      digitalWrite(Bateria2,LOW);
      digitalWrite(Bateria3,LOW);
      digitalWrite(Bateria4,LOW);
    }
  }
};

Clase que entra justo al encender el scooter (Funciona bien)

#include <Arduino.h>
class Inicio{
  
  private:
  int PantallaMas1=6;
  int PantallaMas2=7;
  int PantallaMas4=8;
  int PantallaMas8=9;
  int PantallaMenos1=2;
  int PantallaMenos2=3;
  int PantallaMenos4=4;
  int PantallaMenos8=5;
  int Bateria1= 10;
  int Bateria2= 11;
  int Bateria3= 12;
  int Bateria4= 13;
  int KM= A0;
  int STOP= A1;
  int LUZ= A2;

  
  public:
  
 void configura(int PantallaMas1,int PantallaMas2,int PantallaMas4,int PantallaMas8,int PantallaMenos1,int PantallaMenos2,int PantallaMenos4,int PantallaMenos8,int Bateria1,int Bateria2, int Bateria3, int Bateria4,int KM, int STOP, int LUZ)
 {
    pinMode(PantallaMas1, OUTPUT);
    pinMode(PantallaMas2, OUTPUT);
    pinMode(PantallaMas4, OUTPUT);
    pinMode(PantallaMas8, OUTPUT);
    pinMode(PantallaMenos1, OUTPUT);
    pinMode(PantallaMenos2, OUTPUT);
    pinMode(PantallaMenos4, OUTPUT);
    pinMode(PantallaMenos8, OUTPUT);
    pinMode(Bateria1, OUTPUT);
    pinMode(Bateria2, OUTPUT);
    pinMode(Bateria3, OUTPUT);
    pinMode(Bateria4, OUTPUT);
    pinMode(KM, OUTPUT);
    pinMode(STOP, OUTPUT);
    pinMode(LUZ, OUTPUT);


 }
 void chequeo(int PantallaMas1,int PantallaMas2,int PantallaMas4,int PantallaMas8,int PantallaMenos1,int PantallaMenos2,int PantallaMenos4,int PantallaMenos8,int Bateria1,int Bateria2, int Bateria3, int Bateria4, int KM, int STOP, int LUZ)
  {
    digitalWrite(PantallaMas1,LOW);
    digitalWrite(PantallaMas2,LOW);
    digitalWrite(PantallaMas4,LOW);
    digitalWrite(PantallaMas8,HIGH);
    digitalWrite(PantallaMenos1,LOW);
    digitalWrite(PantallaMenos2,LOW);
    digitalWrite(PantallaMenos4,LOW);
    digitalWrite(PantallaMenos8,HIGH);
    digitalWrite(Bateria1,HIGH);
    digitalWrite(Bateria2,HIGH);
    digitalWrite(Bateria3,HIGH);
    digitalWrite(Bateria4,HIGH);
    digitalWrite(KM,HIGH);
    digitalWrite(STOP,HIGH);
    digitalWrite(LUZ,HIGH);
    delay(3000);

    digitalWrite(PantallaMas1,LOW);
    digitalWrite(PantallaMas2,LOW);
    digitalWrite(PantallaMas4,LOW);
    digitalWrite(PantallaMas8,LOW);
    digitalWrite(PantallaMenos1,LOW);
    digitalWrite(PantallaMenos2,LOW);
    digitalWrite(PantallaMenos4,LOW);
    digitalWrite(PantallaMenos8,LOW);
    digitalWrite(Bateria1,LOW);
    digitalWrite(Bateria2,LOW);
    digitalWrite(Bateria3,LOW);
    digitalWrite(Bateria4,LOW);
    digitalWrite(KM,LOW);
    digitalWrite(STOP,LOW);
    digitalWrite(LUZ,LOW);
  }
};

Clase para utilizar 2 display de 7 segmentos con el integrado 74SL48 (Aún no la termino pero no me ha dado errores al compilar lo que tengo hasta ahorita).

#include <Arduino.h>
class Pantalla{
  private:
  
  int Pantalla1=A0;
  int Pantalla2=A1;
  int Pantalla4=A2;
  int Pantalla8=A3;

  public:
  
  void Modo(int Pantalla1, int Pantalla2,int Pantalla4,int Pantalla8){
    pinMode(Pantalla1, OUTPUT);
    pinMode(Pantalla2, OUTPUT);
    pinMode(Pantalla4, OUTPUT);
    pinMode(Pantalla8, OUTPUT);
  }
  void Numero(int Pantalla1, int Pantalla2,int Pantalla4,int Pantalla8){
    //Numero 1
    digitalWrite(Pantalla1, HIGH);
    digitalWrite(Pantalla2, LOW);
    digitalWrite(Pantalla4, LOW);
    digitalWrite(Pantalla8, LOW);
    delay(2000);

    //Numero 2
    digitalWrite(Pantalla1, LOW);
    digitalWrite(Pantalla2, HIGH);
    digitalWrite(Pantalla4, LOW);
    digitalWrite(Pantalla8, LOW);
    delay(2000);

     //Numero 3
    digitalWrite(Pantalla1, HIGH);
    digitalWrite(Pantalla2, HIGH);
    digitalWrite(Pantalla4, LOW);
    digitalWrite(Pantalla8, LOW);
    delay(2000);

     //Numero 4
    digitalWrite(Pantalla1, LOW);
    digitalWrite(Pantalla2, LOW);
    digitalWrite(Pantalla4, HIGH);
    digitalWrite(Pantalla8, LOW);
    delay(2000);
}
};

Agradezco a todos quienes se tomen el tiempo de ayudarme :smiley:

El error no te lo da la clase sino como la invocas, pon el código completo completo o el código donde la invocas, creo que usas un cosntructor incorrecto, con el código completo podría estar seguro

¿El error no se debe a que sensorvelo está definido con 10 parámetros y lo llama con solo uno?
Yo entiendo que el error dice que no hay definida una instancia sensorvelo con solo un parámetro.

Saludos

Si es eso por eso he pedido el código

El código está. El primero es el principal, los otros las librerías

gatul:
El código está. El primero es el principal, los otros las librerías

Asi es! Me alegra que lo aclararas :smiley:

gatul:
¿El error no se debe a que sensorvelo está definido con 10 parámetros y lo llama con solo uno?
Yo entiendo que el error dice que no hay definida una instancia sensorvelo con solo un parámetro.

Saludos

Si! Exactamente ese es el error. Solo que no se que 10 parámetros poner. :frowning:

Si va a trabajar con las variables privadas definelo solo con el primero.
Si tu no sabes para qué la definiste con tantos parámetros, nosotros menos! :grin:


gatul:
Si va a trabajar con las variables privadas definelo solo con el primero.
Si tu no sabes para qué la definiste con tantos parámetros, nosotros menos! :grin:


jajajjajajaj Ya lo resolví. El asunto era que hay variables que no tendrán un valor fijo. Eso me confundió. Pero ya lo resolví. Mil gracias donde quiera que estes :smiley:

De nada!
Desde Buenos Aires, Argentina. :smiley:

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.