¡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